2017-05-08 26 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