Lägga till språkanalysverktyg i strängfält i ett Azure AI Search-index

Ett språkanalysverktyg är en specifik typ av textanalysator som utför lexikal analys med hjälp av målspråkets språkregler. Varje sökbart strängfält har en analysegenskap . Om innehållet består av översatta strängar, till exempel separata fält för engelsk och kinesisk text, kan du ange språkanalysverktyg för varje fält för att få åtkomst till de omfattande språkfunktionerna i analysverktygen.

När du ska använda en språkanalys

Du bör överväga ett språkanalysverktyg när medvetenhet om ord- eller meningsstruktur lägger till värde i textparsing. Ett vanligt exempel är associationen av oregelbundna verbformer ("bring" och "brought) eller plural substantiv ("möss" och "mus"). Utan språklig medvetenhet parsas dessa strängar enbart på fysiska egenskaper, vilket inte lyckas fånga anslutningen. Eftersom stora textsegment är mer benägna att ha det här innehållet är fält som består av beskrivningar, recensioner eller sammanfattningar bra kandidater för en språkanalys.

Du bör också tänka på språkanalyserare när innehållet består av icke-västerländska språksträngar. Standardanalysen (Standard Lucene) är språkagnostisk, men begreppet att använda blanksteg och specialtecken (bindestreck och snedstreck) för att separera strängar är mer tillämpligt för västerländska språk än icke-västerländska.

På till exempel kinesiska, japanska, koreanska (CJK) och andra asiatiska språk är ett blanksteg inte nödvändigtvis en ordgränsare. Överväg följande japanska sträng. Eftersom den inte har några blanksteg skulle en språkoberoende analysator förmodligen analysera hela strängen som en token, när strängen i själva verket är en fras.

これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)

I exemplet ovan måste en lyckad fråga innehålla den fullständiga token eller en partiell token med ett suffix jokertecken, vilket resulterar i en onaturlig och begränsande sökupplevelse.

En bättre upplevelse är att söka efter enskilda ord: 明るい (Bright), 私たちの (Vår), 銀河系 (Galaxy). Att använda en av de japanska analysverktygen som är tillgängliga i Azure AI Search är mer sannolikt att låsa upp det här beteendet eftersom analysverktygen är bättre rustade för att dela upp textsegmentet i meningsfulla ord på målspråket.

Jämföra Lucene och Microsoft Analyzeers

Azure AI Search stöder 35 språkanalysverktyg som backas upp av Lucene och 50 språkanalysverktyg som backas upp av proprietär Microsofts teknik för bearbetning av naturligt språk som används i Office och Bing.

Vissa utvecklare kanske föredrar den mer välbekanta, enkla lösningen med öppen källkod i Lucene. Lucene-språkanalyserare är snabbare, men Microsoft-analysverktygen har avancerade funktioner som lemmatisering, orddecompounding (på språk som tyska, danska, nederländska, svenska, norska, estniska, finska, ungerska, slovakiska) och entitetsigenkänning (URL:er, e-postmeddelanden, datum, siffror). Om möjligt bör du köra jämförelser av både Microsoft- och Lucene-analysverktygen för att avgöra vilken som passar bättre. Du kan använda Analysera API för att se de token som genereras från en viss text med hjälp av en specifik analysator.

Indexering med Microsoft-analysverktyg är i genomsnitt två till tre gånger långsammare än deras Lucene-motsvarigheter, beroende på språket. Sökprestanda bör inte påverkas avsevärt för genomsnittliga storleksfrågor.

Engelska analysverktyg

