Megosztás a következőn keresztül:


Azure Text Analytics Python-ügyfélkódtár – 5.3.0-s verzió

Az Azure Cognitive Service for Language egy felhőalapú szolgáltatás, amely természetes nyelvi feldolgozási (NLP) funkciókat biztosít a szövegek megértéséhez és elemzéséhez, és a következő fő funkciókat tartalmazza:

  • Hangulatelemzés
  • Megnevezett entitások felismerése
  • Nyelvfelismerés
  • Kulcskifejezések kinyerése
  • Entitáskapcsolás
  • Több elemzés
  • Személyazonosításra alkalmas adatok (PII) észlelése
  • Egészségügyi Text Analytics
  • Egyéni elnevezett entitások felismerése
  • Egyéni szövegbesorolás
  • Kivonatoló szöveg összegzése
  • Absztraktív szövegösszesítés

Forráskód | Csomag (PyPI) | Csomag (Conda) | API-referenciadokumentáció | Termékdokumentáció | Minták

Első lépések

Előfeltételek

Cognitive Services- vagy Language Service-erőforrás létrehozása

A Nyelvi szolgáltatás támogatja a többszolgáltatásos és az egyszolgáltatásos hozzáférést is. Hozzon létre egy Cognitive Services-erőforrást, ha több Cognitive Services-szolgáltatást szeretne elérni egyetlen végpont/kulcs alatt. Csak a Nyelvi szolgáltatáshoz való hozzáféréshez hozzon létre egy Language Service-erőforrást. Az erőforrást az Azure Portalon vagy az Azure CLI-vel hozhatja létre a jelen dokumentum lépéseit követve.

Az ügyfélkódtárat használó szolgáltatással való interakció egy ügyféllel kezdődik. Ügyfélobjektum létrehozásához szüksége lesz a Cognitive Services vagy a Language szolgáltatásra endpoint az erőforráshoz, valamint egy credential olyanra, amely hozzáférést biztosít:

from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

credential = AzureKeyCredential("<api_key>")
text_analytics_client = TextAnalyticsClient(endpoint="https://<resource-name>.cognitiveservices.azure.com/", credential=credential)

Vegye figyelembe, hogy egyes Cognitive Services-erőforrások esetében a végpont eltérhet a fenti kódrészlettől. Például: https://<region>.api.cognitive.microsoft.com/.

A csomag telepítése

Telepítse a Pythonhoz készült Azure Text Analytics ügyfélkódtárat a pip használatával:

pip install azure-ai-textanalytics
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient
endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint, AzureKeyCredential(key))

Vegye figyelembe, hogy az 5.2.X újabb és újabb az Azure Cognitive Service for Language API-kat célozza meg. Ezek az API-k tartalmazzák a Text Analytics ügyfélkódtár korábbi verzióiban található szövegelemzési és természetes nyelvi feldolgozási funkciókat. Emellett a szolgáltatás API szemantikairól dátumalapú verziószámozásra változott. Az ügyfélkódtár ezen verziója alapértelmezés szerint a legújabb támogatott API-verzió, amely jelenleg a 2023-04-01következő: .

Ez a táblázat a szolgáltatás SDK-verziói és támogatott API-verziói közötti kapcsolatot mutatja be

SDK verziója A szolgáltatás támogatott API-verziója
5.3.X – A legújabb stabil kiadás 3.0, 3.1, 2022-05-01, 2023-04-01 (alapértelmezett)
5.2.X 3.0, 3.1, 2022-05-01 (alapértelmezett)
5.1.0 3.0, 3.1 (alapértelmezett)
5.0.0 3.0

Az API-verziót úgy választhatja ki, hogy átadja a api_version kulcsszóargumentumot az ügyfélnek. A language service legújabb funkcióihoz érdemes lehet kiválasztani a legújabb béta API-verziót. Éles forgatókönyvek esetén a legújabb stabil verzió használata ajánlott. A régebbi verzióra való beállítás csökkentett funkciókompatibilitást eredményezhet.

Az ügyfél hitelesítése

A végpont lekérése

A Language Service-erőforrás végpontját az Azure Portalon vagy az Azure CLI-vel keresheti meg:

