排序的钥匙值lambda无法正常工作



我有一个列表理解,一旦我添加'not of stop'方法,就不会排序。基本上,当我在此NLTK中包含停止字时,我之前拥有的排序功能现在丢失了。谁能指出我做错了什么?

我现在将所有内容都包含在代码中以供更好的参考。

编辑:

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)

这是我的结果,'不停止'

('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

您可以看到分类的作品,但是只有我删除"不停止"

排序方法的 key参数是一个函数,可以让您告诉python to python of哪个键(与列表的项目相关的属性/值)进行分类。

在您的情况下,您的函数将返回真或错。

编辑:

据我了解您要实现的目标,您需要在(或之后)从列表中删除"停止单词"列表中的项目之前(或之后)添加。

类似的东西:

for (k,v) in sorted(filter(lambda x: (x[1] not in stop), fdist.items()), key=lambda x: x[1], reverse=True):
    print(k,v)

最新更新