利用TF-IDF及余弦公式处理文本相似性的计算
https://www.jianshu.com/p/68b0b3126e8c
2018.03.18 21:36* 字数 967 阅读 171评论 0喜欢 4
1 思路
要计算相似性,首先将文本转换成可计算的数。
比较简单的一种方式是把所有文章中的词作为坐标,在一篇文章上,对应词的词频作为在该坐标上的值,即可将一篇文章按词频转换成词向量——有了向量,相似性就好算了:距离公式、余弦都可以直接用。
更进一步:词频作权重过于简单,TF-IDF更有代表性。使用TF-IDF相当于考虑了词的重要性,计算出的相似性效果有使用价值了。
后续:要更精确,就需要考虑词与词之间相对位置的影响,涉及语义模型了,本篇暂不涉及。
2 处理过程
前置过程:已爬取约100篇文本存入MongoDB中,通过访问数据库直接取用对应文本。
2.1 首先要把文章分词
直接用大名顶顶的jiba分词,并使用哈工大停用词表+部分手工整理的停用词进行无效词剔除。
最终:将每篇文章转换成一个有分割符的词列(str),把词列并至一个list变量中输出待用。
defstopWords():stopwords = []forlineinopen('C:\\Users\\chai\\Documents\\哈工大停用词表.txt'): stopwords = stopwords + list(line)returnstopwordsdefget_corpus():corpus = []foriteminarticle_content.find().limit(5):