Kognitiv kompetens för anpassad entitetssökning

Den anpassade entitetssökningsfärdigheten används för att identifiera eller identifiera entiteter som du definierar. Under körningen av kunskapsuppsättningen söker färdigheten efter text från en anpassad, användardefinierad lista med ord och fraser. Kunskapen använder den här listan för att märka matchande entiteter som finns i källdokument. Färdigheten stöder också en viss grad av fuzzy-matchning som kan tillämpas för att hitta matchningar som är liknande men inte exakta.

Kommentar

Den här färdigheten är inte bunden till ett Azure AI-tjänst-API, men kräver en Azure AI-tjänstnyckel för att tillåta fler än 20 transaktioner. Den här färdigheten mäts av Azure AI Search.

@odata.type

Microsoft.Skills.Text.CustomEntityLookupSkill

Databegränsningar

  • Den maximala indatapoststorleken som stöds är 256 MB. Om du behöver dela upp dina data innan du skickar dem till den anpassade entitetssökningsfärdigheten bör du överväga att använda färdigheten Textdelning. Om du använder en textdelningsfärdighet anger du sidlängden till 5 000 för bästa prestanda.
  • Den maximala storleken för den anpassade entitetsdefinitionen är 10 MB om den tillhandahålls som en extern fil, som anges via parametern "entitiesDefinitionUri".
  • Om entiteterna definieras infogade med parametern "inlineEntitiesDefinition" är den maximala storleken 10 KB.

Kompetensparametrar

Parametrar är skiftlägeskänsliga.

Parameternamn beskrivning
entitiesDefinitionUri Sökväg till en extern JSON- eller CSV-fil som innehåller all måltext som ska matchas mot. Den här entitetsdefinitionen läse i början av en indexerarekörning. uppdateringar av den här filen i mitten av körningen kommer inte att genomföras förrän efterföljande körningar. Den här filen måste vara tillgänglig via HTTPS. Se Format för anpassad entitetsdefinition nedan för förväntat CSV- eller JSON-schema.
inlineEntitiesDefinition Infogade JSON-entitetsdefinitioner. Den här parametern ersätter parametern entitiesDefinitionUri om den finns. Högst 10 kB konfiguration får anges infogat. Se Anpassad entitetsdefinition nedan för förväntat JSON-schema.
defaultLanguageCode (Valfritt) Språkkod för den indatatext som används för att tokenisera och avgränsa indatatext. Följande språk stöds: da, de, en, es, fi, fr, it, pt. Standardvärdet är engelska (en). Om du skickar ett languagecode-countrycode format används endast den languagecode del av formatet.
globalDefaultCaseSensitive (Valfritt) Standardvärde för skiftlägeskänsligt för färdigheten. Om defaultCaseSensitive värdet för en entitet inte anges blir det här värdet värdet för den defaultCaseSensitive entiteten.
globalDefaultAccentSensitive (Valfritt) Standardvärde för accentkänsligt för färdigheten. Om defaultAccentSensitive värdet för en entitet inte anges blir det här värdet värdet för den defaultAccentSensitive entiteten.
globalDefaultFuzzyEditDistance (Valfritt) Standardvärde för fuzzy-redigeringsavstånd för färdigheten. Om defaultFuzzyEditDistance värdet för en entitet inte anges blir det här värdet värdet för den defaultFuzzyEditDistance entiteten.

Kunskapsindata

Indatanamn beskrivning
text Texten som ska analyseras.
languageCode Valfritt. Standard är "en".

Kunskapsutdata

Utdatanamn beskrivning
entities En matris med komplexa typer som innehåller följande fält:
  • "name": Entiteten på den översta nivån. det representerar det "normaliserade" formuläret.
  • "id": En unik identifierare för entiteten enligt definitionen i "Anpassad entitetsdefinition".
  • "description": Entitetsbeskrivning som definierats av användaren i "Anpassat entitetsdefinitionsformat".
  • "type": Entitetstyp som definierats av användaren i "Anpassat entitetsdefinitionsformat".
  • "subtype": Entitetsundertyp som definierats av användaren i "Anpassat entitetsdefinitionsformat".
  • "matches": En matris med komplexa typer som innehåller:
    • "text" från källdokumentet
    • "offset" plats där matchningen hittades.
    • "length" av texten mätt i tecken
    • "matchDistance" eller antalet tecken som skiljer sig mellan matchningen och entiteten "name".

