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

Ett språkanalysverktyg är en specifik typ av textanalys som utför lexikal analys med språkreglerna för målspråket. Varje sökbart strängfält har en analyzer-egenskap. Om ditt innehåll består av översatta strängar, till exempel separata fält för engelsk och kinesiska text, kan du ange språkanalysverktyg för varje fält för att få åtkomst till de omfattande språkfunktionerna i dessa analysverktyg.

När du ska använda ett språkanalysverktyg

Du bör överväga ett språkanalysverktyg när medvetenheten om ord- eller meningsstrukturen ger textparsning ett värde. Ett vanligt exempel är associationen mellan oregelbundna verbformer ("bring" och "brought) eller plural substantiv ("mice" och "mouse"). Utan språkmedvetenhet parsas dessa strängar enbart på fysiska egenskaper, vilket inte kan fånga anslutningen. Eftersom stora delar av text är mer sannolika att ha det här innehållet är fält som består av beskrivningar, recensioner eller sammanfattningar lämpliga kandidater för ett språkanalysverktyg.

Du bör också överväga språkanalysverktyg när innehållet består av icke-västliga språksträngar. Standardanalys (Standard Lucene) är språkoberoende, men begreppet att använda blanksteg och specialtecken (bindestreck och snedstreck) för att avgränsa strängar är mer tillämpligt för västliga språk än icke-västiska.

På till exempel kinesiska, japanska, koreanska (CJK) och andra asienspråk är ett blanksteg inte nödvändigtvis en ordavgränsare. Överväg följande japanska sträng. Eftersom den inte har några blanksteg skulle ett språkoberoende analysverktyg 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 skulle en lyckad fråga behöva inkludera den fullständiga token, eller en partiell token med hjälp av ett jokertecken med suffix, vilket resulterar i en onaturlig och begränsad sökupplevelse.

En bättre upplevelse är att söka efter enskilda ord: 明るい (Bright), 私たち experience (Our), 銀河系 (Galaxy). Att använda en av de japanska analysverktyg som är tillgängliga i Cognitive Search är mer troligt att låsa upp det här beteendet eftersom dessa analysverktyg är bättre utrustade med att dela upp text i meningsfulla ord på målspråket.

Jämföra Lucene och Microsoft Analyzers

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

Vissa utvecklare föredrar kanske den mer bekanta, enkla lösningen med öppen källkod av Lucene. Lucene-språkanalysverktyg är snabbare, men Microsoft-analysverktygen har avancerade funktioner, till exempel lemmatisering, ordavsening (på språk som tyska, danska, nederländska, svenska, norska, slovakiska, finish, 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 vilket som passar bäst. Du kan använda Analysera API för att se de token som genereras från en viss text med hjälp av ett specifikt analysverktyg.

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 frågor med genomsnittlig storlek.

Engelska analysverktyg

Standardanalysen är Standard Lucene, som fungerar bra för engelska, men kanske inte lika bra som Lucenes engelska analysverktyg eller Microsofts engelska analysverktyg.

  • Lucenes engelska analysverktyg utökar Standard Analyzer. Den tar bort possessiva (avslutande ) ord, tillämpar ordstamsigenkänning enligt Porter-algoritmen för ordstamsigenkänning och tar bort engelska stoppord.

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

Så här anger du ett språkanalysverktyg

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

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

  2. Ange egenskapen "analyzer" till något av språkanalysverktygen från listan över 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 analyzer-relaterade egenskaper ("searchAnalyzer" och "indexAnalyzer") accepterar inte en språkanalys.

Språkanalysverktyg kan inte anpassas. Om ett analysverktyg inte uppfyller dina krav kan du prova att skapa ett anpassat analysverktyg med microsoft_language_tokenizer eller microsoft_language_stemming_tokenizer och lägga till filter för bearbetning av för- och eftertokenisering.

I följande exempel visas en specifikation för språkanalys 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 Analysverktyg i Azure Cognitive Search.

Språkanalysverktyg som stöds

Nedan visas en lista ö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 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
Malajiska (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 (latinsk) (Serbien) 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 kommenteras med Lucene drivs av Apache Lucenes språkanalysverktyg.

Se även