实现文档聚类的总体思想:
- 将每个文档的关键词提取,形成一个关键词集合N;
- 将每个文档向量化,可以参看计算余弦相似度那一章;
- 给定K个聚类中心,使用Kmeans算法处理向量;
- 分析每个聚类中心的相关文档,可以得出最大的类或者最小的类等;
将已经分好词的文档提取关键词,统计词频:
# 计算每个文档的关键词和词频 # 关键词统计和词频统计,以列表形式返回 def Count(resfile): t = {} infile = open(resfile, 'r', encoding='utf-8') i = 0 f = infile.readlines() count = len(f) # print(count) infile.close() s = open(resfile, 'r', encoding='utf-8') while i < count: line = s.readline() line = line.rstrip('\n') # print(line) words = line.split(" ") # print(words) for word in words: if word != "" and t.__contains__(word): num = t[word] t[word] = num + 1 elif word != "": t[word] = 1 i = i + 1 # 按键值降序 dic = sorted(t.items(), key=lambda t: t[1], reverse=True) s.close() # 返回的是一篇文档的词项统计表,形式为[(word:出现次数)] return dic
上面的count函数统计的一篇文档的词频,如果每篇文档都需要统计则需要调用这个count函数,每调用一次就返回一个dict,给一个文档集统计词频的参考代码如下(假设有500篇文档):