جيبا

تقوم أداة الترميز jieba بمعالجة النص الصيني عن طريق تقسيمه إلى الكلمات المكونة له.

تحتفظ أداة ترميز jieba برموز بعلامات الترقيم كرموز منفصلة في المخرجات. على سبيل المثال، "你好!世界。" تصبح ["你好", "!", "世界", "。"]. لإزالة علامات الترقيم المنفصلة هذه، استخدم عامل التصفية removepunct عامل التصفية.

التكوين

يدعم ميلفوس طريقتين لتكوين أداة الترميز jieba: تكوين بسيط وتكوين مخصص.

التكوين البسيط

باستخدام التكوين البسيط، ما عليك سوى تعيين أداة الترميز على "jieba". على سبيل المثال:

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

هذا التكوين البسيط يعادل التكوين المخصص التالي:

# 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

للحصول على تفاصيل حول المعلمات، راجع التكوين المخصص.

تكوين مخصص

لمزيد من التحكم، يمكنك توفير تكوين مخصص يسمح لك بتحديد قاموس مخصص، وتحديد وضع التجزئة، وتمكين أو تعطيل نموذج ماركوف المخفي (HMM). على سبيل المثال:

# 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

المعلمة

الوصف

القيمة الافتراضية

type

نوع أداة الترميز. هذا ثابت على "jieba".

"jieba"

dict

قائمة القواميس التي سيقوم المحلل بتحميلها كمصدر للمفردات. خيارات مدمجة:

  • "_default_": يقوم بتحميل قاموس اللغة الصينية المبسطة المدمج في المحرك. لمزيد من التفاصيل، راجع dict.txt.

  • "_extend_default_": يقوم بتحميل كل شيء في "_default_" بالإضافة إلى ملحق إضافي للغة الصينية التقليدية. لمزيد من التفاصيل، راجع dict.txt.big.

    يمكنك أيضًا مزج القاموس المدمج مع أي عدد من القواميس المخصصة. مثال: ["_default_", "结巴分词器"].

["_default_"]

mode

وضع التجزئة. القيم الممكنة:

  • "exact": تحاول تجزئة الجملة بأكثر الطرق دقة، مما يجعلها مثالية لتحليل النص.

  • "search": يبني على الوضع الدقيق من خلال زيادة تقسيم الكلمات الطويلة لتحسين التذكر، مما يجعله مناسبًا لترميز محرك البحث.

    لمزيد من المعلومات، راجع مشروع Jieba GitHub Project.

"search"

hmm

علامة منطقية تشير إلى ما إذا كان يجب تمكين نموذج ماركوف المخفي (HMM) للتجزئة الاحتمالية للكلمات غير الموجودة في القاموس.

true

بعد تحديد analyzer_params ، يمكنك تطبيقها على حقل VARCHAR عند تحديد مخطط المجموعة. يسمح هذا لميلفوس بمعالجة النص في ذلك الحقل باستخدام المحلل المحدد لترميز وتصفية فعالة. لمزيد من التفاصيل، راجع مثال الاستخدام.

أمثلة

قبل تطبيق تكوين المحلل على مخطط المجموعة الخاص بك، تحقق من سلوكه باستخدام الأسلوب run_analyzer.

تكوين المحلّل

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

التحقق باستخدام 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

المخرجات المتوقعة

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

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