Arabic Normalization
arabic_normalization filter 是用于阿拉伯语文本的内置 token filter。它会规范化阿拉伯语特有的字母变体,并移除可选标记,避免等价的阿拉伯语词项在文本分析期间表现为不同词项。
Configuration
对于阿拉伯语文本,大多数情况下请使用内置 arabic analyzer。该内置 analyzer 包含此 filter,并结合了标准分词、小写化、十进制数字归一化、阿拉伯语词干提取和阿拉伯语停用词移除。仅当你需要构建自定义 analyzer Pipeline 时,才直接使用 arabic_normalization。
要在自定义 analyzer 中使用 arabic_normalization filter,请将其添加到 analyzer_params 的 filter 部分:
analyzer_params = {
"tokenizer": "standard",
"filter": ["arabic_normalization"],
}
arabic_normalization filter 没有可配置参数。
该 filter 会应用以下转换:
转换 | From | To |
|---|---|---|
Hamza + Alef 变体 |
|
|
Teh Marbuta |
|
|
Alef Maksura |
|
|
Harakat |
| 移除 |
Tatweel / Kashida |
| 移除 |
该 filter 作用于 tokenizer 生成的 token。上面的配置特意作为自定义 analyzer 示例,并不包含完整的阿拉伯语处理 Pipeline。
示例
在将 analyzer 配置应用到 Collection Schema 之前,请使用 run_analyzer 方法验证其行为。
Analyzer 配置
analyzer_params = {
"tokenizer": "standard",
"filter": ["arabic_normalization"],
}
使用 run_analyzer 验证
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
sample_text = "آدم أحمد إسلام مدرسة كبرى كِتَابٌ عـــربي"
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
预期输出
['ادم', 'احمد', 'اسلام', 'مدرسه', 'كبري', 'كتاب', 'عربي']