def nlp_analyze_entities()

in backend-apis/app/utils/utils_cloud_nlp.py [0:0]


def nlp_analyze_entities(input_text: str) -> list:
    """
    Analyzes Entities in a string.

    Args:
      text_content: The text content to analyze
    """
    # Available types: PLAIN_TEXT, HTML
    document_type_in_plain_text = language_v2.Document.Type.PLAIN_TEXT

    language_code = "en"
    document = {
        "content": input_text,
        "type_": document_type_in_plain_text,
        "language_code": language_code,
    }

    encoding_type = language_v2.EncodingType.UTF8
    response = client.analyze_entities(
        request={"document": document, "encoding_type": encoding_type}
    )

    results = []
    for entity in response.entities:
        result = {}
        result["name"] = entity.name
        result["entity_type"] = language_v2.Entity.Type(entity.type_).name

        result["metadata"] = []
        for metadata_name, metadata_value in entity.metadata.items():
            result["metadata"].append({metadata_name: metadata_value})

        result["mentions"] = []
        for mention in entity.mentions:
            result["mentions"].append(
                {
                    "text": mention.text.content,
                    "type": language_v2.EntityMention.Type(mention.type_).name,
                    "probability": mention.probability,
                }
            )

        results.append(result)

    return results