如何避免用下划线标记单词?

Sir*_* Li 5 python tokenize nltk

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

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

['a', ',', '_b_c', '!', 'is','a','movie','!']
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

['a,_b_c!', 'is', 'a', 'movie', '!']
Run Code Online (Sandbox Code Playgroud)

我的代码:

['a', ',', '_b_c', '!', 'is','a','movie','!']
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

muj*_*iga 2

您可以先使用空格将其分割,然后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] 
Run Code Online (Sandbox Code Playgroud)

输出 ['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]部分是将列表列表扁平化为单个列表。