我想從德語文檔中提取單詞,當我使用nLtk教程中描述的下列方法時,我無法獲取具有特定語言特殊字符的單詞。使用nltk從德語文本中提取單詞
ptcr = nltk.corpus.PlaintextCorpusReader(Corpus, '.*');
words = nltk.Text(ptcr.words(DocumentName))
我應該怎麼做才能得到文檔中的單詞列表?
與nltk.tokenize.WordPunctTokenizer()
爲德國短語Veränderungen über einen Walzer
示例如下:
In [231]: nltk.tokenize.WordPunctTokenizer().tokenize(u"Veränderungen über einen Walzer")
Out[231]: [u'Ver\xc3', u'\xa4', u'nderungen', u'\xc3\xbcber', u'einen', u'Walzer']
在這個例子中「A」被視爲一個分隔符,即使「ü」沒有。
你會得到什麼而不是單詞列表?你知道你的輸入文件的編碼嗎? – shenshei 2012-02-05 13:52:12
我得到一個異常分隔的單詞列表,例如德語字母'ä'被視爲分隔符。編碼是'utf-8'。 – red 2012-02-05 13:58:59
這很奇怪,因爲PlaintextCorpusReader使用WordPunctTokenizer()來處理unicode來標記文本。你可以給我一個使用nltk.tokenize.WordPunctTokenizer()的bug的例子。tokenize(「你有錯誤的文本」) – shenshei 2012-02-05 15:29:18