# Get the endpoint for the Language service resource
az cognitiveservices account show --name "resource-name" --resource-group "resource-group-name" --query "properties.endpoint"

Az API-kulcs lekérése

Az API-kulcsot az Azure Portal Cognitive Services- vagy Language Service-erőforrásából szerezheti be. Másik lehetőségként használhatja az alábbi Azure CLI-kódrészletet az erőforrás API-kulcsának lekéréséhez.

az cognitiveservices account keys list --name "resource-name" --resource-group "resource-group-name"

TextAnalyticsClient létrehozása API-kulcs hitelesítő adataival

Miután megkapta az API-kulcs értékét, sztringként továbbíthatja azt az AzureKeyCredential egy példányába. Használja a kulcsot hitelesítőadat-paraméterként az ügyfél hitelesítéséhez:

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient
endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint, AzureKeyCredential(key))

TextAnalyticsClient létrehozása Azure Active Directory-hitelesítő adatokkal

Azure Active Directory- (AAD-) jogkivonat hitelesítő adatainak használatához adja meg az azure-identity kódtárból beszerzett kívánt hitelesítőadat-típus egy példányát. Vegye figyelembe, hogy a regionális végpontok nem támogatják az AAD-hitelesítést. Hozzon létre egy egyéni altartománynevet az erőforráshoz az ilyen típusú hitelesítés használatához.

Az AAD-vel történő hitelesítéshez kezdeti beállítás szükséges:

A beállítás után kiválaszthatja, hogy az azure.identity milyen típusú hitelesítő adatokat használjon. Példaként a DefaultAzureCredential használható az ügyfél hitelesítésére:

Állítsa be az AAD-alkalmazás ügyfél-azonosítójának, bérlőazonosítójának és titkos ügyfélkulcsának értékeit környezeti változókként: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET

Használja a visszaadott jogkivonat hitelesítő adatait az ügyfél hitelesítéséhez:

import os
from azure.ai.textanalytics import TextAnalyticsClient
from azure.identity import DefaultAzureCredential

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
credential = DefaultAzureCredential()

text_analytics_client = TextAnalyticsClient(endpoint, credential=credential)

Fő fogalmak

TextAnalyticsClient

A Text Analytics ügyfélkódtár egy TextAnalyticsClient objektumot biztosít, a dokumentumok példakötegeinek elemzéséhez. Szinkron és aszinkron műveleteket is biztosít a szövegelemzés egy adott felhasználásához, például a nyelvfelismeréshez vagy a kulcskifejezések kinyeréséhez.

Bevitel

A dokumentum egyetlen egység, amelyet a Nyelvi szolgáltatás prediktív modelljei elemeznek. Az egyes műveletek bemenete dokumentumlistaként lesz átadva.

Minden dokumentum átadható sztringként a listában, például:

documents = ["I hated the movie. It was so slow!", "The movie made it into my top ten favorites. What a great movie!"]

vagy ha egy elemenkénti dokumentumot vagy language/country_hintdokumentumot id szeretne átadni, azokat a DetectLanguageInput vagy TextDocumentInput listaként, illetve az objektum diktálási szerű ábrázolásaként lehet átadni:

documents = [
    {"id": "1", "language": "en", "text": "I hated the movie. It was so slow!"},
    {"id": "2", "language": "en", "text": "The movie made it into my top ten favorites. What a great movie!"},
]

Tekintse meg a bemenet szolgáltatási korlátozásait , beleértve a dokumentum hosszának korlátozásait, a köteg maximális méretét és a támogatott szövegkódolást.

Visszatérési érték

Egyetlen dokumentum visszatérési értéke lehet eredmény- vagy hibaobjektum. Minden művelet eredmény- és hibaobjektum-gyűjteményt tartalmazó heterogén listát ad vissza. Ezek az eredmények/hibák indexelve vannak a megadott dokumentumok sorrendjével.

Az eredmény, például az AnalyzeSentimentResult egy szövegelemzési művelet eredménye, amely egy dokumentum bemenetére vonatkozó előrejelzést vagy előrejelzéseket tartalmaz.

A DocumentErrorhibaobjektum azt jelzi, hogy a szolgáltatás nem tudta feldolgozni a dokumentumot, és tartalmazza a sikertelenség okát.