Standardanalysatorn är Standard Lucene, som fungerar bra för engelska, men kanske inte lika bra som Lucene:s engelska analysator eller Microsofts engelska analysator.

  • Lucene:s engelska analysverktyg utökar standardanalysatorn. Den tar bort possessives (avslutande ' s) från ord, tillämpar härstamning enligt Porter Stemming-algoritmen och tar bort engelska stoppord.

  • Microsofts engelska analysverktyg utför lemmatisering i stället för att härstamma. Det innebär att den kan hantera böjda och oregelbundna ordformer mycket bättre, vilket resulterar i mer relevanta sökresultat.

Så här anger du en språkanalys

Ange analysatorn när indexet skapas innan det läses in med data.

  1. I fältdefinitionen kontrollerar du att fältet är "sökbart" och är av typen Edm.String.

  2. Ange egenskapen "analyzer" till en av språkanalysverktygen från listan med analysverktyg som stöds.

    Egenskapen "analyzer" är den enda egenskapen som accepterar ett språkanalysverktyg och används för både indexering och frågor. Andra analysverktygsrelaterade egenskaper ("searchAnalyzer" och "indexAnalyzer") accepterar inte en språkanalysator.

Språkanalysverktyg kan inte anpassas. Om en analysator inte uppfyller dina krav skapar du en anpassad analysator med microsoft_language_tokenizer eller microsoft_language_stemming_tokenizer och lägger sedan till filter för bearbetning före och efter tokenisering.

I följande exempel visas en språkanalysspecifikation i ett index:

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

Mer information om hur du skapar ett index och anger fältegenskaper finns i Skapa index (REST). Mer information om textanalys finns i Analyserare i Azure AI Search.

Språkanalysverktyg som stöds

Nedan visas listan över språk som stöds, med Lucene- och Microsoft Analyzer-namn.

Språk Microsoft Analyzer-namn Lucene Analyzer-namn
Arabiska ar.microsoft ar.lucene
Armeniska hy.lucene
Bangla bn.microsoft
Baskiska eu.lucene
Bulgariska bg.microsoft bg.lucene
Katalanska ca.microsoft ca.lucene
Kinesiska (förenklad) zh-Hans.microsoft zh-Hans.lucene
Kinesiska (traditionell) zh-Hant.microsoft zh-Hant.lucene
Kroatiska hr.microsoft
Tjeckiska cs.microsoft cs.lucene
Danska da.microsoft da.lucene
Nederländska nl.microsoft nl.lucene
Engelska en.microsoft en.lucene
Estniska et.microsoft
Finska fi.microsoft fi.lucene
Franska fr.microsoft fr.lucene
Galiciska gl.lucene
Tyska de.microsoft de.lucene
Grekiska el.microsoft el.lucene
Gujarati gu.microsoft
Hebreiska he.microsoft
Hindi hi.microsoft hi.lucene
Ungerska hu.microsoft hu.lucene
Isländska is.microsoft
Indonesiska (Bahasa) id.microsoft id.lucene
Iriska ga.lucene
Italienska it.microsoft it.lucene
Japanska ja.microsoft ja.lucene
Kannada kn.microsoft
Koreanska ko.microsoft ko.lucene
Lettiska lv.microsoft lv.lucene
Litauiska lt.microsoft
Malayalam ml.microsoft
Malay (latinsk) ms.microsoft
Marathi mr.microsoft
Norska nb.microsoft no.lucene
Persiska fa.lucene
Polska pl.microsoft pl.lucene
Portugisiska (Brasilien) pt-Br.microsoft pt-Br.lucene
Portugisiska (Portugal) pt-Pt.microsoft pt-Pt.lucene
Punjabi pa.microsoft
Rumänska ro.microsoft ro.lucene
Ryska ru.microsoft ru.lucene
Serbiska (kyrillisk) sr-cyrillic.microsoft
Serbiska (latin) sr-latin.microsoft
Slovakiska sk.microsoft
Slovenska sl.microsoft
Spanska es.microsoft es.lucene
Svenska sv.microsoft sv.lucene
Tamilska ta.microsoft
Telugu te.microsoft
Thailändska th.microsoft th.lucene
Turkiska tr.microsoft tr.lucene
Ukrainska uk.microsoft
Urdu your.microsoft
Vietnamesiska vi.microsoft

Alla analysverktyg med namn som kommenterats med Lucene drivs av Apache Lucene:s språkanalysverktyg.

Se även