版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_1290259791/article/details/84284002
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是为了归一化,保证反文档频率不会过大。