Anpassat entitetsdefinitionsformat

Det finns tre metoder för att tillhandahålla listan över anpassade entiteter till den anpassade entitetssökningsfärdigheten:

  • . CSV-fil (UTF-8-kodad)
  • . JSON-fil (UTF-8-kodad)
  • Infogat i kunskapsdefinitionen

Om definitionsfilen finns i en . CSV eller . JSON-fil, ange den fullständiga sökvägen i parametern "entitiesDefinitionUri". Filen laddas ned i början av varje indexeringskörning. Den måste vara tillgänglig tills indexeraren stoppas.

Om du använder en infogad definition anger du den under kompetensparametern "inlineEntitiesDefinition".

Kommentar

Indexerare stöder specialiserade parsningslägen för JSON- och CSV-filer. När du använder den anpassade uppslagsfärdigheten för entitet behåller du "parsingMode" inställt på "standard". Färdigheten förväntar sig JSON och CSV i ett unparsed-tillstånd.

CSV-format

Du kan ange definitionen av de anpassade entiteter som ska sökas efter i en CSV-fil (Kommaavgränsat värde) genom att ange sökvägen till filen och ange den i kompetensparametern "entitiesDefinitionUri". Sökvägen ska finnas på en https-plats. Definitionsfilen kan vara upp till 10 MB stor.

CSV-formatet är enkelt. Varje rad representerar en unik entitet enligt nedan:

Bill Gates, BillG, William H. Gates
Microsoft, MSFT
Satya Nadella 

I det här fallet finns det tre entiteter som kan returneras (Bill Gates, Satya Nadella, Microsoft). Alias följer efter huvudentiteten. En matchning på ett alias paketeras under den primära entiteten. Om strängen "William H. Gates" till exempel hittas i ett dokument returneras en matchning för entiteten "Bill Gates".

JSON-format

Du kan även ange definitionen av de anpassade entiteter som ska sökas efter i en JSON-fil. JSON-formatet ger dig lite mer flexibilitet eftersom du kan definiera matchande regler per term. Du kan till exempel ange det fuzzy matchande avståndet (Damerau-Levenshtein distance) för varje term eller om matchningen ska vara skiftlägeskänslig eller inte.

Precis som med CSV-filer måste du ange sökvägen till JSON-filen och ange den i kompetensparametern "entitiesDefinitionUri". Sökvägen ska finnas på en https-plats. Definitionsfilen kan vara upp till 10 MB stor.

Den mest grundläggande JSON-anpassade entitetslistan kan vara en lista över entiteter som ska matchas:

[ 
    { 
        "name" : "Bill Gates"
    }, 
    { 
        "name" : "Microsoft"
    }, 
    { 
        "name" : "Satya Nadella"
    }
]

Mer komplexa definitioner kan ge ett användardefinierat ID, beskrivning, typ, undertyp och alias. Om en aliasterm matchas returneras även entiteten:

[ 
    { 
        "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 }
        ]
    } 
] 

Tabellerna nedan beskriver de konfigurationsparametrar som du kan ange när du definierar anpassade entiteter:

