LinderaCompatible with Milvus 2.5.11+

Le tokenizer lindera effectue une analyse morphologique basée sur le dictionnaire. C'est un bon choix pour les langues telles que le japonais, le coréen et le chinois, dont les mots ne sont pas séparés par des espaces.

Conditions préalables

Pour utiliser le tokenizer lindera, vous devez utiliser une version spécialement compilée de Milvus. Tous les dictionnaires doivent être explicitement activés lors de la compilation pour être utilisés.

Pour activer des dictionnaires spécifiques, incluez-les dans la commande de compilation :

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

La liste complète des dictionnaires disponibles est la suivante : lindera-ipadic, lindera-ipadic-neologd, lindera-unidic, lindera-ko-dic, lindera-cc-cedict.

Par exemple, pour activer tous les dictionnaires :

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

Configuration

Pour configurer un analyseur utilisant le tokenizer lindera, définissez tokenizer.type à lindera et choisissez un dictionnaire avec 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"}}

Paramètre

Description

type

Le type de tokenizer. Il est fixé à "lindera".

dict_kind

Un dictionnaire utilisé pour définir le vocabulaire. Valeurs possibles :

  • ko-dic: Coréen - Dictionnaire morphologique coréen(MeCab Ko-dic)

  • ipadic: Japonais - Dictionnaire morphologique standard(MeCab IPADIC)

  • ipadic-neologd: Japonais avec dictionnaire de néologismes (étendu) - Inclut les nouveaux mots et les noms propres(IPADIC NEologd)

  • unidic: Japonais UniDic (étendu) - Dictionnaire académique standard avec des informations linguistiques détaillées(UniDic)

  • cc-cedict: Chinois mandarin (traditionnel/simplifié) - Dictionnaire chinois-anglais entretenu par la communauté(CC-CEDICT)

    Remarque : tous les dictionnaires doivent être activés lors de la compilation de Milvus pour pouvoir être utilisés.

Après avoir défini analyzer_params, vous pouvez les appliquer à un champ VARCHAR lors de la définition d'un schéma de collecte. Cela permet à Milvus de traiter le texte de ce champ à l'aide de l'analyseur spécifié pour une tokenisation et un filtrage efficaces. Pour plus de détails, voir Exemple d'utilisation.

Exemples

Avant d'appliquer la configuration de l'analyseur à votre schéma de collecte, vérifiez son comportement à l'aide de la méthode run_analyzer.

Configuration de l'analyseur

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

Vérification à l'aide de 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
}

Résultat attendu

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

Traduit parDeepL

Essayez Milvus géré gratuitement

Zilliz Cloud est sans souci, propulsé par Milvus et 10 fois plus rapide.

Commencer
Feedback

Cette page a-t - elle été utile ?