將語言分析器新增至 Azure AI 搜尋服務引中的字串欄位
「語言分析器」是特定類型的文字分析器,能使用目標語言的語言規則來執行語彙分析。 每個可搜尋的欄位都有 analyzer 屬性。 如果您的內容包含已翻譯的字串 (例如適用於英文和中文文字的個別欄位),您可以在每個欄位上指定語言分析器,以存取由那些分析器所提供的豐富語言功能。
使用語言分析器的時機
當您知道文字或句子結構會增加文字剖析的值時,您應該考慮語言分析器。 常見的範例是不規則的動詞形式,(「bring」和「brought」) 或複數名詞 (「mice」和「mouse」) 的關聯。 如果沒有語言感知,系統會單獨在實體特性上剖析這些字串,而無法注意到連結。 由於大型文字區塊較可能擁有此內容,因此由描述、評論或摘要組成的欄位是語言分析器的良好候選項目。
當內容包含非西歐語言字串時,您也應該考慮語言分析器。 雖然預設分析器 (Standard Lucene) 與語言無關,但使用空格和特殊字元的概念 (連字號和斜線) 來分隔字串,相對於非西歐語言,更適用於西歐語言。
例如,在中文、日文、韓文 (CJK) 和其他亞洲語言中,不需要使用空格作為單字分隔符號。 請考慮下列日文字串。 因為沒有空格,所以語言無關的分析器可能會將整個字串分析為一個標記,事實上該字串其實是片語。
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
在上述範例中,成功的查詢必須包含完整權杖,或使用尾碼萬用字元的部分權杖,因而造成非自然且限制搜尋體驗。
更好的體驗是搜尋個別單字:明るい (Bright)、私たちの (Our),銀河系 (Galaxy)。 使用 Azure AI 搜尋服務中可用的其中一個日文分析器,更可能解除鎖定此行為,因為這些分析器更適合將文字區塊分割成目的語言中有意義的單字。
比較 Lucene 和 Microsoft Analyzers
Azure AI 搜尋服務支援由 Lucene 所支援的 35 種語言分析器,以及由專屬的 Microsoft 自然語言處理技術所支援的 50 種語言分析器 (此技術同樣用於 Office 和 Bing 中)。
一些開發人員可能偏好使用更熟悉、簡單且開放原始碼的 Lucene 解決方案。 Lucene 語言分析器速度較快,但 Microsoft 分析器具備進階功能,例如詞形歸併還原、複合字詞拆分 (適用於德文、丹麥文、荷蘭文、瑞典文、挪威文、愛沙尼亞文、芬蘭文、匈牙利文、斯洛伐克文等語言) 和實體辨識 (URL、電子郵件、日期、數字)。 如果可以,您應該進行 Microsoft 和 Lucene 分析器的比較,以決定哪一個比較適合。 您可以使用分析 API 來查看使用特定分析器從指定文字產生的權杖。
使用 Microsoft 分析器編製索引,平均速度約比其 Lucene 對等項目慢兩到三倍,視語言而定。 平均大小的查詢應不至大幅影響搜尋效能。
英文分析器
預設分析器是標準 Lucene,其可用於英文,但效果較不如 Lucene 的英文分析器或 Microsoft 的英文分析器。
Lucene 的英文分析器能擴充標準分析器。 它會從字詞中移除所有格 (結尾的 's)、為每個 Porter 詞幹演算法套用詞幹,然後移除英文停用字詞。
Microsoft 的英文分析器會執行詞形的歸併還原,而不是詞幹分析。 這表示其可以把變形和不規則的字詞形式處理得更好,以得到相關性更強的搜尋結果。
如何指定語言分析器
在索引建立期間設定分析器,再載入資料。
在欄位定義中,請確定欄位屬性為「可搜尋」,且類型為 Edm.String。
從支援的分析器清單中,將 "analyzer" 屬性設定為其中一個語言分析器。
"analyzer" 屬性是唯一會接受語言分析器的屬性,而且用於編制索引和查詢。 其他分析器相關屬性 ("searchAnalyzer" 和 "indexAnalyzer") 不接受語言分析器。
無法自訂語言分析器。 如果分析器不符合您的需求,請使用 microsoft_language_tokenizer 或 microsoft_language_stemming_tokenizer 建立 自訂分析器,然後新增篩選準則以進行預先和後置權杖化處理。
下列範例說明索引中的語言分析器規格:
{
"name": "hotels-sample-index",
"fields": [
{
"name": "Description",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
{
"name": "Description_fr",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "fr.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
如需建立索引和設定欄位屬性的詳細資訊,請參閱建立索引 (REST)。 如需文字分析的詳細資訊,請參閱 Azure AI 搜尋服務中的分析器。
支援的語言分析器
以下是支援的語言清單與 Lucene 和 Microsoft 的分析器名稱。
語言 | Microsoft 分析器名稱 | Lucene 分析器名稱 |
---|---|---|
阿拉伯文 | ar.microsoft | ar.lucene |
亞美尼亞文 | hy.lucene | |
孟加拉文 | bn.microsoft | |
巴斯克文 | eu.lucene | |
保加利亞文 | bg.microsoft | bg.lucene |
加泰蘭文 | ca.microsoft | ca.lucene |
簡體中文 | zh-Hans.microsoft | zh-Hans.lucene |
繁體中文 | zh-Hant.microsoft | zh-Hant.lucene |
克羅埃西亞文 | hr.microsoft | |
捷克文 | cs.microsoft | cs.lucene |
丹麥文 | da.microsoft | da.lucene |
荷蘭文 | nl.microsoft | nl.lucene |
英語 | en.microsoft | en.lucene |
愛沙尼亞文 | et.microsoft | |
芬蘭文 | fi.microsoft | fi.lucene |
法文 | fr.microsoft | fr.lucene |
加利西亞文 | gl.lucene | |
德文 | de.microsoft | de.lucene |
希臘文 | el.microsoft | el.lucene |
古吉拉特文 | gu.microsoft | |
Hebrew | he.microsoft | |
印度文 | hi.microsoft | hi.lucene |
匈牙利文 | hu.microsoft | hu.lucene |
冰島文 | is.microsoft | |
印尼文 (Bahasa) | id.microsoft | id.lucene |
愛爾蘭文 | ga.lucene | |
義大利文 | it.microsoft | it.lucene |
日文 | ja.microsoft | ja.lucene |
坎那達文 | kn.microsoft | |
韓文 | ko.microsoft | ko.lucene |
拉脫維亞文 | lv.microsoft | lv.lucene |
立陶宛文 | lt.microsoft | |
馬來亞拉姆文 | ml.microsoft | |
馬來文 (拉丁) | ms.microsoft | |
馬拉地文 | mr.microsoft | |
挪威文 | nb.microsoft | no.lucene |
波斯文 | fa.lucene | |
波蘭文 | pl.microsoft | pl.lucene |
葡萄牙文 (巴西) | pt-Br.microsoft | pt-Br.lucene |
葡萄牙文 (葡萄牙) | pt-Pt.microsoft | pt-Pt.lucene |
旁遮普文 | pa.microsoft | |
羅馬尼亞文 | ro.microsoft | ro.lucene |
俄文 | ru.microsoft | ru.lucene |
塞爾維亞文 (斯拉夫) | sr-cyrillic.microsoft | |
塞爾維亞文 (拉丁) | sr-latin.microsoft | |
斯洛伐克文 | sk.microsoft | |
斯洛維尼亞文 | sl.microsoft | |
西班牙文 | es.microsoft | es.lucene |
瑞典文 | sv.microsoft | sv.lucene |
坦米爾文 | ta.microsoft | |
泰盧固文 | te.microsoft | |
泰文 | th.microsoft | th.lucene |
土耳其文 | tr.microsoft | tr.lucene |
烏克蘭文 | uk.microsoft | |
烏都文 | ur.microsoft | |
越南文 | vi.microsoft |
所有名稱加上 Lucene 註解的分析器都是由 Apache Lucene 的語言分析器 \(英文\) 所提供。