Fältnamn beskrivning
name Entitetsbeskrivningen på den översta nivån. Matchningar i kunskapsutdata grupperas med det här namnet och bör representera den "normaliserade" formen av texten som hittas.
description (Valfritt) Det här fältet kan användas som genomströmning för anpassade metadata om de matchade texterna. Värdet för det här fältet visas med varje matchning av entiteten i kunskapsutdata.
type (Valfritt) Det här fältet kan användas som genomströmning för anpassade metadata om de matchade texterna. Värdet för det här fältet visas med varje matchning av entiteten i kunskapsutdata.
subtype (Valfritt) Det här fältet kan användas som genomströmning för anpassade metadata om de matchade texterna. Värdet för det här fältet visas med varje matchning av entiteten i kunskapsutdata.
id (Valfritt) Det här fältet kan användas som genomströmning för anpassade metadata om de matchade texterna. Värdet för det här fältet visas med varje matchning av entiteten i kunskapsutdata.
caseSensitive (Valfritt) Standardvärdet är falskt. Booleskt värde som anger om jämförelser med entitetsnamnet ska vara känsliga för teckenhölje. Exempelfallsokänsliga matchningar av "Microsoft" kan vara: microsoft, microSoft, MICROSOFT
accentSensitive (Valfritt) Standardvärdet är falskt. Booleskt värde som anger om accentbegränsade och obetalda bokstäver som "é" och "e" ska vara identiska.
fuzzyEditDistance (Valfritt) Standardvärdet är 0. Maximalt värde på 5. Anger det acceptabla antalet avvikande tecken som fortfarande skulle utgöra en matchning med entitetsnamnet. Minsta möjliga fuzziness för en viss matchning returneras. Om redigeringsavståndet till exempel är inställt på 3 skulle "Windows 10" fortfarande matcha "Windows", "Windows10" och "windows 7".
När skiftlägeskänsligheten är inställd på false räknas skiftlägesskillnader INTE mot fuzzinesstolerans, men annars gör det.
defaultCaseSensitive (Valfritt) Ändrar standardvärdet för skiftlägeskänslighet för den här entiteten. Den kan användas för att ändra standardvärdet för alla alias caseSensitive-värden.
defaultAccentSensitive (Valfritt) Ändrar standardvärdet för accentkänslighet för den här entiteten. Den kan användas för att ändra standardvärdet för alla aliasaccenterKänsliga värden.
defaultFuzzyEditDistance (Valfritt) Ändrar standardvärdet för fuzzy-redigeringsavstånd för den här entiteten. Den kan användas för att ändra standardvärdet för alla alias fuzzyEditDistance-värden.
aliases (Valfritt) En matris med komplexa objekt som kan användas för att ange alternativa stavningar eller synonymer till rotentitetsnamnet.
Aliasegenskaper beskrivning
text Alternativ stavning eller representation av ett målentitetsnamn.
caseSensitive (Valfritt) Fungerar på samma sätt som parametern "caseSensitive" för rotentiteten ovan, men gäller endast för det här aliaset.
accentSensitive (Valfritt) Fungerar på samma sätt som parametern "accentSensitiv" för rotentiteten ovan, men gäller endast för det här aliaset.
fuzzyEditDistance (Valfritt) Fungerar på samma sätt som parametern "fuzzyEditDistance" för rotentiteten ovan, men gäller endast för det här aliaset.

Infogat format

I vissa fall kan det vara enklare att bädda in den anpassade entitetsdefinitionen så att den är infogad med kunskapsdefinitionen. Du kan använda samma JSON-format som det som beskrivs ovan, förutom att det ingår i kunskapsdefinitionen. Endast konfigurationer som är mindre än 10 KB i storlek (serialiserad storlek) kan definieras infogade.

Exempel på kompetensdefinition

En exempel på färdighetsdefinition med ett infogat format visas nedan:

  {
    "@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"
      }
    ]
  }

Du kan också peka på en definitionsfil för externa entiteter. En exempel på färdighetsdefinition med formatet entitiesDefinitionUri visas nedan:

  {
    "@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"
      }
    ]
  }

Exempelindexdefinition

Det här avsnittet innehåller en exempelindexdefinition. Både "entiteter" och "matchningar" är matriser av komplexa typer. Du kan ha flera entiteter per dokument och flera matchningar för varje entitet.

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

Exempel på inmatade data

{
    "values": [
      {
        "recordId": "1",
        "data":
           {
             "text": "The company, Microsoft, was founded by Bill Gates. Microsoft's gaming console is called Xbox",
             "languageCode": "en"
           }
      }
    ]
}

Exempelutdata

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

Varningar

"Reached maximum capacity for matches, skipping all further duplicate matches."

Den här varningen genereras om antalet identifierade matchningar är större än det högsta tillåtna. Inga fler dubbletter returneras. Om du behöver ett högre tröskelvärde kan du skicka in ett supportärende för att få hjälp med ditt enskilda användningsfall.

Se även