我想问你一个问题,首先是这里的代码:
from urllib import request
from collections import Counter
from nltk import word_tokenize
URL = 'https://www.gutenberg.org/files/46/46-0.txt'
RESPONSE = request.urlopen(URL)
RAW = RESPONSE.read().decode('utf8')
print('\n')
type(RAW)
print('\n')
len(RAW)
TOKENS = word_tokenize(RAW)
print(type(TOKENS))
X = print(len(TOKENS))
print(TOKENS[:X])
print('\n')
c = Counter(RAW)
print(c.most_common(30))
这是我得到的第一个输出。对此我感到满意。
['\ufeffThe', 'Project', 'Gutenberg', 'EBook', 'of', 'A', 'Christmas', 'Carol', ',', 'by', 'Charles',...]
以下是输出的第二部分,我对此并不满意:
[(' strong text', 28438), ('e', 16556), ('t', 11960), ('o', 10940), ('a', 10092), ('n', 8868), ('i', 8791),...]
这是我的问题:如您所见,我正在计算文本中最频繁出现的字符串,但问题是我想计算单词列表的整个元素:第二个输出的最后一部分应该看起来像像这样:
[('Dickens', 28438), ('Project', 16556), ('Gutenberg', 11960),...]
,而不是您在输出的第二部分中看到的那样。我想在文本中显示30个最常用的单词,而不是列表元素中的部分元素。
您知道我如何解决该问题吗?感谢您的帮助。
答案 0 :(得分:0)
尝试更改此内容
c = Counter(TOKENS)
在此附上完整的更改代码
from urllib import request
from collections import Counter
from nltk import word_tokenize
URL = 'https://www.gutenberg.org/files/46/46-0.txt'
RESPONSE = request.urlopen(URL)
RAW = RESPONSE.read().decode('utf8')
print('\n')
type(RAW)
print('\n')
len(RAW)
TOKENS = word_tokenize(RAW)
print(type(TOKENS))
X = print(len(TOKENS))
print(TOKENS[:X])
print('\n')
c = Counter(TOKENS)
print(c.most_common(500))