أداة تقطيع قياسية
يقوم أداة التقطيع " 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']