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)
    操作步骤
  • 相关阅读:
    Codeforces Round #263 (Div. 2)
    蓝桥杯 翻硬币
    蓝桥杯 错误的票据
    蓝桥杯 带分数
    蓝桥杯 核桃的数量 求三个数的最小公倍数
    poj 3928 ping pong 树状数组
    lca
    poj 3927 Priest John's Busiest Day
    种类并查集
    高桥和低桥 ( 代代相传刷qq + 无敌二分 )
  • 原文地址:https://www.cnblogs.com/liangsha0/p/11251978.html
Copyright © 2011-2022 走看看