أداة تقطيع قياسية

يقوم أداة التقطيع " standard " في Milvus بتجميع الأحرف المتتالية من Unicode والأحرف الرقمية في وحدات، مع الفصل عند الأحرف الأخرى.

قواعد التقطيع

يحتفظ مُجزئ الرموز standard بالأحرف المتتالية التي تنتمي إلى المجموعات التالية في نفس الرمز:

  • أحرف ASCII: الحروف A-Z و a-z ، والأرقام 0-9.
  • الأحرف غير ASCII: الأحرف التي تحمل خاصية Unicode Alphabetic أو إحدى الفئات العامة الرقمية Nd أو Nl أو No.
خاصية أو فئة Unicodeالمعنىأمثلة على الأحرف التي يتم الاحتفاظ بها في الرموز
Alphabeticالحروف عبر أنظمة الكتابة المختلفة، بما في ذلك الأحرف الصينية وحروف الكانا اليابانية، وبعض علامات الدمج中文测试، カタカナ
Nd (Decimal_Number)الأرقام العشرية٣
Nl (Letter_Number)الأحرف الرقمية الشبيهة بالحروفⅧ
No (Other_Number)الأحرف الرقمية الأخرى، مثل الأرقام المحاطة بدائرة، والأرقام المرفوعة، والكسور①²¾

الأحرف خارج هذه المجموعات تفصل بين الرموز ويتم تجاهلها. وتشمل هذه الأحرف المسافات، وعلامات الترقيم، وخطوط التسطير السفلية (_)، والواصلة (-)، وعلامات الفصل (')، والرموز مثل + و $ و 😀. الفواصل المتتالية لا تنتج رموزًا فارغة.

يتبع تصنيف الأحرف معايير لغة Rust char::is_alphanumeric(). للاطلاع على تعريفات الخصائص، انظر الملحق رقم 44 لمعيار Unicode. قوائم الأحرف الكاملة لـ Unicode 17.0 متوفرة في DerivedCoreProperties.txt على الرابط Alphabetic و DerivedGeneralCategory.txt لـ Nd و Nl و No. تعتمد عضوية الأحرف على بيانات Unicode المستخدمة في الإصدار المنشور.

تستخدم الأمثلة التالية {"tokenizer": "standard"} بدون أي مرشحات. يحافظ أداة تجزئة الرموز على أحرف كبيرة وصغيرة ولا تقسم النص الصيني المتواصل إلى كلمات منفصلة.

الإدخالالرموز الناتجة
foo_bar-can't😀123["foo", "bar", "can", "t", "123"]
中文测试["中文测试"]
version①.¾["version①", "¾"]
Hello,World!["Hello", "World"]

التكوين

لتكوين محلل باستخدام أداة تجزئة standard ، اضبط tokenizer على standard في analyzer_params.

analyzer_params = {
    "tokenizer": "standard",
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
const analyzer_params = {
    "tokenizer": "standard",
};
analyzerParams = map[string]any{"tokenizer": "standard"}
# restful
analyzerParams='{
  "tokenizer": "standard"
}'

يمكن لمُقسِّم الرموز standard العمل بالاقتران مع مرشح واحد أو أكثر. على سبيل المثال، يحدد الكود التالي مُحلِّلًا يستخدم مُقسِّم الرموز standard والمرشح lowercase:

analyzer_params = {
    "tokenizer": "standard",
    "filter": ["lowercase"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter", Collections.singletonList("lowercase"));
const analyzer_params = {
    "tokenizer": "standard",
    "filter": ["lowercase"]
};
analyzerParams = map[string]any{"tokenizer": "standard", "filter": []any{"lowercase"}}
# restful
analyzerParams='{
  "tokenizer": "standard",
  "filter": [
    "lowercase"
  ]
}'

لإجراء إعداد أبسط، يمكنك اختيار استخدام standardالمحلل، الذي يجمع بين أداة التقطيع standard ومرشح lowercase.

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

أمثلة

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

تكوين المحلل

analyzer_params = {
    "tokenizer": "standard",
    "filter": ["lowercase"]
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter", Collections.singletonList("lowercase"));
// javascript
analyzerParams = map[string]any{"tokenizer": "standard", "filter": []any{"lowercase"}}
# restful

التحقق باستخدام run_analyzer

from pymilvus import (
    MilvusClient,
)

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

# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"

# 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("The Milvus vector database is built for scale!");

RunAnalyzerResp resp = client.runAnalyzer(RunAnalyzerReq.builder()
        .texts(texts)
        .analyzerParams(analyzerParams)
        .build());
List<RunAnalyzerResp.AnalyzerResult> results = resp.getResults();
// javascript
import (
    "context"
    "fmt"

    "github.com/milvus-io/milvus/client/v2/milvusclient"
)

ctx := context.Background()
client, err := milvusclient.New(ctx, &milvusclient.ClientConfig{
    Address: "localhost:19530",
    APIKey:  "root:Milvus",
})
if err != nil {
    fmt.Println(err.Error())
    // handle error
}

texts := []string{"The Milvus vector database is built for scale!"}
option := milvusclient.NewRunAnalyzerOption(texts...).
    WithAnalyzerParams(analyzerParams)

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

الناتج المتوقع

['the', 'milvus', 'vector', 'database', 'is', 'built', 'for', 'scale']

ترجمة بواسطةDeepL

جرب Managed Milvus مجاناً

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

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

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