NLTK Word Tokenizer结尾单引号拆分异常,如何调整为指定分词结果?
解决NLTK Word Tokenizer对单引号的拆分问题
我之前也碰到过NLTK自带的word_tokenize对单引号的处理不太符合预期的情况,刚好可以给你针对两种期望输出的解决方案:
情况1:期望得到 ["'v'"]
如果你想把整个被单引号包裹的内容作为一个单独的token,可以用NLTK的RegexpTokenizer自定义匹配规则,直接匹配单引号包裹的字符:
from nltk.tokenize import RegexpTokenizer test = "'v'" # 匹配被单引号包裹的单个字母,如需支持更长内容可改成 r"'[^'\s]+'" tokenizer = RegexpTokenizer(r"'[a-zA-Z]'") words = tokenizer.tokenize(test) print(words) # 输出: ["'v'"]
情况2:期望得到 ["'", "v", "'"]
要是想把单引号和中间的字符拆分开,同样可以用RegexpTokenizer,定义规则分别匹配单引号和字母:
from nltk.tokenize import RegexpTokenizer test = "'v'" # 匹配单个单引号或者单个字母,按需调整范围(比如支持数字) tokenizer = RegexpTokenizer(r"'|[a-zA-Z]") words = tokenizer.tokenize(test) print(words) # 输出: ["'", "v", "'"]
相比修改NLTK默认分词的复杂规则,用RegexpTokenizer自定义匹配逻辑会更灵活直接,完全能满足你的需求~
内容的提问来源于stack exchange,提问作者Lingviston
相关产品推荐
相关产品推荐

