NLP文本相似度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_1290259791/article/details/84284002

NLP文本相似度

相似度度量:计算个体间相似程度

  • jieba:Python的第三方库,用于自然语言处理,对文本进行分词。
  • gensim:利用 TF-IDF 算法来进行文本相似度计算。

处理思路: jieba 进行分词,整理为指定格式,利用 gensim 库将要对比的文档通过 doc2bow 转换成稀疏向量,再通过 models 中的 TF-IDF 将语料库进行处理,特征值和稀疏矩阵相似度建立索引,来得到最后的相似结果。

余弦相似度、向量空间模型

  • 最常用:余弦相似度,向量空间中两个向量夹角的余弦值作为衡量两个个体间的差异大小
  • 文字中向量属于n维度,将词频向量化。

两个句子的相似度计算

  1. 通过中文分词,把完整句子根据分词算法分为独立的词集合
  2. 求出两个词集合的并集
  3. 计算各自词集的词频并把词频向量化
  4. 带入向量计算模型来求出文本相似度

处理文本相似度流程是

  1. 找出文章的关键词
  2. 求出两个词集和的并集
  3. 计算每篇文章对于集合中的词的词频
  4. 计算两篇文章各自的词频向量
  5. 计算两个向量的余弦相似度,值越大表示越相似

TF-IDF

TF-词频

TF——词频:一个词在文章问出现的次数

  • 假设:如果一个词很重要,应该在文章中多次出现
  • 注意停用词: 像‘的’、‘好’这种词被列为停用词,被列为黑名单
  • 停用词对结果没有作用,过滤掉停用词
  • 反假设:如果某个词较少出现,但是在文章中出现多次出现,它很可能反应这篇文章的特性,正是关键词。

IDF-反文档频率

在词频的基础上,赋予每个词的权重,体现改词的重要性。

  • 常见的词,给予最小的权重
  • 较常见的词,给予较小的权重
  • 较少见的词

TFIDF 相乘,就得到一个词的 TF-IDF 值,某个词对文章的重要性越高,该值就越大,排在前面的词语,就是这篇文章的关键词。
**注意:**实际中,还要考虑词的词性,动词、名次、形容词的刻画能力也是有差别的。

计算步骤

  • 词频(TF):某个词在文章出现的次数,两种计算方式。
  1. TF=(某词在文章出现总次数/文章的总词数) 得出词汇较小,不便于分析。
  2. TF=(某词在文章中出现的次数/文中出现次数最多的词的次数) 标准更适用,因为能够使词频的值相对大点,便于分析。
  • 反文档词频(IDF):log(语料库的文档总数/包含改词的文档数+1)
  1. 分母+1,为了防止分母为0的情况。
  2. log函数是单调递增,求log是为了归一化,保证反文档频率不会过大。

猜你喜欢

转载自blog.csdn.net/qq_1290259791/article/details/84284002