LinderaCompatible with Milvus 2.5.11+

Der Tokenizer lindera führt eine wörterbuchbasierte morphologische Analyse durch. Er ist eine gute Wahl für Sprachen - wie z.B. Japanisch, Koreanisch und Chinesisch - deren Wörter nicht durch Leerzeichen getrennt sind.

Voraussetzungen

Um den lindera tokenizer zu verwenden, müssen Sie eine speziell kompilierte Milvus-Version verwenden. Alle Wörterbücher müssen während der Kompilierung explizit aktiviert werden, um verwendet werden zu können.

Um bestimmte Wörterbücher zu aktivieren, fügen Sie sie in den Kompilierungsbefehl ein:

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

Die vollständige Liste der verfügbaren Wörterbücher ist: lindera-ipadic, lindera-ipadic-neologd, lindera-unidic, lindera-ko-dic, lindera-cc-cedict.

Beispiel: Um alle Wörterbücher zu aktivieren:

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

Konfiguration

Um einen Analyzer zu konfigurieren, der den Tokenizer lindera verwendet, setzen Sie tokenizer.type auf lindera und wählen ein Wörterbuch mit 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"}}

Parameter

Beschreibung

type

Der Typ des Tokenizers. Dieser ist auf "lindera" festgelegt.

dict_kind

Ein Wörterbuch, das zur Definition des Vokabulars verwendet wird. Mögliche Werte:

  • ko-dic: Koreanisch - Koreanisches morphologisches Wörterbuch(MeCab Ko-dic)

  • ipadic: Japanisch - Morphologisches Standardwörterbuch(MeCab IPADIC)

  • ipadic-neologd: Japanisch mit Neologismenwörterbuch (erweitert) - Enthält neue Wörter und Eigennamen(IPADIC NEologd)

  • unidic: Japanisch UniDic (erweitert) - Akademisches Standardwörterbuch mit detaillierten linguistischen Informationen(UniDic)

  • cc-cedict: Mandarin-Chinesisch (traditionell/vereinfacht) - Von der Gemeinschaft gepflegtes chinesisch-englisches Wörterbuch(CC-CEDICT)

    Hinweis: Alle Wörterbücher müssen während der Milvus-Kompilierung aktiviert werden, damit sie verwendet werden können.

Nachdem Sie analyzer_params definiert haben, können Sie sie bei der Definition eines Sammelschemas auf ein VARCHAR Feld anwenden. Dadurch kann Milvus den Text in diesem Feld unter Verwendung des angegebenen Analysators für eine effiziente Tokenisierung und Filterung verarbeiten. Einzelheiten finden Sie unter Beispiel für die Verwendung.

Beispiele

Bevor Sie die Analyzer-Konfiguration auf Ihr Sammelschema anwenden, überprüfen Sie das Verhalten mit der Methode run_analyzer.

Analyzer-Konfiguration

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

Verifizierung mit 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
}

Erwartete Ausgabe

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

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?