Dokumentumhibák kezelése

Az attribútummal szűrhet egy eredmény- vagy hibaobjektumra a is_error listában. Eredményobjektum esetén ez mindig False és DocumentError esetén ez .True

Például az összes DocumentError kiszűréséhez listaértelmezést használhat:

response = text_analytics_client.analyze_sentiment(documents)
successful_responses = [doc for doc in response if not doc.is_error]

Az attribútummal kind az eredménytípusok között is szűrhet:

poller = text_analytics_client.begin_analyze_actions(documents, actions)
response = poller.result()
for result in response:
    if result.kind == "SentimentAnalysis":
        print(f"Sentiment is {result.sentiment}")
    elif result.kind == "KeyPhraseExtraction":
        print(f"Key phrases: {result.key_phrases}")
    elif result.is_error is True:
        print(f"Document error: {result.code}, {result.message}")

Long-Running műveletek

A hosszú ideig futó műveletek olyan műveletek, amelyek egy kezdeti kérésből állnak, amelyet a szolgáltatásnak küldött egy művelet elindításához, majd a szolgáltatás időközönkénti lekérdezése annak megállapításához, hogy a művelet befejeződött vagy sikertelen volt-e, és ha sikerült, az eredmény lekéréséhez.

Az egészségügyi elemzést, egyéni szövegelemzést vagy több elemzést támogató módszerek hosszú ideig futó műveletekként vannak modellezve. Az ügyfél egy metódust begin_<method-name> tesz elérhetővé, amely egy poller objektumot ad vissza. A hívónak meg kell várnia a művelet befejezését a metódusból begin_<method-name> visszaadott poller objektum meghívásávalresult(). Mintakódrészleteket ad meg, amelyek hosszú ideig futó műveletek használatát szemléltetik. Példák az alábbi .

Példák

A következő szakasz számos kódrészletet tartalmaz, amelyek a leggyakoribb nyelvi szolgáltatási feladatokra terjednek ki, többek között:

Hangulat elemzése

analyze_sentiment megvizsgálja a bemeneti szöveget, és meghatározza, hogy hangulata pozitív, negatív, semleges vagy vegyes-e. A válasz mondatonkénti hangulatelemzést és megbízhatósági pontszámokat is tartalmaz.

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=AzureKeyCredential(key))

documents = [
    """I had the best day of my life. I decided to go sky-diving and it made me appreciate my whole life so much more.
    I developed a deep-connection with my instructor as well, and I feel as if I've made a life-long friend in her.""",
    """This was a waste of my time. All of the views on this drop are extremely boring, all I saw was grass. 0/10 would
    not recommend to any divers, even first timers.""",
    """This was pretty good! The sights were ok, and I had fun with my instructors! Can't complain too much about my experience""",
    """I only have one word for my experience: WOW!!! I can't believe I have had such a wonderful skydiving company right
    in my backyard this whole time! I will definitely be a repeat customer, and I want to take my grandmother skydiving too,
    I know she'll love it!"""
]


result = text_analytics_client.analyze_sentiment(documents, show_opinion_mining=True)
docs = [doc for doc in result if not doc.is_error]

print("Let's visualize the sentiment of each of these documents")
for idx, doc in enumerate(docs):
    print(f"Document text: {documents[idx]}")
    print(f"Overall sentiment: {doc.sentiment}")

A visszaadott válasz az eredmény- és hibaobjektumok heterogén listája: list[AnalyzeSentimentResult, DocumentError]

A hangulatelemzés fogalmi megvitatásához tekintse meg a szolgáltatás dokumentációját. Ha meg szeretné tudni, hogyan végezhet részletesebb elemzést az egyes szempontokhoz (például egy termék vagy szolgáltatás attribútumai) kapcsolódó véleményekben egy szövegben, tekintse meg itt.

Entitások felismerése

recognize_entities a bemeneti szövegben szereplő entitásokat személyekként, helyekként, szervezetekként, dátum/idő, mennyiségek, százalékok, pénznemek és egyebekként ismeri fel és sorolja fel.

