首页 > 解决方案 > 如何避免用下划线标记单词?

问题描述

我正在尝试使用“ nltk.word_tokenize()”函数标记我的文本,但它会拆分由“ _”连接的单词。

例如,文本“ A,_B_C! is a movie!”将被拆分为:

['a', ',', '_b_c', '!', 'is','a','movie','!']

我想要的结果是:

['a,_b_c!', 'is', 'a', 'movie', '!']

我的代码:

import nltk

text = "A,_B_C! is a movie!"
nltk.tokenize(text.lower())

任何帮助,将不胜感激!

标签: pythonnltktokenize

解决方案


您可以先使用空格将其拆分,然后word_tokenize在每个单词上使用来处理标点符号

[word for sublist in [word_tokenize(x) if '_' not in x else [x] 
                       for x in text.lower().split()] for word in sublist] 

输出 ['a,_b_c!', 'is', 'a', 'movie', '!']

l = [word_tokenize(x) if '_' not in x else [x] for x in text.lower().split()]word_tokenize将返回仅在没有的单词上运行的列表列表_

[word for sublist in l for word in sublist]部分是将列表列表展平为单个列表。


推荐阅读