2011-04-03 50 views
6

我想標記文本塊,但我不想標記空白和標點符號,因爲似乎是標準工具,如NLTK。有一些特定的短語我想被標記爲單個標記,而不是常規標記。Python:使用短語進行標記

例如,考慮到「西翼是由Aaron Sorkin創作的美國電視系列劇」,該劇在1999年9月22日至2006年5月14日在美國國家廣播公司播出,並且將該短語添加到標記器「 the west wing,」由此產生的標記是:

  • 西翼
  • 美國
  • ...

完成此操作的最佳方法是什麼?我寧願保持在像NLTK這樣的工具範圍內。

回答

1

如果你有一組固定的短語,你正在尋找,那麼簡單的解決方案是標記輸入並「重新組裝」多詞的標記。或者,在執行The West WingThe_West_Wing的標記化之前,執行正則表達式搜索&。

對於更高級的選項,請使用regexp_tokenize或請參閱chapter 7 of the NLTK book

+0

'regex_tokenize'和'NLTK書籍的第7章鏈接需要登錄名和密碼。 – Murta 2015-01-10 03:19:45

1

可以使用多字表達標記生成器NLTK的MWETokenizer

from nltk.tokenize import MWETokenizer 
tokenizer = MWETokenizer() 
tokenizer.add_mwe(('the', 'west', 'wing')) 
tokenizer.tokenize('Something about the west wing'.split()) 

您將獲得:

['Something', 'about', 'the_west_wing'] 
0

如果你不事先知道特定的短語,你可能使用scikit的CountVectorizer()類。它可以選擇指定較大的n-gram範圍(ngram_range),然後忽略沒有出現在足夠文檔中的任何單詞(min_df)。你可能會認爲你沒有意識到的一些短語是常見的,但你也可能會發現一些沒有意義的短語。它還可以使用stop_words參數過濾掉英語停用詞('is'等無意義的詞)。

相關問題