import os
import typing
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=AzureKeyCredential(key))
reviews = [
    """I work for Foo Company, and we hired Contoso for our annual founding ceremony. The food
    was amazing and we all can't say enough good words about the quality and the level of service.""",
    """We at the Foo Company re-hired Contoso after all of our past successes with the company.
    Though the food was still great, I feel there has been a quality drop since their last time
    catering for us. Is anyone else running into the same problem?""",
    """Bar Company is over the moon about the service we received from Contoso, the best sliders ever!!!!"""
]

result = text_analytics_client.recognize_entities(reviews)
result = [review for review in result if not review.is_error]
organization_to_reviews: typing.Dict[str, typing.List[str]] = {}

for idx, review in enumerate(result):
    for entity in review.entities:
        print(f"Entity '{entity.text}' has category '{entity.category}'")
        if entity.category == 'Organization':
            organization_to_reviews.setdefault(entity.text, [])
            organization_to_reviews[entity.text].append(reviews[idx])

for organization, reviews in organization_to_reviews.items():
    print(
        "\n\nOrganization '{}' has left us the following review(s): {}".format(
            organization, "\n\n".join(reviews)
        )
    )

A visszaadott válasz az eredmény- és hibaobjektumok heterogén listája: list[RecognizeEntitiesResult, DocumentError]

Tekintse meg a szolgáltatás dokumentációját a megnevezett entitások felismerésének és támogatott típusainak fogalmi megvitatásához.

Csatolt entitások felismerése

recognize_linked_entities felismeri és egyértelműsíti a bemeneti szövegben talált egyes entitások identitását (például annak megállapítását, hogy a Mars szó előfordulása a bolygóra vagy a háború római istenére utal-e). A felismert entitások url-címekkel vannak társítva egy jól ismert tudásbázis, például a Wikipédiához.

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=AzureKeyCredential(key))
documents = [
    """
    Microsoft was founded by Bill Gates with some friends he met at Harvard. One of his friends,
    Steve Ballmer, eventually became CEO after Bill Gates as well. Steve Ballmer eventually stepped
    down as CEO of Microsoft, and was succeeded by Satya Nadella.
    Microsoft originally moved its headquarters to Bellevue, Washington in January 1979, but is now
    headquartered in Redmond.
    """
]

result = text_analytics_client.recognize_linked_entities(documents)
docs = [doc for doc in result if not doc.is_error]

print(
    "Let's map each entity to it's Wikipedia article. I also want to see how many times each "
    "entity is mentioned in a document\n\n"
)
entity_to_url = {}
for doc in docs:
    for entity in doc.entities:
        print("Entity '{}' has been mentioned '{}' time(s)".format(
            entity.name, len(entity.matches)
        ))
        if entity.data_source == "Wikipedia":
            entity_to_url[entity.name] = entity.url

A visszaadott válasz az eredmény- és hibaobjektumok heterogén listája: list[RecognizeLinkedEntitiesResult, DocumentError]

Tekintse meg a szolgáltatás dokumentációját az entitások összekapcsolásának és támogatott típusainak fogalmi megvitatásához.

PII-entitások felismerése

recognize_pii_entities felismeri és kategorizálja a személyazonosításra alkalmas adatok (PII) entitásait a bemeneti szövegben, például a társadalombiztosítási számokat, a bankszámlaadatokat, a hitelkártyaszámokat és egyebeket.

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(
    endpoint=endpoint, credential=AzureKeyCredential(key)
)
documents = [
    """Parker Doe has repaid all of their loans as of 2020-04-25.
    Their SSN is 859-98-0987. To contact them, use their phone number
    555-555-5555. They are originally from Brazil and have Brazilian CPF number 998.214.865-68"""
]

result = text_analytics_client.recognize_pii_entities(documents)
docs = [doc for doc in result if not doc.is_error]

print(
    "Let's compare the original document with the documents after redaction. "
    "I also want to comb through all of the entities that got redacted"
)
for idx, doc in enumerate(docs):
    print(f"Document text: {documents[idx]}")
    print(f"Redacted document text: {doc.redacted_text}")
    for entity in doc.entities:
        print("...Entity '{}' with category '{}' got redacted".format(
            entity.text, entity.category
        ))

A visszaadott válasz az eredmény- és hibaobjektumok heterogén listája: list[RecognizePiiEntitiesResult, DocumentError]

