NLP文本相似度
相似度度量:计算个体间相似程度
jieba:Python的第三方库,用于自然语言处理,对文本进行分词。
gensim:利用 TF-IDF 算法来进行文本相似度计算。
处理思路: jieba 进行分词,整理为指定格式,利用 gensim 库将要对比的文档通过 doc2bow 转换成稀疏向量,再通过 models 中的 TF-IDF 将语料库进行处理,特征值和稀疏矩阵相似度建立索引,来得到最后的相似结果。
余弦相似度、向量空间模型
最常用:余弦相似度,向量空间中两个向量夹角的余弦值作为衡量两个个体间的差异大小
文字中向量属于n维度,将词频向量化。
两个句子的相似度计算
通过中文分词,把完整句子根据分词算法分为独立的词集合
求出两个词集合的并集
计算各自词集的词频并把词频向量化
带入向量计算模型来求出文本相似度
处理文本相似度流程是
找出文章的关键词
求出两个词集和的并集
计算每篇文章对于集合中的词的词频
计算两篇文章各自的词频向量
计算两个向量的余弦相似度,值越大表示越相似
TF-IDF
TF-词频
TF——词频:一个词在文章问出现的次数
假设:如果一个词很重要,应该在文章中多次出现
注意停用词: 像‘的’、‘好’这种词被列为停用词,被列为黑名单
停用词对结果没有作用,过滤掉停用词
反假设:如果某个词较少出现,但是在文章中出现多次出现,它很可能反应这篇文章的特性,正是关键词。
IDF-反文档频率
在词频的基础上,赋予每个词的权重,体现改词的重要性。
常见的词,给予最小的权重
较常见的词,给予较小的权重
较少见的词
将 TF 和 IDF 相乘,就得到一个词的 TF-IDF 值,某个词对文章的重要性越高,该值就越大,排在前面的词语,就是这篇文章的关键词。
**注意:**实际中,还要考虑词的词性,动词、名次、形容词的刻画能力也是有差别的。
计算步骤
词频(TF):某个词在文章出现的次数,两种计算方式。
TF=(某词在文章出现总次数/文章的总词数) 得出词汇较小,不便于分析。
TF=(某词在文章中出现的次数/文中出现次数最多的词的次数) 标准更适用,因为能够使词频的值相对大点,便于分析。
反文档词频(IDF):log(语料库的文档总数/包含改词的文档数+1)
分母+1,为了防止分母为0的情况。
log函数是单调递增,求log是为了归一化,保证反文档频率不会过大。
还没有评论,来说两句吧...