如何避免用下划线标记单词?
How to avoid tokenize words with underscore?
我正在尝试使用“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())
如有任何帮助,我们将不胜感激!
您可以先使用 space 拆分它,然后在每个单词上使用 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()]
将 return 列表 运行 word_tokenize
仅在没有 _
.
的单词上
[word for sublist in l for word in sublist]
部分是将列表的列表展平为单个列表。
如果您想保留下划线而不是在下划线周围分开,请切换到 TweetTokenizer 而不是 word_tokenize。您可以在此处找到更多信息:
不确定如何解决感叹号问题。如果你想要 ['a,_b_c!'] 你也会得到 ['movie!'] 如果你想要 ['movie','!'] 你也会得到 ['a,_b_c' ,'!']。我想不出一种方法来选择感叹号的处理方式。
我正在尝试使用“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())
如有任何帮助,我们将不胜感激!
您可以先使用 space 拆分它,然后在每个单词上使用 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()]
将 return 列表 运行 word_tokenize
仅在没有 _
.
[word for sublist in l for word in sublist]
部分是将列表的列表展平为单个列表。
如果您想保留下划线而不是在下划线周围分开,请切换到 TweetTokenizer 而不是 word_tokenize。您可以在此处找到更多信息: