[英]Using Counter in Python, how do I filter the most common words
我試圖找到在導出到.txt文件的whatsapp聊天中使用的最常用單詞。 此代碼有效...
from collections import Counter
import re
words = re.findall(r'\w+', open('chat.txt').read().lower())
print(Counter(words).most_common(10))
...但是它包括所有日期以及我自己的名字和收件人的名字。 我可以添加什么使其忽略某些單詞? (我敢肯定有一個非常簡單的解決方案,但我對python還是很陌生。)謝謝!
編輯:
我現在所理解的問題並沒有很好地解釋。 我意識到我不太具體,因為我主要只是復制代碼示例並嘗試有效的方法,而不是分析代碼本身。
我試圖在.txt文件中找到最常見的詞,該文件是一個已存檔的whatsapp聊天,這是一個無聊的示例:
“ [06/12/2017,18:09:10] Name1姓氏1:現在就在管子上
[06/12/2017,18:09:29] Name1 Surname1:帶我走了25分鍾,所以我很想把它剪下來
[06/12/2017,18:36:16] Name2 Surname2:我只是在11號平台旁等候
[16/12/2017,00:06:34] Name2 Surname2:我的郵件未發送
[16/12/2017,00:10:55] Name1姓氏1:
[16/12/2017,00:11:14] Name1姓氏1:由於某種原因,這些只是通過“
在使用以上代碼對這篇文章進行的第一次編輯中,結果如下:
[('2018', 8552), ('name1', 6753), ('surname1', 6625), ('02', 4520), ('03', 3810), ('i', 3322), ('you', 2275), ('name2', 2016), ('01', 1995), ('surname2', 1991)]
所以它包括日期和名稱,我想排除。
但是此代碼:
from collections import Counter
with open('_chat.txt') as fin:
counter = Counter(fin.read().strip().split())
print(counter.most_common(10))
不包括數字。 但是,它仍然包含一些不需要的單詞(例如名稱)和“無意義的”單詞(例如“ the”和“ and”):
[('Name1', 6686), ('Surname1:', 6615), ('I', 2277), ('Name2', 2000), ('Surname2:', 1990), ('you', 1714), ('to', 1488), ('and', 1084), ('a', 885), ('the', 881)]
我可以添加些什么來刪除這類單詞?
我了解這類似於如何在不調用RuntimeError的情況下使用循環刪除Counter對象中的條目? 但是當我嘗試類似地格式化我的代碼時,它並沒有成功,並且對它的工作方式也有些困惑。 (很抱歉,當我說我對python很陌生時,我的意思是非常新。)
查看您的輸入內容,建議您先清潔它,然后再將其放入Counter
。
如果您的文件帶有如下所示的行:
[06/12/2017, 18:09:10] Name1 Surname1: just on the tube now
然后,您可以通過查找[第一個結束]
來清除日期,然后在其后進行分割,然后通過對:
做類似的操作來清除名稱。 可以使用file.readlines()
讀取文件中的行,然后對每個行進行處理,例如
with open('chat.txt') as f:
lines = f.readlines()
def clean_line(line):
"""
Find the first ], assume it's followed by a space and
slice off everything after that
Split the line on the first : and take the second part
of the resulting list
"""
return line[line.find(']')+2:].split(':', 1)[1]
words = []
for line in lines:
words += clean_line(line).lower().split()
counted_words = Counter(words)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.