我有一個列表理解,一旦添加'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