自定義實體查閱認知技能
自定義 實體查閱 技能可用來偵測或辨識您定義的實體。 在技能集執行期間,技能會從自定義的使用者定義單字和片語清單尋找文字。 技能會使用此清單來標記來源檔內找到的任何相符實體。 技能也支援一定程度的模糊比對,可套用以尋找類似但並非完全相符的相符專案。
注意
此技能不會系結至 Azure AI 服務 API,但需要 Azure AI 服務密鑰,才能允許超過 20 筆交易。 此技能 是由 Azure AI 搜尋計量。
@odata.type
Microsoft.Skills.Text.CustomEntityLookupSkill
資料限制
- 支援的輸入記錄大小上限為 256 MB。 如果您需要在將數據傳送至自定義實體查閱技能之前中斷數據,請考慮使用 文字分割技能。 如果您使用文字分割技能,請將頁面長度設定為 5000 以獲得最佳效能。
- 如果自定義實體定義是以外部檔案的形式提供,則自定義實體定義的大小上限為 10 MB,透過 “entitiesDefinitionUri” 參數指定。
- 如果使用 「inlineEntitiesDefinition」 參數來內嵌定義實體,則大小上限為 10 KB。
技能參數
這些參數會區分大小寫。
參數名稱 | 描述 |
---|---|
entitiesDefinitionUri |
外部 JSON 或 CSV 檔案的路徑,其中包含要比對的所有目標文字。 此實體定義會在索引器執行開始時讀取;在後續執行之前,將不會實現此檔案中期執行的任何更新。 此檔案必須可透過 HTTPS 存取。 如需預期的 CSV 或 JSON 架構,請參閱 下面的自定義實體定義格式 。 |
inlineEntitiesDefinition |
內嵌 JSON 實體定義。 如果存在,此參數會取代 entitiesDefinitionUri 參數。 內嵌提供不超過 10 KB 的設定。 如需預期的 JSON 架構,請參閱 下面的自定義實體定義 。 |
defaultLanguageCode |
(選擇性)用來標記和描述輸入文字之輸入文字的語言代碼。 支援下列語言: da, de, en, es, fi, fr, it, pt 。 預設值為英文 (en )。 如果您傳遞 languagecode-countrycode 格式,則只會 languagecode 使用格式的一部分。 |
globalDefaultCaseSensitive |
(選擇性)技能的預設區分大小寫值。 如果未 defaultCaseSensitive 指定實體的值,這個值將會成為 defaultCaseSensitive 該實體的值。 |
globalDefaultAccentSensitive |
(選擇性)技能的預設區分腔調值。 如果未 defaultAccentSensitive 指定實體的值,這個值將會成為 defaultAccentSensitive 該實體的值。 |
globalDefaultFuzzyEditDistance |
(選擇性)技能的預設模糊編輯距離值。 如果未 defaultFuzzyEditDistance 指定實體的值,這個值將會成為 defaultFuzzyEditDistance 該實體的值。 |
技能輸入
輸入名稱 | 描述 |
---|---|
text |
要分析的文字。 |
languageCode |
選擇性。 預設值為 "en" 。 |
技能輸出
輸出名稱 | 描述 |
---|---|
entities |
包含下列欄位的複雜型別數組:
|
自定義實體定義格式
提供自訂實體清單給自定義實體查閱技能的方法有三種:
- .CSV 檔案 (UTF-8 編碼)
- .JSON 檔案 (UTF-8 編碼)
- 技能定義內的內嵌
如果定義檔位於 中,則為 。CSV 或 。JSON 檔案,提供 「entitiesDefinitionUri」 參數中的完整路徑。 檔案會在每個索引器執行開始時下載。 它必須保持可存取性,直到索引器停止為止。
如果您使用內嵌定義,請在 「inlineEntitiesDefinition」 技能參數下指定它。
注意
索引器支援 JSON 和 CSV 檔案的特殊剖析模式。 使用自定義實體查閱技能時,請將 「parsingMode」 設定為 「default」。。 技能預期 JSON 和 CSV 處於未剖析的狀態。
CSV 格式
您可以提供自定義實體的定義,以在逗號分隔值 (CSV) 檔案中尋找,方法是提供檔案的路徑,並將其設定為 “entitiesDefinitionUri” 技能參數。 路徑應該位於 HTTPs 位置。 定義檔的大小上限為 10 MB。
CSV 格式很簡單。 每一行都代表唯一的實體,如下所示:
Bill Gates, BillG, William H. Gates
Microsoft, MSFT
Satya Nadella
在此情況下,有三個實體可以傳回(比爾·蓋茨、薩蒂亞·納德拉Microsoft)。 別名會跟在主要實體之後。 別名上的相符項目會組合在主要實體之下。 例如,如果在檔中找到 「William H. Gates」 字串,則會傳回 「Bill Gates」 實體的相符專案。
JSON 格式
您也可以提供自定義實體的定義,以在 JSON 檔案中尋找。 JSON 格式可讓您有更多的彈性,因為它可讓您定義每個詞彙的比對規則。 例如,您可以為每個字詞指定模糊比對距離(Damerau-Levenshtein distance),或比對是否應該區分大小寫。
就像 CSV 檔案一樣,您必須提供 JSON 檔案的路徑,並在 “entitiesDefinitionUri” 技能參數中加以設定。 路徑應該位於 HTTPs 位置。 定義檔的大小上限為 10 MB。
最基本的 JSON 自定義實體清單定義可以是符合的實體清單:
[
{
"name" : "Bill Gates"
},
{
"name" : "Microsoft"
},
{
"name" : "Satya Nadella"
}
]
更複雜的定義可以提供使用者定義的標識碼、描述、類型、子類型和別名。 如果符合別名字詞,也會傳回實體:
[
{
"name" : "Bill Gates",
"description" : "Microsoft founder." ,
"aliases" : [
{ "text" : "William H. Gates", "caseSensitive" : false },
{ "text" : "BillG", "caseSensitive" : true }
]
},
{
"name" : "Xbox One",
"type": "Hardware",
"subtype" : "Gaming Device",
"id" : "4e36bf9d-5550-4396-8647-8e43d7564a76",
"description" : "The Xbox One product"
},
{
"name" : "LinkedIn" ,
"description" : "The LinkedIn company",
"id" : "differentIdentifyingScheme123",
"fuzzyEditDistance" : 0
},
{
"name" : "Microsoft" ,
"description" : "Microsoft Corporation",
"id" : "differentIdentifyingScheme987",
"defaultCaseSensitive" : false,
"defaultFuzzyEditDistance" : 1,
"aliases" : [
{ "text" : "MSFT", "caseSensitive" : true }
]
}
]
下表描述定義自訂實體時可設定的組態參數:
欄位名稱 | 描述 |
---|---|
name |
最上層實體描述元。 技能輸出中的相符專案會依此名稱分組,且應該代表所找到文字的「正規化」形式。 |
description |
(選擇性)此欄位可用來做為與相符文字相關之自定義元數據的傳遞。 此欄位的值會顯示在其技能輸出中其實體的每個相符專案。 |
type |
(選擇性)此欄位可用來做為與相符文字相關之自定義元數據的傳遞。 此欄位的值會顯示在其技能輸出中其實體的每個相符專案。 |
subtype |
(選擇性)此欄位可用來做為與相符文字相關之自定義元數據的傳遞。 此欄位的值會顯示在其技能輸出中其實體的每個相符專案。 |
id |
(選擇性)此欄位可用來做為與相符文字相關之自定義元數據的傳遞。 此欄位的值會顯示在其技能輸出中其實體的每個相符專案。 |
caseSensitive |
(選擇性)默認值為 false。 布爾值,表示與實體名稱的比較是否應該區分字元大小寫。 不區分“Microsoft”的範例案例比對可能是:microsoft、microSoft、MICROSOFT |
accentSensitive |
(選擇性)默認值為 false。 布爾值,表示是否應該相同強調和不區分字母,例如 'é' 和 'e'。 |
fuzzyEditDistance |
(選擇性)預設值為 0。 最大值 5。 表示仍會與實體名稱相符的可接受字元數目。 會傳回任何指定相符專案的最小可能模糊。 例如,如果編輯距離設定為 3,“Windows 10” 仍會符合 “Windows”、“Windows10” 和 “windows 7”。 當區分大小寫設為 false 時,大小寫差異不會計入模糊容錯,否則為 。 |
defaultCaseSensitive |
(選擇性)變更此實體的預設區分大小寫值。 它可用來變更所有別名 caseSensitive 值的預設值。 |
defaultAccentSensitive |
(選擇性)變更此實體的預設腔調敏感度值。 它可以用來變更所有別名的預設值不區分值。 |
defaultFuzzyEditDistance |
(選擇性)變更此實體的預設模糊編輯距離值。 它可以用來變更所有別名模糊EditDistance 值的預設值。 |
aliases |
(選擇性)複雜物件的陣列,可用來指定根實體名稱的替代拼字或同義字。 |
別名屬性 | 描述 |
---|---|
text |
某些目標實體名稱的替代拼字或表示法。 |
caseSensitive |
(選擇性)與上述根實體 「caseSensitive」 參數相同,但僅適用於這個別名。 |
accentSensitive |
(選擇性)與上述根實體 「accentSensitive」 參數相同,但僅適用於這個別名。 |
fuzzyEditDistance |
(選擇性)與上述根實體 「fuzzyEditDistance」 參數相同,但僅適用於這個別名。 |
內嵌格式
在某些情況下,內嵌自定義實體定義可能會更方便,使其內嵌於技能定義。 您可以使用與上述格式相同的 JSON 格式,但技能定義中會包含該格式。 只有小於 10 KB 大小的組態(串行化大小)才能內嵌定義。
範例技能定義
使用內嵌格式的範例技能定義如下所示:
{
"@odata.type": "#Microsoft.Skills.Text.CustomEntityLookupSkill",
"context": "/document",
"inlineEntitiesDefinition":
[
{
"name" : "Bill Gates",
"description" : "Microsoft founder." ,
"aliases" : [
{ "text" : "William H. Gates", "caseSensitive" : false },
{ "text" : "BillG", "caseSensitive" : true }
]
},
{
"name" : "Xbox One",
"type": "Hardware",
"subtype" : "Gaming Device",
"id" : "4e36bf9d-5550-4396-8647-8e43d7564a76",
"description" : "The Xbox One product"
}
],
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "entities",
"targetName": "matchedEntities"
}
]
}
或者,您可以指向外部實體定義檔。 使用 格式的 entitiesDefinitionUri
範例技能定義如下所示:
{
"@odata.type": "#Microsoft.Skills.Text.CustomEntityLookupSkill",
"context": "/document",
"entitiesDefinitionUri": "https://myblobhost.net/keyWordsConfig.csv",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "entities",
"targetName": "matchedEntities"
}
]
}
範例索引定義
本節提供範例索引定義。 「實體」和「相符專案」都是複雜類型的陣列。 每個檔可以有多個實體,以及每個實體的多個相符專案。
{
"name": "entities",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"retrievable": true,
"searchable": true,
"sortable": false,
},
{
"name": "id",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"retrievable": true,
"searchable": false,
"sortable": false,
},
{
"name": "description",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"retrievable": true,
"searchable": true,
"sortable": false,
},
{
"name": "type",
"type": "Edm.String",
"facetable": true,
"filterable": true,
"retrievable": true,
"searchable": false,
"sortable": false,
},
{
"name": "subtype",
"type": "Edm.String",
"facetable": true,
"filterable": true,
"retrievable": true,
"searchable": false,
"sortable": false,
},
{
"name": "matches",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "text",
"type": "Edm.String",
"facetable": false,
"filterable": false,
"retrievable": true,
"searchable": true,
"sortable": false,
},
{
"name": "offset",
"type": "Edm.Int32",
"facetable": true,
"filterable": true,
"retrievable": true,
"sortable": false,
},
{
"name": "length",
"type": "Edm.Int32",
"facetable": true,
"filterable": true,
"retrievable": true,
"sortable": false,
},
{
"name": "matchDistance",
"type": "Edm.Double",
"facetable": true,
"filterable": true,
"retrievable": true,
"sortable": false,
}
]
}
]
}
範例輸入數據
{
"values": [
{
"recordId": "1",
"data":
{
"text": "The company, Microsoft, was founded by Bill Gates. Microsoft's gaming console is called Xbox",
"languageCode": "en"
}
}
]
}
範例輸出
{
"values" :
[
{
"recordId": "1",
"data" : {
"entities": [
{
"name" : "Microsoft",
"description" : "This document refers to Microsoft the company",
"id" : "differentIdentifyingScheme987",
"matches" : [
{
"text" : "microsoft",
"offset" : 13,
"length" : 9,
"matchDistance" : 0
},
{
"text" : "Microsoft",
"offset" : 49,
"length" : 9,
"matchDistance" : 0
}
]
},
{
"name" : "Bill Gates",
"description" : "William Henry Gates III, founder of Microsoft.",
"matches" : [
{
"text" : "Bill Gates",
"offset" : 37,
"length" : 10,
"matchDistance" : 0
}
]
}
]
}
}
]
}
警告
"Reached maximum capacity for matches, skipping all further duplicate matches."
如果偵測到的相符項目數目大於允許的最大值,就會發出此警告。 不會再傳回重複的相符專案。 如果您需要較高的閾值,您可以提出 支援票證 ,以取得個別使用案例的協助。
另請參閱
- 內建技能
- 如何定義技能集 (英文)
- 實體辨識技能(搜尋已知實體)