Tekintse meg a támogatott PII-entitástípusok szolgáltatásdokumentációját.

Megjegyzés: A PII-entitások felismerése szolgáltatás az API 3.1-es és újabb verziójában érhető el.

Kulcsszavak keresése

extract_key_phrases meghatározza a bemeneti szöveg fő beszédpontjait. Például az "Az étel finom volt, és csodálatos személyzet volt", az API a következőt adja vissza: "étel" és "csodálatos személyzet".

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=AzureKeyCredential(key))
articles = [
    """
    Washington, D.C. Autumn in DC is a uniquely beautiful season. The leaves fall from the trees
    in a city chock-full of forests, leaving yellow leaves on the ground and a clearer view of the
    blue sky above...
    """,
    """
    Redmond, WA. In the past few days, Microsoft has decided to further postpone the start date of
    its United States workers, due to the pandemic that rages with no end in sight...
    """,
    """
    Redmond, WA. Employees at Microsoft can be excited about the new coffee shop that will open on campus
    once workers no longer have to work remotely...
    """
]

result = text_analytics_client.extract_key_phrases(articles)
for idx, doc in enumerate(result):
    if not doc.is_error:
        print("Key phrases in article #{}: {}".format(
            idx + 1,
            ", ".join(doc.key_phrases)
        ))

A visszaadott válasz az eredmény- és hibaobjektumok heterogén listája: list[ExtractKeyPhrasesResult, DocumentError]

A kulcskifejezések kinyerésének fogalmi megvitatásához tekintse meg a szolgáltatás dokumentációját.

Nyelvfelismerés

detect_language meghatározza a bemeneti szöveg nyelvét, beleértve az előrejelzett nyelv megbízhatósági pontszámát is.

import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(endpoint=endpoint, credential=AzureKeyCredential(key))
documents = [
    """
    The concierge Paulette was extremely helpful. Sadly when we arrived the elevator was broken, but with Paulette's help we barely noticed this inconvenience.
    She arranged for our baggage to be brought up to our room with no extra charge and gave us a free meal to refurbish all of the calories we lost from
    walking up the stairs :). Can't say enough good things about my experience!
    """,
    """
    最近由于工作压力太大,我们决定去富酒店度假。那儿的温泉实在太舒服了,我跟我丈夫都完全恢复了工作前的青春精神!加油!
    """
]

result = text_analytics_client.detect_language(documents)
reviewed_docs = [doc for doc in result if not doc.is_error]

print("Let's see what language each review is in!")

for idx, doc in enumerate(reviewed_docs):
    print("Review #{} is in '{}', which has ISO639-1 name '{}'\n".format(
        idx, doc.primary_language.name, doc.primary_language.iso6391_name
    ))

A visszaadott válasz az eredmény- és hibaobjektumok heterogén listája: list[DetectLanguageResult, DocumentError]

A nyelvészlelésről , valamint a nyelvi és regionális támogatásról a szolgáltatás dokumentációjában tájékozódhat.

Egészségügyi entitások elemzése

A hosszú ideig futóművelet begin_analyze_healthcare_entities kinyeri az egészségügyi tartományon belül felismert entitásokat, és azonosítja a bemeneti dokumentumon belüli entitások közötti kapcsolatokat, valamint az ismert információforrásokra mutató hivatkozásokat különböző jól ismert adatbázisokban, például UMLS-ben, CHV-ben, MSH-ban stb.

import os
import typing
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import TextAnalyticsClient, HealthcareEntityRelation

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(key),
)

documents = [
    """
    Patient needs to take 100 mg of ibuprofen, and 3 mg of potassium. Also needs to take
    10 mg of Zocor.
    """,
    """
    Patient needs to take 50 mg of ibuprofen, and 2 mg of Coumadin.
    """
]

poller = text_analytics_client.begin_analyze_healthcare_entities(documents)
result = poller.result()

docs = [doc for doc in result if not doc.is_error]

