Jieba

Tokenizer jieba memproses teks bahasa Mandarin dengan memecahnya menjadi beberapa komponen kata.

Tokenizer jieba mempertahankan tanda baca sebagai token terpisah dalam keluarannya. Misalnya, "你好!世界。" menjadi ["你好", "!", "世界", "。"]. Untuk menghapus token tanda baca yang berdiri sendiri ini, gunakan filter removepunct filter.

Konfigurasi

Milvus mendukung dua pendekatan konfigurasi untuk tokenizer jieba: konfigurasi sederhana dan konfigurasi khusus.

Konfigurasi sederhana

Dengan konfigurasi sederhana, Anda hanya perlu mengatur tokenizer ke "jieba". Sebagai contoh:

# Simple configuration: only specifying the tokenizer name
analyzer_params = {
    "tokenizer": "jieba",  # Use the default settings: dict=["_default_"], mode="search", hmm=True
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "jieba");
const analyzer_params = {
    "tokenizer": "jieba",
};
analyzerParams = map[string]any{"tokenizer": "jieba"}
# restful
analyzerParams='{
  "tokenizer": "jieba"
}'

Konfigurasi sederhana ini setara dengan konfigurasi kustom berikut ini:

# Custom configuration equivalent to the simple configuration above
analyzer_params = {
    "type": "jieba",          # Tokenizer type, fixed as "jieba"
    "dict": ["_default_"],     # Use the default dictionary
    "mode": "search",          # Use search mode for improved recall (see mode details below)
    "hmm": True                # Enable HMM for probabilistic segmentation
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("type", "jieba");
analyzerParams.put("dict", Collections.singletonList("_default_"));
analyzerParams.put("mode", "search");
analyzerParams.put("hmm", true);
// javascript
analyzerParams = map[string]any{"type": "jieba", "dict": []any{"_default_"}, "mode": "search", "hmm": true}
# restful

Untuk detail tentang parameter, lihat Konfigurasi khusus.

Konfigurasi khusus

Untuk kontrol lebih lanjut, Anda dapat menyediakan konfigurasi khusus yang memungkinkan Anda menentukan kamus khusus, memilih mode segmentasi, dan mengaktifkan atau menonaktifkan Model Markov Tersembunyi (Hidden Markov Model, HMM). Sebagai contoh:

# Custom configuration with user-defined settings
analyzer_params = {
    "tokenizer": {
        "type": "jieba",           # Fixed tokenizer type
        "dict": ["customDictionary"],  # Custom dictionary list; replace with your own terms
        "mode": "exact",           # Use exact mode (non-overlapping tokens)
        "hmm": False               # Disable HMM; unmatched text will be split into individual characters
    }
}
Map<String, Object> analyzerParams = new HashMap<>();                                                                          
analyzerParams.put("tokenizer", new HashMap<String, Object>() {{
  put("type", "jieba");                                                                                                      
  put("dict", Arrays.asList("customDictionary"));             
  put("mode", "exact");
  put("hmm", false);
}});

// javascript
analyzerParams := map[string]interface{}{
  "tokenizer": map[string]interface{}{
      "type": "jieba",
      "dict": []string{"customDictionary"},
      "mode": "exact",
      "hmm":  false,
  },
}
# restful

Parameter

Deskripsi

Nilai Default

type

Jenis tokenizer. Ini ditetapkan ke "jieba".

"jieba"

dict

Daftar kamus yang akan dimuat oleh penganalisis sebagai sumber kosakata. Opsi bawaan:

  • "_default_": Memuat kamus bahasa Mandarin Sederhana bawaan mesin. Untuk detailnya, lihat dict.txt.

  • "_extend_default_": Memuat semua yang ada di "_default_" ditambah dengan tambahan suplemen Bahasa Mandarin Tradisional. Untuk detailnya, lihat dict.txt.big.

    Anda juga dapat menggabungkan kamus bawaan dengan sejumlah kamus khusus. Contoh: ["_default_", "结巴分词器"].

["_default_"]

mode

Mode segmentasi. Nilai-nilai yang mungkin:

  • "exact": Mencoba menyegmentasikan kalimat dengan cara yang paling tepat, sehingga ideal untuk analisis teks.

  • "search": Dibangun di atas mode eksak dengan memecah lebih lanjut kata-kata yang panjang untuk meningkatkan daya ingat, sehingga cocok untuk tokenisasi mesin pencari.

    Untuk informasi lebih lanjut, lihat Proyek Jieba GitHub.

"search"

hmm

Bendera boolean yang menunjukkan apakah akan mengaktifkan Hidden Markov Model (HMM) untuk segmentasi probabilistik kata-kata yang tidak ditemukan dalam kamus.

true

Setelah mendefinisikan analyzer_params, Anda dapat menerapkannya ke bidang VARCHAR ketika mendefinisikan skema koleksi. Hal ini memungkinkan Milvus untuk memproses teks dalam bidang tersebut menggunakan penganalisis yang ditentukan untuk tokenisasi dan pemfilteran yang efisien. Untuk detailnya, lihat Contoh penggunaan.

Contoh

Sebelum menerapkan konfigurasi penganalisis ke skema koleksi Anda, verifikasi perilakunya menggunakan metode run_analyzer.

Konfigurasi penganalisis

analyzer_params = {
    "tokenizer": {
        "type": "jieba",
        "dict": ["结巴分词器"],
        "mode": "exact",
        "hmm": False
    }
}
Map<String, Object> analyzerParams = new HashMap<>();                                                                          
analyzerParams.put("tokenizer", new HashMap<String, Object>() {{
  put("type", "jieba");                                                                                                      
  put("dict", Arrays.asList("结巴分词器"));                   
  put("mode", "exact");
  put("hmm", false);
}});
// javascript
analyzerParams := map[string]interface{}{
  "tokenizer": map[string]interface{}{
      "type": "jieba",
      "dict": []string{"结巴分词器"},
      "mode": "exact",
      "hmm":  false,
  },
}
# restful

Verifikasi menggunakan run_analyzerCompatible with Milvus 2.5.11+

from pymilvus import (
    MilvusClient,
)

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus"
)

# Sample text to analyze
sample_text = "milvus结巴分词器中文测试"

# 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")
        .token("root:Milvus")
        .build();
MilvusClientV2 client = new MilvusClientV2(config);

List<String> texts = new ArrayList<>();
texts.add("milvus结巴分词器中文测试");

RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
        .texts(texts)
        .analyzerParams(analyzerParams)
        .build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
// javascript
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{"milvus结巴分词器中文测试"}
option := milvusclient.NewRunAnalyzerOption(texts).
    WithAnalyzerParams(string(bs))

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

Keluaran yang diharapkan

['milvus', '结巴分词器', '中', '文', '测', '试']

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?