You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重新定义nltk.RegexpTokenizer,同时保留单词与指定短语作为单独分词?

用NLTK RegexpTokenizer同时识别单词与特定短语

可以实现这个需求,核心思路是让正则表达式优先匹配目标短语,再匹配普通单词——利用正则的匹配优先级,把短语放在正则模式的最前面,就能确保短语被优先捕获为单个分词,剩下的内容再按普通单词拆分。

实现代码示例

from nltk.tokenize import RegexpTokenizer
import re

# 定义正则模式:先匹配"big data"短语,再匹配单个单词
pattern = r'big data|\w+'

# 初始化分词器,若需要忽略短语的大小写,添加flags参数
# tokenizer = RegexpTokenizer(pattern, flags=re.IGNORECASE)
tokenizer = RegexpTokenizer(pattern)

# 测试文本
test_text = "Big data is trending, and big data projects are everywhere."
tokens = tokenizer.tokenize(test_text)
print(tokens)

结果说明

  • 未加flags=re.IGNORECASE时,输出为:
    ['Big', 'data', 'is', 'trending', 'and', 'big data', 'projects', 'are', 'everywhere']
    只有小写的"big data"会被识别为单个分词,大写开头的"Big data"会拆成两个单词。
  • 添加flags=re.IGNORECASE后,输出为:
    ['big data', 'is', 'trending', 'and', 'big data', 'projects', 'are', 'everywhere']
    无论大小写,"big data"都会被识别为单个分词。

扩展:多个特定短语的情况

如果需要同时识别多个短语,只需在正则模式中继续添加,用|分隔,保持短语在前、普通单词在后的顺序即可:

pattern = r'big data|machine learning|\w+'
tokenizer = RegexpTokenizer(pattern, flags=re.IGNORECASE)

内容的提问来源于stack exchange,提问作者striatum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 02:42:13