print("Let's first visualize the outputted healthcare result:")
for doc in docs:
    for entity in doc.entities:
        print(f"Entity: {entity.text}")
        print(f"...Normalized Text: {entity.normalized_text}")
        print(f"...Category: {entity.category}")
        print(f"...Subcategory: {entity.subcategory}")
        print(f"...Offset: {entity.offset}")
        print(f"...Confidence score: {entity.confidence_score}")
        if entity.data_sources is not None:
            print("...Data Sources:")
            for data_source in entity.data_sources:
                print(f"......Entity ID: {data_source.entity_id}")
                print(f"......Name: {data_source.name}")
        if entity.assertion is not None:
            print("...Assertion:")
            print(f"......Conditionality: {entity.assertion.conditionality}")
            print(f"......Certainty: {entity.assertion.certainty}")
            print(f"......Association: {entity.assertion.association}")
    for relation in doc.entity_relations:
        print(f"Relation of type: {relation.relation_type} has the following roles")
        for role in relation.roles:
            print(f"...Role '{role.name}' with entity '{role.entity.text}'")
    print("------------------------------------------")

print("Now, let's get all of medication dosage relations from the documents")
dosage_of_medication_relations = [
    entity_relation
    for doc in docs
    for entity_relation in doc.entity_relations if entity_relation.relation_type == HealthcareEntityRelation.DOSAGE_OF_MEDICATION
]

Megjegyzés: Az Healthcare Entities Analysis csak az API 3.1-es és újabb verziójával érhető el.

Több elemzés

A hosszú ideig futóművelet begin_analyze_actions egyetlen kérelemben több elemzést hajt végre egy dokumentumkészleten. Jelenleg a következő nyelvi API-k bármely kombinációjával támogatott egyetlen kérelemben:

  • Entitások felismerése
  • PII-entitások felismerése
  • Csatolt entitások felismerése
  • Kulcskifejezések kinyerése
  • Hangulatelemzés
  • Egyéni entitásfelismerés (API 2022-05-01-es és újabb verzió)
  • Egyéni egycímke-besorolás (API 2022-05-01-es és újabb verzió)
  • Egyéni többcímke-besorolás (API 2022-05-01-es és újabb verzió)
  • Healthcare Entities Analysis (API 2022-05-01-es és újabb verzió)
  • Kivonatos összegzés (API 2023-04-01-es és újabb verziója)
  • Absztraktív összegzés (API 2023-04-01-es és újabb verzió)
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.textanalytics import (
    TextAnalyticsClient,
    RecognizeEntitiesAction,
    RecognizeLinkedEntitiesAction,
    RecognizePiiEntitiesAction,
    ExtractKeyPhrasesAction,
    AnalyzeSentimentAction,
)

endpoint = os.environ["AZURE_LANGUAGE_ENDPOINT"]
key = os.environ["AZURE_LANGUAGE_KEY"]

text_analytics_client = TextAnalyticsClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(key),
)

documents = [
    'We went to Contoso Steakhouse located at midtown NYC last week for a dinner party, and we adore the spot! '
    'They provide marvelous food and they have a great menu. The chief cook happens to be the owner (I think his name is John Doe) '
    'and he is super nice, coming out of the kitchen and greeted us all.'
    ,

    'We enjoyed very much dining in the place! '
    'The Sirloin steak I ordered was tender and juicy, and the place was impeccably clean. You can even pre-order from their '
    'online menu at www.contososteakhouse.com, call 312-555-0176 or send email to order@contososteakhouse.com! '
    'The only complaint I have is the food didn\'t come fast enough. Overall I highly recommend it!'
]

poller = text_analytics_client.begin_analyze_actions(
    documents,
    display_name="Sample Text Analysis",
    actions=[
        RecognizeEntitiesAction(),
        RecognizePiiEntitiesAction(),
        ExtractKeyPhrasesAction(),
        RecognizeLinkedEntitiesAction(),
        AnalyzeSentimentAction(),
    ],
)

