2017-05-08 25 views
2

我已經切換了Python 3.6現在,但是當運行內容豐富的功能時,我試圖在我的特徵提取器中打印俄羅斯時,結束了胡言亂語。內容豐富的功能不返回西里爾字符

Most Informative Features 
    three_last_letters = 'оÌ'   noun : verb =  6.6 : 1.0 
    three_last_letters = 'гÐ'   noun : verb =  5.4 : 1.0 
    three_last_letters = 'еÐ'   noun : verb =  4.7 : 1.0 
    three_last_letters = 'мÐ'   noun : verb =  4.4 : 1.0 
    three_last_letters = 'нÑ'   noun : verb =  3.5 : 1.0 

在特徵提取本身

def POS_features(word): 
    return{'three_last_letters':word[-3:]} 
print(POS_features(u'Богатир')) 

我能得到тир打印就好了的情況下,是有什麼我可以做,以使信息量大的特點返回俄語字符?

+0

關於什麼操作系統?並且你是否在控制檯或IDE中嘗試打印? – dima

+1

我在Windows上的Jupyter筆記本上編碼。 – reivermello

+2

如果Python 3.5沒有這種情況,那可能是因爲這種改變:「PEP 528和PEP 529,Windows文件系統和控制檯編碼更改爲UTF-8」。對不起,沒有合適的解決方案,但嘗試嘗試'sys.setdefaultencoding'並檢查'sys.stdout.encoding'。 – drdaeman

回答

3

我想通了什麼我做不對,

vocab = nltk.corpus.reader.CategorizedPlaintextCorpusReader(
"C:\\Users\\Admin\\AppData\\Roaming\\nltk_data\\corpora\\russian\\vocab", r'.*\.txt', cat_pattern=r'^(noun|verb)', encoding="utf8" 

的時候我已經導入我的翻譯文件夾,我的編碼它的Latin-1 一切都很好,並返回我西裏爾字母

Most Informative Features 
     three_last_letters = 'ать'   verb : noun =  15.2 : 1.0 
     three_last_letters = 'де'    noun : verb =  2.6 : 1.0 
     three_last_letters = 'сть'   noun : verb =  1.5 : 1.0 
     three_last_letters = 'пра'   noun : verb =  1.4 : 1.0 
     three_last_letters = 'ина'   noun : verb =  1.4 : 1.0 
+1

請注意,您可以使用原始字符串在Python源代碼中編寫Windows路徑(或包含反斜槓的任何其​​他字符串)。 'R'C:\路徑\爲\ file''。請參閱http://stackoverflow.com/questions/2081640/what-exactly-do-u-and-r-string-flags-do-in-python-and-what-are-raw-string-l – Tomalak