文本相似度之LSI

本文介绍了VSM和LSI在文本相似度计算中的方法。VSM通过词袋模型和tfidf权重表示文本,但忽视词间关系。LSI利用SVD进行主题建模,改善了VSM的不足,通过文本主题矩阵计算相似度。并展示了LSI在实际数据处理中的步骤,包括数据准备、模型训练和测试。
摘要由CSDN通过智能技术生成

1.VSM简介

     空间向量模型VSM,是将文本表示成数值表示的向量。在使用VSM做文本相似度计算时,其基本步骤是:

    1)将文本分词,提取特征词s:(t1,t2,t3,t4)

    2)将特征词用权重表示,从而将文本表示成数值向量s:(w1,w2,w3,w4),权重表示的方式一般使用tfidf

    3)计算文本向量间的余弦值,判断文本间的相似度

缺点:空间向量模型以词袋为基础,没有考虑词与词间的关系,近义词等。

 

 2.LSI介绍

     潜在语义索引(Latent Semantic Indexing,以下简称LSI),有的文章也叫Latent Semantic  Analysis(LSA)。是一种简单实用的主题模型。LSI是基于奇异值分解(SVD)的方法来得到文本的主题的。其推导过程如下图:(参考:http://www.cnblogs.com/pinard/p/6251584.html ,https://www.cnblogs.com/pinard/p/6805861.html)

     

 

使用LSI计算文本相似度的基本过程:

    1).和VSM一样,得到文本的tfidf值的向量表示 

    2).做SVD分解,得到Uk词和词义之间的相关性。Vk文本和主题的相关性。

    3).利用文本主题矩阵计算文本的相似度(通过余弦值)

 

3.应用

1.准备数据

    数据分为两部分(Idx2ID,questionList)

   idx2ID:保存数据库中的ID及ID在文件中的下标,例如({0:100,1:101,2:102} 其中0,1,2为下标;100,102,103为数据库中的ID值)

  questionList:保存的是数据库中问题切词后的二维数组,例如[['我','跑路','了'],['你',‘很’,‘不开心’]]

  其中questionList中的数组下标与idx2ID中的下标一 一对应,及数据库中的保存记录为:(id:100,question:‘我跑路了’)

 

 

import re
from tqdm import tqdm
import os
import pickle
import jieba
import pymysql
import pandas as pd 

'''
从数据库获取训练数据
'''

#清洗数据,去掉停用词并进行jieba分词
stwlist = pickle.load(open('stop_word.pkl','rb'))
def getTrainData(sentence)
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值