跳到主要内容

Remove Punct

removepunct 过滤器会从词项流中移除包含标点符号或空白字符的词项。当您希望进行更干净的文本处理、专注于有意义的内容词而非标点时,可以使用该过滤器。

说明
  • 该过滤器在 jiebalinderaicu tokenizer 中最有效,因为这些 tokenizer 会将标点保留为独立的 token(例如 "Hello!"["Hello", "!"])。

  • standard 分词器会在分词阶段丢弃标点符号。whitespace 分词器会保留标点符号,包括词项内部的标点。与 whitespace 配合使用时,如果词项包含标点符号或空白字符,removepunct 会删除整个词项,而不是仅移除其中的个别字符。

配置

removepunct 过滤器已内置在 Zilliz Cloud 中。要使用它,只需在 analyzer_paramsfilter 部分指定其名称即可。

python
analyzer_params = {
"tokenizer": "jieba",
"filter": ["removepunct"]
}

removepunct 过滤器作用于分词器生成的词项,因此必须与分词器结合使用。

定义 analyzer_params 后,您可以在定义 Collection Schema 时将其应用于 VARCHAR 字段。这使得 Zilliz Cloud 能够使用指定的分析器处理该字段中的文本,以实现高效的分词和过滤。更多信息,请参阅使用示例

示例输出

在完成 Analyzer 配置后,您可以使用 run_analyzer 方法来验证分词效果是否符合预期。

Analyzer 配置

python
analyzer_params = {
"tokenizer": "icu",
"filter": ["removepunct"]
}

使用 run_analyzer 验证效果

python
from pymilvus import (
MilvusClient,
)

client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")

# Sample text to analyze
sample_text = "Привет! Как дела?"

# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard analyzer output:", result)

预期结果

sql
['Привет', 'Как', 'дела']