Özel metin sınıflandırma becerisi

Tamamlandı

Özel metin sınıflandırması, bir metin pasajını farklı kullanıcı tanımlı sınıflara eşlemenizi sağlar. Örneğin, bir kitap türünü otomatik olarak tanımlamak için kitapların arka kapağındaki özet üzerinde bir model eğitebilirsiniz. Ardından, çevrimiçi mağaza arama motorunuzu bir tarz modeliyle zenginleştirmek için bu tanımlanan türü kullanırsınız.

Arama dizinini zenginleştirmek için gereken adımları gösteren diyagram.

Burada, özel bir metin sınıflandırma modeli kullanarak arama dizinini zenginleştirmek için dikkate almanız gerekenleri göreceksiniz:

  • Language Studio ve Azure AI Search dizin oluşturucuları tarafından erişilebilmeleri için belgelerinizi depolayın.
  • Özel bir metin sınıflandırma projesi oluşturun.
  • Modelinizi eğitin ve test edin.
  • Depolanan belgelerinize göre bir arama dizini oluşturun.
  • Dağıtılan eğitilmiş modelinizi kullanan bir işlev uygulaması oluşturun.
  • Arama çözümünüzü, dizininizi, dizin oluşturucunuzu ve özel beceri kümesinizi güncelleştirin.

Verilerinizi depolama

Azure Blob depolamaya hem Language Studio hem de Azure AI Hizmetleri'nden erişilebilir. Kapsayıcının erişilebilir olması gerektiğinden en basit seçenek Kapsayıcı'yı seçmektir, ancak bazı ek yapılandırmalarla özel kapsayıcıları kullanmak da mümkündür.

Verilerinizle birlikte, her belge için sınıflandırma atamanın bir yolunu da kullanmanız gerekir. Language Studio, her belgeyi tek tek el ile sınıflandırmak için kullanabileceğiniz bir grafik aracı sağlar.

İki farklı proje türü arasından seçim yapabilirsiniz. Belge tek bir sınıfla eşlanırsa, tek bir etiket sınıflandırma projesi kullanın. Bir belgeyi birden fazla sınıfa eşlemek istiyorsanız, çok etiketli sınıflandırma projesini kullanın.

Her belgeyi el ile sınıflandırmak istemiyorsanız, Azure AI Dili projenizi oluşturmadan önce tüm belgelerinizi etiketleyebilirsiniz. Bu işlem, şu biçimde bir etiket JSON belgesi oluşturmayı içerir:

