我使用这个Python脚本,将文本拆分成连续的单词:
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
юм байгаан
。 - Antti Haapala -- Слава Україні