• 周总结


    '''
    TFIDF原理
    TF:单词词频。一个词在文章中出现的频率,公式:tf=词在文章中出现的次数/文章总的词汇数。文章可以是一个句子,也可以是一篇文章,根据具体情况定。
    idf:逆文件频率。词在该文章中出现的次数越少,越能够代表该文章。
    IDF=log(语料库的总文档数/包含该词条的文档数+1),分母+1是为了避免分母为0
    TFIDF=TF*IDF
    '''
    from gensim import corpora, similarities, models
    import jieba
    # 第一步:确定语料库的语料和要进行判断的句子:
    # wordlist作为语料库,语料库中有三句话,相当于三篇文章.比较sentences和wordlist中三句话的相似度
    wordlist = ['我喜欢编程', '我想变漂亮', '今天吃午饭了吗']
    # 注意这里是个字符串
    sentenses = '我喜欢什么'
    # 第二步:使用语料库建立词典,也就是给预料库中的每个单词标上序号,类似:{'我':1,'喜欢':2,'编程':3,....}首先进行中文分词
    text = [[word for word in jieba.cut(words)] for words in wordlist]
    dictionary = corpora.Dictionary(text)
    # 第三步,对语料中的每个词进行词频统计,doc2bow是对每一句话进行词频统计,传入的是一个list
    # corpus得到的是一个二维数组[[(0, 1), (1, 1), (2, 1)], [(3, 1), (4, 1)], [(5, 1), (6, 1), (7, 1), (8, 1), (9, 1)]],意思是编号为0的词出现的频率是1次,编号为2的词出现的频率是1次
    corpus = [dictionary.doc2bow(word) for word in text]
    # 第四步:使用corpus训练tfidf模型
    model = models.TfidfModel(corpus)
    # 要是想要看tfidf的值的话可以:
     
    tfidf = model[corpus]
    '''
    tfidf的结果是语料库中每个词的tfidf值
    [(0, 0.5773502691896258), (1, 0.5773502691896258), (2, 0.5773502691896258)]
    [(3, 0.7071067811865475), (4, 0.7071067811865475)]
    [(5, 0.4472135954999579), (6, 0.4472135954999579), (7, 0.4472135954999579), (8, 0.4472135954999579), (9, 0.4472135954999579)]
    '''
    # 第五步:为tfidf模型中的每个句子建立索引,便于进行相似度查询,传入的时候语料库的tfidf值
    similarity = similarities.MatrixSimilarity(tfidf)
    # 第六步,处理要比较的句子,首先分词,其次获得词频,jieba只能传入字符串
    sen = [word for word in jieba.cut(sentenses)]
    #doc2传入的是一个列表
    sen2 = dictionary.doc2bow(sen)
    # 然后计算它的tfidf值
    sen_tfidf = model[sen2]
    # 获得与所有句子的相似度,sim输出的是一个数组
    sim = similarity[sen_tfidf]
    # 获得最大值,转化成list进行操作,使用list的max函数
    max_sim = max(list(sim))
    # 获得最大值索引,使用list的index函数
    #max_index = sim.index(max)
     
    参考学习连接:
     https://blog.csdn.net/qq_33908388/article/details/94554309
  • 相关阅读:
    ATPCS规则
    ARM硬件问题
    ATPCS规则2
    12、深入理解计算机系统笔记:程序链接(1)
    11、深入理解计算机系统笔记:存储器层次结构,利用局部性
    15、深入理解计算机系统笔记:进程控制
    16、深入理解计算机系统笔记:信号
    9、深入理解计算机系统笔记:存储器层次结构,高速缓存存储器(1)
    *13、深入理解计算机系统笔记:程序链接(2)
    7、深入理解计算机系统笔记:存储器层次结构,存储技术(2)
  • 原文地址:https://www.cnblogs.com/zjl-0217/p/12695525.html
Copyright © 2020-2023  润新知