跳到主要内容
版本:v3.0.x

Arabic

arabic analyzer 是用于阿拉伯语文本的内置 analyzer。当你需要 Milvus 规范化阿拉伯字母变体、移除变音符号和 Tatweel、转换阿拉伯-印度数字、应用阿拉伯语词干提取,并移除阿拉伯语停用词时,请使用此 analyzer。

Configuration

内置 analyzer 是 Milvus 提供的 analyzer 模板。要使用内置 analyzer,请在 analyzer_params 中将 type 设置为预定义的 analyzer 名称。

要使用内置 Arabic analyzer,请将 type 设置为 arabic

Python
analyzer_params = {
"type": "arabic",
}

arabic analyzer 接受以下可选参数:

参数

类型

默认值

描述

stop_words

list[str]

_arabic_

要在分词过程中移除的额外停用词列表。默认情况下,arabic analyzer 使用内置的 _arabic_ 词典。要查看默认词典,请参阅 Milvus Arabic 停用词列表。该列表来源于 Apache Lucene Arabic stopwords 文件

要添加自定义停用词,请包含 stop_words

Python
analyzer_params = {
"type": "arabic",
"stop_words": ["ميلفوس"],
}

Milvus 会在内置 _arabic_ 词典之外应用自定义停用词。

内置 arabic analyzer 等同于以下自定义 analyzer 配置:

Python
analyzer_params = {
"tokenizer": "standard",
"filter": [
"lowercase",
"decimaldigit",
"arabic_normalization",
{
"type": "stemmer",
"language": "arabic",
},
{
"type": "stop",
"stop_words": "_arabic_",
},
],
}

此 analyzer 会应用以下处理步骤:

  • Tokenization:使用 standard tokenizer 将文本拆分为 token。
  • Digit normalization:使用 decimaldigit filter 将阿拉伯-印度数字和其他 Unicode 十进制数字转换为 ASCII 数字。
  • Arabic normalization:使用 arabic_normalization filter 对 Alef 变体、Teh Marbuta 和 Alef Maksura 进行规范化,并移除 Harakat 和 Tatweel。
  • Stemming:使用 stemmer filter,并将 language 设置为 arabic
  • Stop-word removal:使用 stop filter 和内置 _arabic_ 词典。

定义 analyzer_params 后,你可以在定义 collection schema 时将该 analyzer 应用于 VARCHAR 字段。详情请参阅 Example use

Examples

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

Analyzer configuration

Python
analyzer_params = {
"type": "arabic",
}

使用 run_analyzer 进行验证

Python
from pymilvus import MilvusClient

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

sample_text = "كِتَابٌ عـــربي ١٢٣"

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

预期输出

Text
['كتاب', 'عرب', '123']