{
    "projectFileVersion": "2022-05-01",
    "stringIndexType": "Utf16CodeUnit",
    "metadata": {
      "projectKind": "CustomMultiLabelClassification",
      "storageInputContainerName": "{CONTAINER-NAME}",
      "projectName": "{PROJECT-NAME}",
      "multilingual": false,
      "description": "Project-description",
      "language": "en-us"
    },
    "assets": {
      "projectKind": "CustomMultiLabelClassification",
      "classes": [
        {
          "category": "Class1"
        },
        {
          "category": "Class2"
        }
      ],
      "documents": [
          {
              "location": "{DOCUMENT-NAME}",
              "language": "{LANGUAGE-CODE}",
              "dataset": "{DATASET}",
              "classes": [
                  {
                      "category": "Class1"
                  },
                  {
                      "category": "Class2"
                  }
              ]
          }
      ]
  }

Diziye classes sahip olduğunuz kadar çok sınıf eklersiniz. Dizideki her belge için, belgenin documents hangi sınıflar ile eşleşir dahil olmak üzere bir girdi eklersiniz.

Azure AI Dil projenizi oluşturma

Azure AI Dil projenizi oluşturmanın iki yolu vardır. Önce Azure portalında dil hizmeti oluşturmadan Language Studio'yu kullanmaya başlarsanız, Language Studio sizin için bir dil hizmeti oluşturmayı önerir.

Azure Yapay Zeka Dili projesi oluşturmanın en esnek yolu, önce Azure portalını kullanarak dil hizmetinizi oluşturmaktır. Bu seçeneği belirlerseniz, özel özellikler ekleme seçeneğini elde edersiniz.

Azure portalında dil hizmeti oluşturmayı gösteren ekran görüntüsü.

Özel metin sınıflandırması oluşturacağınız için dil hizmetinizi oluştururken bu özel özelliği seçin. Bu yöntemi kullanarak dil hizmetini bir depolama hesabına da bağlayacaksınız.

Kaynak dağıtıldıktan sonra, dil hizmetinin genel bakış bölmesinden doğrudan Language Studio'ya gidebilirsiniz. Ardından yeni bir özel metin sınıflandırma projesi oluşturabilirsiniz.

Not

Dil hizmetinizi Language Studio'dan oluşturduysanız bu adımları izlemeniz gerekebilir. Depolama kapsayıcınızı özel metin sınıflandırma projenize bağlamak için Azure Dil kaynağınız ve depolama hesabınız için roller ayarlayın.

Sınıflandırma modelinizi eğitin

Tüm yapay zeka modellerinde olduğu gibi, bunları eğitmek için kullanabileceğiniz verileri tanımlamış olmanız gerekir. Modelin verileri bir sınıfla eşleme örneklerini görmesi ve modeli test etmek için kullanabileceği bazı örneklere sahip olması gerekir. Modelin eğitim verilerinizi otomatik olarak bölmesine izin vermeyi seçebilirsiniz; varsayılan olarak modeli eğitmek için belgelerin %80'ini ve kör test etmek için %20'sini kullanır. Modelinizi test etmek istediğiniz belirli belgeleriniz varsa, belgeleri test için etiketleyebilirsiniz.

Test kümesine eklenecek belgeyi seçmeyi gösteren Language Studio'nun ekran görüntüsü.

Language Studio'da projenizde Veri etiketleme'yi seçin. Tüm belgelerinizi görürsünüz. Test kümesine eklemek istediğiniz her belgeyi seçin ve ardından Modelin performansını test etme'yi seçin . Güncelleştirilmiş etiketlerinizi kaydedin ve yeni bir eğitim işi oluşturun.

Arama dizini oluşturma

Özel metin sınıflandırma modeliyle zenginleştirilecek bir arama dizini oluşturmak için yapmanız gereken belirli bir şey yoktur. Azure AI Search çözümü oluşturma'daki adımları izleyin. bir işlev uygulaması oluşturduktan sonra dizini, dizin oluşturucuyu ve özel beceriyi güncelleştireceksiniz.

Azure işlev uygulaması oluşturma

İşlev uygulamanız için istediğiniz dili ve teknolojileri seçebilirsiniz. Uygulamanın özel metin sınıflandırma uç noktasına JSON geçirebilmesi gerekir, örneğin:

{
    "displayName": "Extracting custom text classification", 
    "analysisInput": {
        "documents": [
            {
                "id": "1", 
                "language": "en-us", 
                "text": "This film takes place during the events of Get Smart. Bruce and Lloyd have been testing out an invisibility cloak, but during a party, Maraguayan agent Isabelle steals it for El Presidente. Now, Bruce and Lloyd must find the cloak on their own because the only non-compromised agents, Agent 99 and Agent 86  are in Russia"
            }
        ]
      }, 
    "tasks": [
        {
        "kind": "CustomMultiLabelClassification", 
        "taskName": "Multi Label Classification", 
        "parameters": {
            "project-name": "movie-classifier", 
            "deployment-name": "test-release"}
        }
    ]
}

Ardından modelden JSON yanıtını işleyin, örneğin:

{
  "jobId": "be1419f3-61f8-481d-8235-36b7a9335bb7",
  "lastUpdatedDateTime": "2022-06-13T16:24:27Z",
  "createdDateTime": "2022-06-13T16:24:26Z",
  "expirationDateTime": "2022-06-14T16:24:26Z",
  "status": "succeeded",
  "errors": [],
  "displayName": "Extracting custom text classification",
  "tasks": {
    "completed": 1,
    "failed": 0,
    "inProgress": 0,
    "total": 1,
    "items": [
      {
        "kind": "CustomMultiLabelClassificationLROResults",
        "taskName": "Multi Label Classification",
        "lastUpdateDateTime": "2022-06-13T16:24:27.7912131Z",
        "status": "succeeded",
        "results": {
          "documents": [
            {
              "id": "1",
              "class": [
                {
                  "category": "Action",
                  "confidenceScore": 0.99
                },
                {
                  "category": "Comedy",
                  "confidenceScore": 0.96
                }
              ],
              "warnings": []
            }
          ],
          "errors": [],
          "projectName": "movie-classifier",
          "deploymentName": "test-release"
        }
      }
    ]
  }
}

İşlev daha sonra yapay zeka aramasında özel beceri kümesine yapılandırılmış bir JSON iletisi döndürür, örneğin:

[{"category": "Action", "confidenceScore": 0.99}, {"category": "Comedy", "confidenceScore": 0.96}]

İşlev uygulamasının bilmesi gereken beş şey vardır:

  1. Sınıflandırılacak metin.
  2. Eğitilen özel metin sınıflandırması dağıtılan modelinizin uç noktası.
  3. Özel metin sınıflandırma projesinin birincil anahtarı.
  4. Proje adı.
  5. Dağıtım adı.

Sınıflandırılacak metin, AI Search'teki özel beceri kümesinden işleve giriş olarak geçirilir. Kalan dört öğe Language Studio'da bulunabilir.

Tahmin uç noktasının kopyalandığı yeri gösteren ekran görüntüsü.

Uç nokta ve dağıtım adı, model dağıtma bölmesindedir.

Dil hizmetleri için birincil anahtarın kopyalandığı yeri gösteren ekran görüntüsü.

Proje adı ve birincil anahtar, proje ayarları bölmesindedir.

Azure AI Search çözümünüzü güncelleştirme

Azure portalında arama dizininizi zenginleştirmek için yapmanız gereken üç değişiklik vardır:

  1. Özel metin sınıflandırması zenginleştirmesini depolamak için dizininize bir alan eklemeniz gerekir.
  2. İşlev uygulamanızı sınıflandıracak metinle çağırmak için özel bir beceri kümesi eklemeniz gerekir.
  3. Beceri kümesindeki yanıtı dizine eşlemeniz gerekir.

Var olan bir dizine alan ekleme

Azure portalında AI Search kaynağınıza gidin, dizini seçin ve JSON'ı şu biçimde ekleyeceksiniz:

{
  "name": "classifiedtext",
  "type": "Collection(Edm.ComplexType)",
  "analyzer": null,
  "synonymMaps": [],
  "fields": [
    {
      "name": "category",
      "type": "Edm.String",
      "facetable": true,
      "filterable": true,
      "key": false,
      "retrievable": true,
      "searchable": true,
      "sortable": false,
      "analyzer": "standard.lucene",
      "indexAnalyzer": null,
      "searchAnalyzer": null,
      "synonymMaps": [],
      "fields": []
    },
    {
      "name": "confidenceScore",
      "type": "Edm.Double",
      "facetable": true,
      "filterable": true,
      "retrievable": true,
      "sortable": false,
      "analyzer": null,
      "indexAnalyzer": null,
      "searchAnalyzer": null,
      "synonymMaps": [],
      "fields": []
    }
  ]
}

Bu JSON, sınıfı aranabilir bir alanda depolamak için dizine bileşik bir category alan ekler. İkinci confidenceScore alan, güvenilirlik yüzdesini bir çift alanda depolar.

Özel beceri kümesini düzenleme

Azure portalında beceri kümesini seçin ve şu biçimde JSON ekleyin:

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "name": "Genre Classification",
  "description": "Identify the genre of your movie from its summary",
  "context": "/document",
  "uri": "https://learn-acs-lang-serives.cognitiveservices.azure.com/language/analyze-text/jobs?api-version=2022-05-01",
  "httpMethod": "POST",
  "timeout": "PT30S",
  "batchSize": 1,
  "degreeOfParallelism": 1,
  "inputs": [
    {
      "name": "lang",
      "source": "/document/language"
    },
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "text",
      "targetName": "class"
    }
  ],
  "httpHeaders": {}
}

Bu WebApiSill beceri tanımı, bir belgenin dilinin ve içeriğinin işlev uygulamasına giriş olarak geçirildiğini belirtir. Uygulama adlı classJSON metnini döndürür.

İşlev uygulamasından gelen çıkışı dizine eşleme

Son değişiklik, çıkışı dizine eşlemektir. Azure portalında dizin oluşturucuyu seçin ve JSON'ı düzenleyerek yeni bir çıkış eşlemesi oluşturun:

{
  "sourceFieldName": "/document/class",
  "targetFieldName": "classifiedtext"
}

Dizin oluşturucu artık işlev uygulamasından document/class gelen çıkışın alanda classifiedtext depolanması gerektiğini biliyor. Bu bileşik alan olarak tanımlandığından işlev uygulamasının ve confidenceScore alanı içeren bir JSON dizisi döndürmesi category gerekir.

Artık özel sınıflandırılmış metniniz için zenginleştirilmiş arama dizininde arama yapabilirsiniz.