|
import inflect |
|
def summarize_predictions_natural_language(predictions): |
|
summary = {} |
|
p = inflect.engine() |
|
|
|
for prediction in predictions: |
|
label = prediction['label'] |
|
if label in summary: |
|
summary[label] += 1 |
|
else: |
|
summary[label] = 1 |
|
|
|
result_string = "In this image, there are " |
|
for i, (label, count) in enumerate(summary.items()): |
|
count_string = p.number_to_words(count) |
|
result_string += f"{count_string} {label}" |
|
if count > 1: |
|
result_string += "s" |
|
|
|
result_string += " " |
|
|
|
if i == len(summary) - 2: |
|
result_string += "and " |
|
|
|
|
|
result_string = result_string.rstrip(', ') + "." |
|
|
|
return result_string |
|
|