簡體   English   中英

如何使用nltk將具有已知雙字的句子標記化?

[英]How to tokenize a sentence with known biwords using nltk?

我正在使用python執行文本分析任務。 在這里,我將NLTK用於文本處理任務。 對於我來說,有一組預定義的biword ,如下所述。

arr = ['Animo Text Analytics Inc.', 'Amila Iddamalgoda']

而且我也有下面這樣的句子。

sentence = "Amila Iddamalgoda is currently working for Animo Text Analytics Inc. and currently following the Text Mining and Analytics course provided by coursera."

現在,我已使用NLTK將其標記化。

tokenizer = RegexpTokenizer(r'\w+')
tokens = tokenizer.tokenize(sentence)

這給出了單詞標記(很明顯)。 但是,我需要的是匹配我擁有的預定義的雙字集(開頭提到),並將該雙字詞法典作為單個標記。

例如:Amila Iddamalgoda,目前正在使用Animo Text Analytics Inc.,正在關注...

我怎樣才能做到這一點? 請幫幫我

用一些清晰可辨的字符(例如,下划線)替換文本中每一個多字出現的所有空格:

for expr in arr:
    sentence = re.sub(expr, re.sub(r'\s+', "_", expr), sentence)
#'Amila_Iddamalgoda is currently working ...'

您現在可以執行“常規”標記化。

如果您懷疑文本中的單詞之間有多個空格,請首先創建與您的多單詞匹配的正則表達式列表:

toreplace = {r'\s+'.join(a.split()) : '_'.join(a.split()) for a in arr}
#{'Amila\\s+Iddamalgoda': 'Amila_Iddamalgoda',
# 'Animo\\s+Text\\s+Analytics\\s+Inc.': 'Animo_Text_Analytics_Inc.'}

現在,將每個替換模式應用於原始句子:

for pattern in toreplace:
    sentence = re.sub(pattern, toreplace[pattern], sentence)

現在,再次,您可以執行“常規”令牌化。

所提出的解決方案效率很低。 如果效率很重要,則可以編寫自己的常規標記化表達式並使用nltk.regexp_tokenize()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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