【发布时间】:2016-03-22 14:24:40
【问题描述】:
我已经通过这个 Python 脚本使用 ngram 将文本拆分为后续单词:
from nltk.util import ngrams
sentence = open('text.txt', "r")
n = 2
sixgrams = ngrams(sentence.read().split(), n)
for grams in sixgrams:
print (grams)
现在我面临以下两个问题。
1。我的结果是这样的
('\xd1\x8e\xd0\xbc', '\xd0\xb1\xd0\xb0\xd0\xb9\xd0\xb3\xd0\xb0\xd0\xb0\xd0\xbd')
这可能是因为 text.txt 文件包含俄语西里尔字符并以 UTF-8 编码。有没有办法在 Python 中以人类可读的格式查看我的结果?
2。我尝试使用 Collections.Counter 来获取每个后续单词组合的频率计数,并打印出现超过 2 次的所有 ngram(按值排序)。我尝试了几个小时无法让它显示我想要的方式。
输入示例:
Diddle diddle dumpling my son Diddle diddle my son
输出示例:
Diddle diddle 2
diddle dumpling 2
dumpling my 1
my son 2
son Diddle 1
Diddle my 1
my son 1
限制为 2 的输出示例:
Diddle diddle 2
diddle dumpling 2
my son 2
【问题讨论】:
-
你用的是python 2.7吗?
-
最好将 Python 3 用于 NLP 任务,因为 Python 3 具有出色的文本功能:/
-
在 Python 3 中你已经看到了
юм байгаан -
我正在使用 Enthought Canopy,由于某些原因导致大数据 Canopy 失败。
-
1. --> 将您的输出写入文件 (utf-8) 并使用可处理 utf-8 2 的编辑器打开此文件。 --> 查看我对您的其他问题的完整回答 Redirecting the print output to a .txt file in Python。
标签: python parsing encoding split counter