1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import jieba
with open("三国演义.txt", "r", encoding='utf-8') as f: txt = f.read()
words = jieba.lcut(txt) excludes = ['却说', '二人', '不可', '将军', '丞相', '荆州', '不能', '如此']
count = {}
for word in words: if len(word) == 1 or word in excludes: continue elif word == "孔明" or word == "孔明曰" or word == "卧龙" or word == "诸葛丞相": rword = "诸葛亮" elif word in ["玄德", "玄德曰", "皇叔", "玄德公"]: rword = "刘备" elif word in ["孟德", "孟德曰", "曹丞相", "曹贼", "阿蛮"]: rword = "曹操" elif word in ["关公", "云长", "云长曰", "关将军"]: rword = "关羽" else: rword = word count[rword] = count.get(rword, 0) + 1
items = list(count.items()) items.sort(key=lambda x: x[1], reverse=True)
for i in range(10): word, times = items[i] print(f"{word}\t{times}")
|