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

En språkanalys är en specifik typ av textanalys som utför lexikal analys med hjälp av målspråkets språkregler. Varje sökbart strängfält har en analyzer-egenskap . 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 ett språkanalysverktyg

Du bör överväga en språkanalys när medvetenhet om ord- eller meningsstruktur ger värde till 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å överväga språkanalysverktyg 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 separata 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 hjälp av ett suffix jokertecken, vilket resulterar i en onaturlig och begränsad 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 Cognitive 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 Cognitive Search stöder 35 språkanalysverktyg som stöds av Lucene och 50 språkanalysverktyg som backas upp av patentskyddad Microsoft-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åkanalysverktyg är snabbare, men Microsoft-analysverktygen har avancerade funktioner, till exempel lemmatisering, orddecompounding (på språk som tyska, danska, nederländska, svenska, norska, estniska, 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 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 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 nämnvärt för frågor med genomsnittlig storlek.

Engelska analysverktyg

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

  • 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 ett språkanalysverktyg

Ange analysatorn när index skapas innan den 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 över analysverktyg som stöds.

    Egenskapen "analyzer" är den enda egenskapen som accepterar en språkanalys 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 en analysator inte uppfyller dina krav skapar du en anpassad analys 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 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 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 (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 kommenterats med Lucene drivs av Apache Lucene:s språkanalysverktyg.

Se även