中文文本分析(3)--文本相似度

中文文本分析(3)--文本相似度


应用场景:
①信息检索,通过相似度识别相似的词语,找出与检索词语相似的结果。
②自动问答,通过关键词进行搜索问题,相似程度最高的问题对应的答案即被响应。

处理对象:
已经做好分词准备的List,做对比的关键词keyword
【例如】list为歌名-歌词,keyword为海、鱼

List = ["《美人鱼》-我也可以为你潜入海里面",
       "《秋刀鱼》-秋刀鱼的滋味",
       "《飞鱼》-这海我都聆听过",
       "《可不可以》-我可以带你去吃很多,很多好东西",
       "《珊瑚海》-不是浪而是泪海,海鸟跟鱼相爱",
       "《仰泳的鱼》-我就如仰泳的鱼,在大海中"]
keyword =["海","鱼"]

"""分词后如下"""

[['美人','鱼', '潜入', '海'],
 ['鱼', '鱼', '滋味'],
 ['鱼', '海', '聆听'], 
 ['可不可以', '带你去', '吃', '好东西'],
 ['珊瑚', '海', '浪', '泪海', '海鸟', '鱼', '相爱'],
 ['仰泳', '鱼', '仰泳', '鱼', '海']]


 

1、 需要的包

from gensim.similarities import SparseMatrixSimilarity 
from gensim.corpora import Dictionary
from gensim.models import TfidfModel

2、流程

TF-IDF模型训练
TF-IDF模型训练
list
稀疏向量
相似度结果
keyword
稀疏向量

3、代码

def similar_result(sentence,key):
        # 1、基于文本集建立词典,并获得词典特征数
        all_dict = sentence
        content_dict = Dictionary(all_dict)
        # 2、基于文本集建立词典,并获得词典特征数
        num_features = len(content_dict.token2id)
        # 3.1、基于词典,将分词列表集转换成稀疏向量集,称作语料库
        corpus = [content_dict.doc2bow(sen) for sen in sentence]
        # 3.2、同理,用词典把搜索词也转换为稀疏向量
        kw_vector = content_dict.doc2bow(key)
        # 4、创建TF-IDF模型,传入语料库来 训练
        tfidf = TfidfModel(corpus)
        # 5、用训练好的TF-IDF模型处理被检索文本和搜索词
        tf_texts = tfidf[corpus]  
        # 此处将语料库用作被检索文本
        tf_kw = tfidf[kw_vector]
        sparse_matrix = SparseMatrixSimilarity(tf_texts, num_features)
        similaritie = sparse_matrix.get_similarities(tf_kw)
        result = []
        for e, s in enumerate(similaritie, 1):
            result.append(s)
        return result

输出:[0.24081758, 0.08178492, 0.24081758, 0.0, 0.1102856, 0.14327577]

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值