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 |
|---|---|
|
Le type de tokenizer. Il est fixé à |
|
Un dictionnaire utilisé pour définir le vocabulaire. Valeurs possibles :
|
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: ['東京', 'スカイ', 'ツリー', 'の', '最寄り駅', 'は', 'とう', 'きょう', 'スカイ', 'ツリー', '駅', 'で']}