簡體   English   中英

如何避免用下划線標記單詞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM