مفكك الكلمات المركبة

يقوم عامل التصفية decompounder بتقسيم الكلمات المركبة إلى مكونات فردية بناءً على قاموس محدد، مما يسهل البحث عن أجزاء من المصطلحات المركبة. هذا الفلتر مفيد بشكل خاص للغات التي تستخدم كلمات مركبة بشكل متكرر، مثل الألمانية. يمكن توفير قاموس المكونات مضمنًا عبر المعلمة word_list أو تحميله من مورد ملف مسجل عبر المعلمة word_list_file.

التكوين

يقبل عامل التصفية decompounder قاموس مكوناته إما مضمنًا عبر المعلمة word_list أو من مورد ملف مسجل عبر المعلمة word_list_file.

قائمة الكلمات المضمنة

عامل التصفية decompounder هو عامل تصفية مخصص في ميلفوس. لاستخدامه، حدد "type": "decompounder" في تكوين الفلتر، إلى جانب معلمة word_list التي توفر قاموس مكونات الكلمات المراد التعرف عليها.

analyzer_params = {
    "tokenizer": "standard",
    "filter":[{
        "type": "decompounder", # Specifies the filter type as decompounder
        "word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],
    }],
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter",
        Collections.singletonList(
                new HashMap<String, Object>() {{
                    put("type", "decompounder");
                    put("word_list", Arrays.asList("dampf", "schiff", "fahrt", "brot", "backen", "automat"));
                }}
        )
);
const analyzer_params = {
    "tokenizer": "standard",
    "filter":[{
        "type": "decompounder", // Specifies the filter type as decompounder
        "word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],
    }],
};
analyzerParams = map[string]any{"tokenizer": "standard",
    "filter": []any{map[string]any{
        "type":       "decompounder",
        "word_list": []string{"dampf", "schiff", "fahrt", "brot", "backen", "automat"},
    }}}
# restful
analyzerParams='{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "decompounder",
      "word_list": [
        "dampf",
        "schiff",
        "fahrt",
        "brot",
        "backen",
        "automat"
      ]
    }
  ]
}'

يقبل عامل التصفية decompounder المعلمات التالية القابلة للتكوين.

المعلمة

الوصف

word_list

قائمة بمكونات الكلمات المستخدمة لتقسيم المصطلحات المركبة. يحدد هذا القاموس كيفية تحليل الكلمات المركبة إلى مصطلحات فردية.

يعمل عامل التصفية decompounder على المصطلحات التي تم إنشاؤها بواسطة أداة الترميز، لذلك يجب استخدامه مع أداة الترميز. للحصول على قائمة بأدوات الترميز المتوفرة في ميلفوس، راجع أداة الترميز القياسية وصفحاتها الشقيقة.

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

تحميل مكونات الكلمات من مورد ملفCompatible with Milvus 3.0.x

بالنسبة لقواميس المكوّنات الكبيرة - خاصةً قوائم الكلمات كاملة اللغة - قم بتخزين المكوّنات في ملف وقم بتسجيل الملف كمورد ملف بعيد، ثم قم بالإشارة إليه من عامل التصفية عبر المعلمة word_list_file. يمكنك استخدام word_list_file بمفرده أو إلى جانب المضمّن word_list ؛ عندما يتم تعيين كليهما، يدمج المرشح المصدرين في قائمة مكونات واحدة.

الملف هو نص UTF-8 عادي مع كلمة مكون واحدة في كل سطر. على سبيل المثال:

dampf
schiff
fahrt
brot
backen
automat

قم بتحميل الملف إلى مخزن الكائنات الذي تم تكوين مجموعة ميلفوس لاستخدامه، ثم قم بتسجيله:

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

# Register the uploaded file under a name you'll reference from analyzer configs.
client.add_file_resource(
    name="de_components",
    path="file/decompounder.txt",    # full S3 object key, including the rootPath prefix
)

قم بالإشارة إلى المورد المسجل في عامل التصفية عبر word_list_file:

analyzer_params = {
    "tokenizer": "standard",
    "filter": [{
        "type": "decompounder",
        "word_list_file": {
            "type": "remote",
            "resource_name": "de_components",
            "file_name": "decompounder.txt",
        },
    }],
}

تقبل المعلمة word_list_file كائنًا يحتوي على الحقول التالية:

الحقل

الوصف

type

نوع المورد. استخدم "remote" لملف مسجل عبر add_file_resource. بالنسبة للمتغير "local" المستخدم في عمليات النشر المستضافة ذاتيًا، راجع إدارة موارد الملف.

resource_name

الاسم المستخدم عند تسجيل الملف على add_file_resource.

file_name

جزء اسم الملف من مسار مخزن الكائنات الخاص بالمورد المسجل (على سبيل المثال، "decompounder.txt" إذا كان المورد مسجلاً مع path="file/decompounder.txt").

أمثلة

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

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

analyzer_params = {
    "tokenizer": "standard",
    "filter":[{
        "type": "decompounder", # Specifies the filter type as decompounder
        "word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],
    }],
}
Map<String, Object> analyzerParams = new HashMap<>();
analyzerParams.put("tokenizer", "standard");
analyzerParams.put("filter",
        Collections.singletonList(
                new HashMap<String, Object>() {{
                    put("type", "decompounder");
                    put("word_list", Arrays.asList("dampf", "schiff", "fahrt", "brot", "backen", "automat"));
                }}
        )
);
// javascript
analyzerParams = map[string]any{"tokenizer": "standard",
    "filter": []any{map[string]any{
        "type":       "decompounder",
        "word_list": []string{"dampf", "schiff", "fahrt", "brot", "backen", "automat"},
    }}}
# restful
analyzerParams='{
  "tokenizer": "standard",
  "filter": [
    {
      "type": "decompounder",
      "word_list": [
        "dampf",
        "schiff",
        "fahrt",
        "brot",
        "backen",
        "automat"
      ]
    }
  ]
}'

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

from pymilvus import (
    MilvusClient,
)

client = MilvusClient(uri="http://localhost:19530")

# Sample text to analyze
sample_text = "dampfschifffahrt brotbackautomat"

# 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("dampfschifffahrt brotbackautomat");

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{"dampfschifffahrt brotbackautomat"}
option := milvusclient.NewRunAnalyzerOption(texts).
    WithAnalyzerParams(string(bs))

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

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

['dampf', 'schiff', 'fahrt', 'brotbackautomat']

جرب Managed Milvus مجاناً

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

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

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