Özel metin sınıflandırma becerisi
Ö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.
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.
Ö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.
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:
- Sınıflandırılacak metin.
- Eğitilen özel metin sınıflandırması dağıtılan modelinizin uç noktası.
- Özel metin sınıflandırma projesinin birincil anahtarı.
- Proje adı.
- 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.
Uç nokta ve dağıtım adı, model dağıtma bölmesindedir.
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:
- Özel metin sınıflandırması zenginleştirmesini depolamak için dizininize bir alan eklemeniz gerekir.
- İşlev uygulamanızı sınıflandıracak metinle çağırmak için özel bir beceri kümesi eklemeniz gerekir.
- 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ı class
JSON 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.