2013-01-15 39 views
0

我加載與南非語維基百科的NLTK語料庫的純文本版本的文本文件,使用下面的代碼:如何防止NLTK語料庫讀取ASCII擴展爲Unicode

import nltk 
from nltk.corpus import PlaintextCorpusReader 
from nltk.corpus.util import LazyCorpusLoader 
from __future__ import division 
afwikipedia = LazyCorpusLoader('afwikipedia', PlaintextCorpusReader, r'(?!\.).*\.txt') 
af = nltk.Text(afwikipedia.words()) 

然後我請看下面的熱門詞彙:

from nltk.probability import FreqDist 
fdist = FreqDist(af) 
vocabulary = fdist.keys() 
vocabulary[:250] # 250 most frequently used words. 

不幸的是,這種方法有幾個問題。 「'n」在南非荷蘭語中是非常流行的詞,意思是與英語中的「a」相同。上述方法將其分爲「'」和「n」兩部分。所有擴展的ASCII字符似乎都被視爲unicode而不是ascii,因此「verpleër」變爲「verple \ xc3r」。

有沒有人知道我會如何解決這個問題?特別是ASCII字符的unicode處理真的很煩人。

我也做了以下內容:

# Create a file called sitecustomize.py in c:\python24\Lib\site-packages. 
import sys 
sys.setdefaultencoding('iso-8859-1') # ASCII latin. 

回答

0

這不是unicode的,這是ASCII其中混合8位字符PlaintextCorpusReader需要一個encoding說法,你可以用它來解決你的問題。

至於從n分解',這是一個標記化器的問題。找到一個令你滿意的分詞器,並告訴你的語料庫讀者使用它。