[英]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())
任何幫助,將不勝感激!
您可以先使用空格將其拆分,然后在每個單詞上使用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]
部分是將列表的列表扁平化為單個列表。
如果您想保留下划線而不是在下划線周圍分開,請切換到 TweetTokenizer 而不是 word_tokenize。 您可以在此處找到更多信息: nltk.TweetTokenizer 與 nltk.word_tokenize 有何不同? 不知道如何解決感嘆號問題。 如果你想要 ['a,_b_c!'] 你也會得到 ['movie!'] 如果你想要 ['movie','!'] 你也會得到 ['a,_b_c',' !']。 我想不出一種方法來選擇如何處理感嘆號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.