Κοινή χρήση μέσω


Χρήση προκατασκευασμένων Αναλύσεις κειμένου στο Fabric με API REST και SynapseML (προεπισκόπηση)

Σημαντικό

Αυτή η δυνατότητα είναι σε προεπισκόπηση.

Αναλύσεις κειμένου είναι μια υπηρεσία Azure AI που σας επιτρέπει να εκτελείτε εξόρυξη κειμένου και ανάλυση κειμένου με δυνατότητες επεξεργασίας φυσικής γλώσσας (NLP).

Αυτή η εκμάθηση παρουσιάζει τη χρήση ανάλυσης κειμένου στο Fabric με ΤΟ RESTful API για τα εξής:

  • Εντοπίστε ετικέτες συναισθήματος σε επίπεδο πρότασης ή εγγράφου.
  • Προσδιορίστε τη γλώσσα για μια δεδομένη εισαγωγή κειμένου.
  • Εξαγάγετε φάσεις κλειδιού από ένα κείμενο.
  • Προσδιορίστε διαφορετικές οντότητες στο κείμενο και ταξινομήστε τις σε προκαθορισμένες κλάσεις ή τύπους.

Προαπαιτούμενα στοιχεία

# 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}")

Ανάλυση συναισθημάτων

Η δυνατότητα Ανάλυση συναισθήματος παρέχει έναν τρόπο για τον εντοπισμό των ετικετών συναισθήματος (όπως "αρνητικό", "ουδέτερο" και "θετικό") και τις βαθμολογίες εμπιστοσύνης σε επίπεδο πρότασης και εγγράφου. Αυτή η δυνατότητα επιστρέφει επίσης βαθμολογίες εμπιστοσύνης μεταξύ 0 και 1 για κάθε έγγραφο και προτάσεις σε αυτό για θετικό, ουδέτερο και αρνητικό συναίσθημα. Ανατρέξτε στην υποστήριξη γλώσσας ανάλυσης συναισθήματος και εξόρυξης γνώμης για τη λίστα των ενεργοποιημένων γλωσσών.

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)

Έξοδος

    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"
      }
    }

Εντοπισμός γλώσσας

Το Πρόγραμμα εντοπισμού γλώσσας αξιολογεί την εισαγωγή κειμένου για κάθε έγγραφο και επιστρέφει αναγνωριστικά γλώσσας με μια βαθμολογία που υποδεικνύει την ισχύ της ανάλυσης. Αυτή η δυνατότητα είναι χρήσιμη για καταστήματα περιεχομένου που συλλέγουν αυθαίρετο κείμενο, όπου η γλώσσα είναι άγνωστη. Ανατρέξτε στις Υποστηριζόμενες γλώσσες για τον εντοπισμό γλώσσας για τη λίστα των ενεργοποιημένων γλωσσών.

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)

Έξοδος

    HTTP 200
    {
      "kind": "LanguageDetectionResults",
      "results": {
        "documents": [
          {
            "id": "1",
            "detectedLanguage": {
              "name": "English",
              "iso6391Name": "en",
              "confidenceScore": 0.99
            },
            "warnings": []
          }
        ],
        "errors": [],
        "modelVersion": "2022-10-01"
      }
    }

Εξαγωγή φράσης-κλειδιού

Η εξαγωγή φράσεων-κλειδιών αξιολογεί το μη δομημένο κείμενο και επιστρέφει μια λίστα φράσεων-κλειδιών. Αυτή η δυνατότητα είναι χρήσιμη εάν θέλετε να προσδιορίσετε γρήγορα τα κύρια σημεία σε μια συλλογή εγγράφων. Ανατρέξτε στις Υποστηριζόμενες γλώσσες για εξαγωγή φράσης-κλειδιού για τη λίστα των ενεργοποιημένων γλωσσών.

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)

Έξοδος

    HTTP 200
    {
      "kind": "KeyPhraseExtractionResults",
      "results": {
        "documents": [
          {
            "id": "1",
            "keyPhrases": [
              "modern medical office",
              "Dr. Smith",
              "great staff"
            ],
            "warnings": []
          }
        ],
        "errors": [],
        "modelVersion": "2022-10-01"
      }
    }

Επώνυμη αναγνώριση οντότητας (NER)

Η επώνυμη αναγνώριση οντότητας (NER) είναι η δυνατότητα αναγνώρισης διαφορετικών οντοτήτων στο κείμενο και κατηγοριοποίησής τους σε προκαθορισμένες κλάσεις ή τύπους όπως: άτομο, τοποθεσία, συμβάν, προϊόν και οργανισμός. Ανατρέξτε στην υποστήριξη γλώσσας NER για τη λίστα των ενεργοποιημένων γλωσσών.

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)

Έξοδος

    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"
      }
    }

Σύνδεση οντοτήτων

Δεν υπάρχουν βήματα για το REST API σε αυτή την ενότητα.