document_results = poller.result()
for doc, action_results in zip(documents, document_results):
    print(f"\nDocument text: {doc}")
    for result in action_results:
        if result.kind == "EntityRecognition":
            print("...Results of Recognize Entities Action:")
            for entity in result.entities:
                print(f"......Entity: {entity.text}")
                print(f".........Category: {entity.category}")
                print(f".........Confidence Score: {entity.confidence_score}")
                print(f".........Offset: {entity.offset}")

        elif result.kind == "PiiEntityRecognition":
            print("...Results of Recognize PII Entities action:")
            for pii_entity in result.entities:
                print(f"......Entity: {pii_entity.text}")
                print(f".........Category: {pii_entity.category}")
                print(f".........Confidence Score: {pii_entity.confidence_score}")

        elif result.kind == "KeyPhraseExtraction":
            print("...Results of Extract Key Phrases action:")
            print(f"......Key Phrases: {result.key_phrases}")

        elif result.kind == "EntityLinking":
            print("...Results of Recognize Linked Entities action:")
            for linked_entity in result.entities:
                print(f"......Entity name: {linked_entity.name}")
                print(f".........Data source: {linked_entity.data_source}")
                print(f".........Data source language: {linked_entity.language}")
                print(
                    f".........Data source entity ID: {linked_entity.data_source_entity_id}"
                )
                print(f".........Data source URL: {linked_entity.url}")
                print(".........Document matches:")
                for match in linked_entity.matches:
                    print(f"............Match text: {match.text}")
                    print(f"............Confidence Score: {match.confidence_score}")
                    print(f"............Offset: {match.offset}")
                    print(f"............Length: {match.length}")

        elif result.kind == "SentimentAnalysis":
            print("...Results of Analyze Sentiment action:")
            print(f"......Overall sentiment: {result.sentiment}")
            print(
                f"......Scores: positive={result.confidence_scores.positive}; \
                neutral={result.confidence_scores.neutral}; \
                negative={result.confidence_scores.negative} \n"
            )

        elif result.is_error is True:
            print(
                f"...Is an error with code '{result.error.code}' and message '{result.error.message}'"
            )

    print("------------------------------------------")

A visszaadott válasz egy olyan objektum, amely több iterálható értéket foglal magában, amelyek mindegyike az egyes elemzések eredményeit jeleníti meg.

Megjegyzés: Több elemzés érhető el az API 3.1-es és újabb verziójában.

Választható konfiguráció

A választható kulcsszóargumentumok az ügyfél és a művelet szintjén is átadhatók. Az azure-core referenciadokumentáció az újrapróbálkozásokhoz, naplózáshoz, átviteli protokollokhoz és egyebekhez elérhető konfigurációkat ismerteti.

Hibaelhárítás

Általános kérdések

Az Text Analytics-ügyfél az Azure Core-ban definiált kivételeket hoz létre.

Naplózás

Ez a kódtár a szabványos naplózási kódtárat használja a naplózáshoz. A HTTP-munkamenetekkel (URL-címekkel, fejlécekkel stb.) kapcsolatos alapvető információk az INFO szintjén naplózva lesznek.

Részletes HIBAKERESÉSi szintű naplózás, beleértve a kérelem-/választörzseket és a nem felügyelt fejléceket, engedélyezhető egy ügyfélen a logging_enable kulcsszóargumentummal:

import sys
import logging
from azure.identity import DefaultAzureCredential
from azure.ai.textanalytics import TextAnalyticsClient

# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)

# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

endpoint = "https://<resource-name>.cognitiveservices.azure.com/"
credential = DefaultAzureCredential()

# This client will log detailed information about its HTTP sessions, at DEBUG level
text_analytics_client = TextAnalyticsClient(endpoint, credential, logging_enable=True)
result = text_analytics_client.analyze_sentiment(["I did not like the restaurant. The food was too spicy."])

Hasonlóképpen logging_enable , engedélyezheti a részletes naplózást egyetlen művelethez, még akkor is, ha nincs engedélyezve az ügyfél számára:

result = text_analytics_client.analyze_sentiment(documents, logging_enable=True)

Következő lépések

További mintakód

Ezek a kódminták az Azure Text Analytics ügyfélkódtár gyakori forgatókönyvműveleteit mutatják be.

Az ügyfél hitelesítése Cognitive Services/Language service API-kulccsal vagy azure-identityből származó token hitelesítő adatokkal:

Gyakori forgatókönyvek

Speciális forgatókönyvek

További dokumentáció

Az Azure Cognitive Service for Language részletesebb dokumentációját a Language Service dokumentációjában találja a docs.microsoft.com.

Közreműködés

A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. A részletekért látogasson el a cla.microsoft.com.

A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.

A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.