跳到主要内容

阿拉伯语文本规范化

arabic_normalization 过滤器是用于阿拉伯语文本的内置 token 过滤器。它会规范化阿拉伯语特有的字母变体,并移除可选标记,避免等效的阿拉伯语词项在文本分析时呈现为不同形式。

配置

📘说明

对于阿拉伯语文本,大多数情况下请使用内置的 阿拉伯语 Analyzer。该内置 Analyzer 将此过滤器与标准分词、小写转换、十进制数字规范化、阿拉伯语词干提取及阿拉伯语停用词移除结合使用。仅当您需要构建自定义 Analyzer 流水线时,才直接使用 arabic_normalization

要在自定义 Analyzer 中使用 arabic_normalization 过滤器,请将其添加到 analyzer_paramsfilter 部分:

python
analyzer_params = {
"tokenizer": "standard",
"filter": ["arabic_normalization"],
}

arabic_normalization 过滤器没有可配置参数。

该过滤器会执行以下转换:

转换规则转换前转换后
Hamza + Alef 变体آأإا
Teh Marbutaةه
Alef Maksuraىي
Harakat 变音符号U+064BU+065F移除
Tatweel / Kashida 延长符ـ移除

该过滤器作用于分词器生成的词元。上述配置特意展示一个自定义 Analyzer 示例,并不包含完整的阿拉伯语处理流水线。

示例

在将 Analyzer 配置应用到 Collection Schema 之前,请使用 run_analyzer 方法验证其行为。

Analyzer 配置

python
analyzer_params = {
"tokenizer": "standard",
"filter": ["arabic_normalization"],
}

使用 run_analyzer 验证

python
from pymilvus import MilvusClient

client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")

sample_text = "آدم أحمد إسلام مدرسة كبرى كِتَابٌ عـــربي"

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

预期输出

plaintext
['ادم', 'احمد', 'اسلام', 'مدرسه', 'كبري', 'كتاب', 'عربي']
Ctrl I