LinderaCompatible with Milvus 2.5.11+

El tokenizador lindera realiza un análisis morfológico basado en diccionarios. Es una buena opción para idiomas -como el japonés, el coreano y el chino- cuyas palabras no están separadas por espacios.

Requisitos previos

Para utilizar el tokenizador lindera, debe utilizar una versión de Milvus especialmente compilada. Todos los diccionarios deben habilitarse explícitamente durante la compilación para poder utilizarse.

Para habilitar diccionarios específicos, inclúyalos en el comando de compilación:

make milvus TANTIVY_FEATURES=lindera-ipadic,lindera-ko-dic

La lista completa de diccionarios disponibles es: lindera-ipadic, lindera-ipadic-neologd, lindera-unidic, lindera-ko-dic, lindera-cc-cedict.

Por ejemplo, para activar todos los diccionarios:

make milvus TANTIVY_FEATURES=lindera-ipadic,lindera-ipadic-neologd,lindera-unidic,lindera-ko-dic,lindera-cc-cedict

Configuración

Para configurar un analizador que utilice el tokenizador lindera, establezca tokenizer.type en lindera y elija un diccionario con dict_kind.

analyzer_params = {
    "tokenizer": {
      "type": "lindera""dict_kind": "ipadic"
    }
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer",
                new HashMap<String, Object>() {{
                    put("type", "lindera");
                    put("dict_kind", "ipadic");
                }});
analyzerParams = map[string]any{"tokenizer": map[string]any{"type": "lindera", "dict_kind": "ipadic"}}

Parámetro

Descripción

type

El tipo de tokenizador. Se fija en "lindera".

dict_kind

Un diccionario utilizado para definir el vocabulario. Valores posibles:

  • ko-dic: Coreano - Diccionario morfológico coreano(MeCab Ko-dic)

  • ipadic: Japonés - Diccionario morfológico estándar(MeCab IPADIC)

  • ipadic-neologd: Japonés con diccionario de neologismos (ampliado) - Incluye nuevas palabras y nombres propios(IPADIC NEologd)

  • unidic: Japonés UniDic (ampliado) - Diccionario académico estándar con información lingüística detallada(UniDic)

  • cc-cedict: Chino mandarín (tradicional/simplificado) - Diccionario chino-inglés mantenido por la comunidad(CC-CEDICT)

    Nota: Todos los diccionarios deben estar activados durante la compilación de Milvus para que estén disponibles para su uso.

Después de definir analyzer_params, puede aplicarlos a un campo VARCHAR al definir un esquema de colección. Esto permite a Milvus procesar el texto de ese campo utilizando el analizador especificado para una tokenización y filtrado eficientes. Para más detalles, consulte Ejemplo de uso.

Ejemplos

Antes de aplicar la configuración del analizador a su esquema de recopilación, verifique su comportamiento utilizando el método run_analyzer.

Configuración del analizador

analyzer_params = {
    "tokenizer": {
      "type": "lindera",
      "dict_kind": "ipadic"
    }
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer",
                new HashMap<String, Object>() {{
                    put("type", "lindera");
                    put("dict_kind", "ipadic");
                }});
analyzerParams = map[string]any{"tokenizer": map[string]any{"type": "lindera", "dict_kind": "ipadic"}}

Verificación mediante run_analyzerCompatible with Milvus 2.5.11+

from pymilvus import (
    MilvusClient,
)

client = MilvusClient(uri="http://localhost:19530")

# Sample text to analyze
sample_text = "東京スカイツリーの最寄り駅はとうきょうスカイツリー駅で"

# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard analyzer output:", result)
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.service.vector.request.RunAnalyzerReq;
import io.milvus.v2.service.vector.response.RunAnalyzerResp;

ConnectConfig config = ConnectConfig.builder()
        .uri("http://localhost:19530")
        .build();
MilvusClientV2 client = new MilvusClientV2(config);

List<String> texts = new ArrayList<>();
texts.add("東京スカイツリーの最寄り駅はとうきょうスカイツリー駅で");

RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
        .texts(texts)
        .analyzerParams(analyzerParams)
        .build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
import (
    "context"
    "encoding/json"
    "fmt"

    "github.com/milvus-io/milvus/client/v2/milvusclient"
)

client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
    Address: "localhost:19530",
    APIKey:  "root:Milvus",
})
if err != nil {
    fmt.Println(err.Error())
    // handle error
}

bs, _ := json.Marshal(analyzerParams)
texts := []string{"東京スカイツリーの最寄り駅はとうきょうスカイツリー駅で"}
option := milvusclient.NewRunAnalyzerOption(texts).
    WithAnalyzerParams(string(bs))

result, err := client.RunAnalyzer(ctx, option)
if err != nil {
    fmt.Println(err.Error())
    // handle error
}

Salida esperada

{tokens: ['東京', 'スカイ', 'ツリー', 'の', '最寄り駅', 'は', 'とう', 'きょう', 'スカイ', 'ツリー', '駅', 'で']} 

Traducido porDeepL

Prueba Milvus gestionado gratis

Zilliz Cloud no da problemas, funciona con Milvus y es 10 veces más rápido.

Empezar
Feedback

¿Fue útil esta página?