Valmiiden Tekstianalyysi käyttö kankaalla REST-ohjelmointirajapinnan ja synapseml:n kanssa (esikatselu)
Tekstianalyysi on Azure-tekoälypalvelu, jonka avulla voit tehdä tekstilouhinta- ja tekstianalyyseja luonnollisen kielen käsittelyn (NLP) ominaisuuksien avulla.
Tässä opetusohjelmassa esitellään tekstianalysoinnin käyttöä Fabricissa RESTful-ohjelmointirajapinnan avulla
- Tunnista asenne-otsikot lause- tai asiakirjatasolla.
- Määritä annetun tekstisyötteen kieli.
- Poimi tärkeät vaiheet tekstistä.
- Tunnista tekstissä olevat eri entiteetit ja luokittele ne ennalta määritettyihin luokkiin tai tyyppeihin.
Edellytykset
# Get workload endpoints and access token
from synapse.ml.mlflow import get_mlflow_env_config
import json
mlflow_env_configs = get_mlflow_env_config()
access_token = access_token = mlflow_env_configs.driver_aad_token
prebuilt_AI_base_host = mlflow_env_configs.workload_endpoint + "cognitive/textanalytics/"
print("Workload endpoint for AI service: \n" + prebuilt_AI_base_host)
service_url = prebuilt_AI_base_host + "language/:analyze-text?api-version=2022-05-01"
# Make a RESful request to AI service
post_headers = {
"Content-Type" : "application/json",
"Authorization" : "Bearer {}".format(access_token)
}
def printresponse(response):
print(f"HTTP {response.status_code}")
if response.status_code == 200:
try:
result = response.json()
print(json.dumps(result, indent=2, ensure_ascii=False))
except:
print(f"pasre error {response.content}")
else:
print(response.headers)
print(f"error message: {response.content}")
Asenneanalyysi
Asenneanalyysi-ominaisuuden avulla voit tunnistaa asennetunnisteet (kuten "negatiivinen", "neutraali" ja "positiivinen") ja luottamuspisteet lause- ja asiakirjatasolla. Tämä ominaisuus palauttaa myös luotettavuuspisteet 0–1 kullekin asiakirjalle ja sen sisällä olevalle lauseelle positiiviselle, neutraalille ja negatiiviselle asenteelle. Katso käytössä olevien kielten luettelo asenneanalyysin ja mielipiteen louhinnan kielituesta .
import requests
from pprint import pprint
import uuid
post_body = {
"kind": "SentimentAnalysis",
"parameters": {
"modelVersion": "latest",
"opinionMining": "True"
},
"analysisInput":{
"documents":[
{
"id":"1",
"language":"en",
"text": "The food and service were unacceptable. The concierge was nice, however."
}
]
}
}
post_headers["x-ms-workload-resource-moniker"] = str(uuid.uuid1())
response = requests.post(service_url, json=post_body, headers=post_headers)
# Output all information of the request process
printresponse(response)
Tuloste
HTTP 200
{
"kind": "SentimentAnalysisResults",
"results": {
"documents": [
{
"id": "1",
"sentiment": "mixed",
"confidenceScores": {
"positive": 0.43,
"neutral": 0.04,
"negative": 0.53
},
"sentences": [
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.0,
"neutral": 0.01,
"negative": 0.99
},
"offset": 0,
"length": 40,
"text": "The food and service were unacceptable. ",
"targets": [
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.01,
"negative": 0.99
},
"offset": 4,
"length": 4,
"text": "food",
"relations": [
{
"relationType": "assessment",
"ref": "#/documents/0/sentences/0/assessments/0"
}
]
},
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.01,
"negative": 0.99
},
"offset": 13,
"length": 7,
"text": "service",
"relations": [
{
"relationType": "assessment",
"ref": "#/documents/0/sentences/0/assessments/0"
}
]
}
],
"assessments": [
{
"sentiment": "negative",
"confidenceScores": {
"positive": 0.01,
"negative": 0.99
},
"offset": 26,
"length": 12,
"text": "unacceptable",
"isNegated": false
}
]
},
{
"sentiment": "positive",
"confidenceScores": {
"positive": 0.86,
"neutral": 0.08,
"negative": 0.07
},
"offset": 40,
"length": 32,
"text": "The concierge was nice, however.",
"targets": [
{
"sentiment": "positive",
"confidenceScores": {
"positive": 1.0,
"negative": 0.0
},
"offset": 44,
"length": 9,
"text": "concierge",
"relations": [
{
"relationType": "assessment",
"ref": "#/documents/0/sentences/1/assessments/0"
}
]
}
],
"assessments": [
{
"sentiment": "positive",
"confidenceScores": {
"positive": 1.0,
"negative": 0.0
},
"offset": 58,
"length": 4,
"text": "nice",
"isNegated": false
}
]
}
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2022-11-01"
}
}
Kielentunnistus
Kielentunnistus arvioi kunkin asiakirjan tekstisyötteen ja palauttaa kielitunnisteet pisteillä, jotka osoittavat analyysin vahvuuden. Tästä ominaisuudesta on hyötyä sisältösäilöissä, jotka keräävät satunnaista tekstiä, jonka kieli on tuntematon. Kieliä käyttävien kielten luettelo on kohdassa Tuetut kielet .
post_body = {
"kind": "LanguageDetection",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"text": "This is a document written in English."
}
]
}
}
post_headers["x-ms-workload-resource-moniker"] = str(uuid.uuid1())
response = requests.post(service_url, json=post_body, headers=post_headers)
# Output all information of the request process
printresponse(response)
Tuloste
HTTP 200
{
"kind": "LanguageDetectionResults",
"results": {
"documents": [
{
"id": "1",
"detectedLanguage": {
"name": "English",
"iso6391Name": "en",
"confidenceScore": 0.99
},
"warnings": []
}
],
"errors": [],
"modelVersion": "2022-10-01"
}
}
Avainlauseiden poiminta
Avainlauseiden poiminta arvioi rakenteettomia tekstejä ja palauttaa luettelon avainlauseita. Tästä ominaisuudesta on hyötyä, jos sinun on nopeasti tunnistettava asiakirjakokoelman tärkeimmät asiat. Avainlauseiden poiminta on kohdassa Tuetut kielet, luettelo käytössä olevista kielistä.
post_body = {
"kind": "KeyPhraseExtraction",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"language":"en",
"text": "Dr. Smith has a very modern medical office, and she has great staff."
}
]
}
}
post_headers["x-ms-workload-resource-moniker"] = str(uuid.uuid1())
response = requests.post(service_url, json=post_body, headers=post_headers)
# Output all information of the request process
printresponse(response)
Tuloste
HTTP 200
{
"kind": "KeyPhraseExtractionResults",
"results": {
"documents": [
{
"id": "1",
"keyPhrases": [
"modern medical office",
"Dr. Smith",
"great staff"
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2022-10-01"
}
}
Nimetty entiteetin tunnistaminen (NER)
Nimetty entiteetin tunnistaminen (NER) on kyky tunnistaa tekstin eri entiteetit ja luokitella ne ennalta määritettyihin luokkiin tai tyyppeihin, kuten henkilö, sijainti, tapahtuma, tuote ja organisaatio. Kieliluettelo on NER-kielen tuessa .
post_body = {
"kind": "EntityRecognition",
"parameters": {
"modelVersion": "latest"
},
"analysisInput":{
"documents":[
{
"id":"1",
"language": "en",
"text": "I had a wonderful trip to Seattle last week."
}
]
}
}
post_headers["x-ms-workload-resource-moniker"] = str(uuid.uuid1())
response = requests.post(service_url, json=post_body, headers=post_headers)
# Output all information of the request process
printresponse(response)
Tuloste
HTTP 200
{
"kind": "EntityRecognitionResults",
"results": {
"documents": [
{
"id": "1",
"entities": [
{
"text": "trip",
"category": "Event",
"offset": 18,
"length": 4,
"confidenceScore": 0.74
},
{
"text": "Seattle",
"category": "Location",
"subcategory": "GPE",
"offset": 26,
"length": 7,
"confidenceScore": 1.0
},
{
"text": "last week",
"category": "DateTime",
"subcategory": "DateRange",
"offset": 34,
"length": 9,
"confidenceScore": 0.8
}
],
"warnings": []
}
],
"errors": [],
"modelVersion": "2021-06-01"
}
}
Entiteetin linkitys
EI REST-ohjelmointirajapinnan vaiheita tässä osiossa.
Liittyvä sisältö
- Valmiiden Tekstianalyysi käyttö Fabricissa SynapseML:n kanssa
- Valmisten Azure AI Kääntäjä käyttö Fabricissa REST-ohjelmointirajapinnan kanssa
- Valmiiden Azure AI Kääntäjä käyttö Fabricissa SynapseML:n kanssa
- Valmiin Azure OpenAI:n käyttö Fabricissa REST-ohjelmointirajapinnan kanssa
- Valmiin Azure OpenAI:n käyttö Fabricissa Python SDK:n kanssa
- Valmiin Azure OpenAI:n käyttö Fabricissa SynapseML:n kanssa