zoukankan      html  css  js  c++  java
  • jieba gensim 相似度实现

    import jieba
    from gensim import corpora  # (语料库)
    from gensim import models   # 训练模型
    from gensim import similarities  # 相似度处理
    
    # 总体思路;
    # 1.先遍历语法库,jieba.cut(每一个句子),生成[['你', '今年', '几岁', '了'],[],[]]形式的all_doc_list
    # 2.制作语料库,dictionary=corpora.Dictionary(all_doc_list),词袋
    # 3.corpus = [dictionary.doc2bow(doc) for doc in all_doc_list] 制作成[ [(0, 1), (4, 1)], [(1, 1), (10, 1)] ]
    #       解释:doc2bow(['你', '今年', '几岁', '了']) 把句子变成这个样子[(1, 1), (5, 1), (6, 1)]
    # 4.制作训练模型  lsi = models.LsiModel(corpus)
    # 5.稀疏矩阵相似度  index = similarities.SparseMatrixSimilarity(lsi[corpus], num_features=len(dictionary.keys()))
    # 6.筛选后掉下来的1:sim = index[lsi[测试词袋]]  [0.29518965 0.9900962  0.46673587 0.46673578]
    # 7.对结果由大到小排序  cc = sorted(enumerate(sim), key=lambda item: -item[1])
    # 8.取出第一个text = l1[cc[0][0]]  #cc[0][0] 等于排序后的索引数字
    
    l1 = ["你的名字是什么", "你今年几岁了", "你有多高你胸多大", "你胸多大"]
    a = "你今年多大了"
    # 结巴分词之后,制作成[[],[],[]]形式,doc每个词,每个词都要结巴cut一下,jieba之后生成的是生成器
    all_doc_list = []
    for doc in l1:
        word_l = list(jieba.cut(doc))
        all_doc_list.append(word_l)
    # 做词袋 分 词库词袋 和 测试词袋
    dictionary = corpora.Dictionary(all_doc_list)  # 词库词袋
    corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]  # 词库词袋数字对应关系
    
    test_doc = list(jieba.cut(a))
    test = dictionary.doc2bow(test_doc)   # 测试匹配词库词袋之后的  词袋数字对应关系[(1, 1), (5, 1), (6, 1)]
    # 制作训练模型
    lsi = models.LsiModel(corpus)
    # 相似度处理
    index = similarities.SparseMatrixSimilarity(lsi[corpus], num_features=len(dictionary))
    simi = index[lsi[test]]
    
    # 排序 取值
    after_order = sorted(enumerate(simi), key=lambda x:x[1], reverse=True)
    text = l1[after_order[0][0]]
    
    print(a, text)
    操作步骤
  • 相关阅读:
    解决shiro多次从redis读取session的问题
    软件测试其他方法
    异常HTTP Status 500
    支付
    java面试
    SQL入门
    软件测试理论基础
    软件测试学习第一章
    Linux在终端命令行模式下智能补全功能以及组合键
    Linux安装
  • 原文地址:https://www.cnblogs.com/liangsha0/p/11251978.html
Copyright © 2011-2022 走看看