【问题标题】:Informative features are not returning Cyrillic characters信息功能不返回西里尔字符
【发布时间】:2017-10-06 14:31:40
【问题描述】:

我现在已经切换到 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'Богатир'))

我可以让 тир 打印得很好,我可以做些什么来使信息功能返回俄语字符?

【问题讨论】:

  • 在什么操作系统上?你是在控制台还是 ide 中尝试打印?
  • 我在 Windows 上的 Jupyter notebook 上编码。
  • 如果 Python 3.5 不是这种情况,可能是由于以下更改:“PEP 528 和 PEP 529,Windows 文件系统和控制台编码更改为 UTF-8。”。抱歉,没有合适的解决方案,但请尝试使用sys.setdefaultencoding 并检查sys.stdout.encoding
  • @reivermello 不要将解决方案写到问题中,而是将其写为下面的实际答案。这样您就可以将某些内容标记为已接受并关闭线程。

标签: python nltk feature-extraction python-unicode


【解决方案1】:

我发现我做错了什么,

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

当我导入我的 vocab 文件夹时,我将其编码为 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

【讨论】:

  • 请注意,您可以使用原始字符串在 Python 源代码中编写 Windows 路径(或任何其他包含反斜杠的字符串)。 r'C:\path\to\file'。见stackoverflow.com/questions/2081640/…
猜你喜欢
  • 2016-06-15
  • 2014-08-22
  • 2011-12-06
  • 2016-02-18
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多