我有一个列表理解,一旦添加'not in stop'方法就不会排序。基本上,当我包含这个NLTK的停用词时,我以前的排序功能已经失效。任何人都可以指出我做错了什么?排序的键值lambda无效
我现在已经在代码中包含了所有内容以供参考。
编辑:
from nltk import word_tokenize
from nltk.corpus import stopwords
import string
stop = stopwords.words('english') + list(string.punctuation)
f = open('review_text_all.txt', encoding="utf-8")
raw = f.read().lower().replace("'", "").replace("\\", "").replace(",",
"").replace("\ufeff", "")
tokens = nltk.word_tokenize(raw)
bgs = nltk.bigrams(tokens)
fdist = nltk.FreqDist(bgs)
for (k,v) in sorted(fdist.items(), key=lambda x: (x[1] not in stop),
reverse=True):
print(k,v)
这里是我的结果W/'不停止'
('or', 'irish') 3
('put', 'one') 1
('was', 'repealed') 1
('please', '?') 6
('contact', 'your') 2
('wear', 'sweats') 1
没有 '不停止'
('white', 'people') 4362
('.', 'i') 3734
('in', 'the') 2880
('of', 'the') 2634
('to', 'be') 2217
('all', 'white') 1778
,你可以看到排序作品,但只有一次,我删除'不停止'
是什么'fdist',什么是你想要的有序输出?包含最少的示例 –
请发布您的输入和期望的输出。 – Ajax1234
要排序还是要过滤列表?因为按照布尔条件进行排序几乎肯定不会产生您期望的结果。 – Guillaume