精华内容
下载资源
问答
  • 主要介绍了Python实现简单的文本相似度分析操作,结合实例形式分析了Python基于分词API库jieba及文本相似度库gensim针对文本进行相似度分析操作的实现技巧与注意事项,需要的朋友可以参考下
  • 代码相似度分析工具

    2018-10-24 10:01:25
    一个代码相似度分析工具,结果准确度还行,分享给有需要的人。
  • 为了克服行波测距原理耐受过渡电阻能力较弱以及所需采样率过高的缺陷,提出了一种基于波形相似度分析的直流输电线路故障测距方法。基于正向、反向差电流与故障点电流的函数关系,利用Pearson相关系数分析2种差电流...
  • 根据已经训练好的word2vec词向量,对于文本相似度进行相关分析
  • C#怎么样用算法,对比比较两篇文章相似度,思路清晰,代码简洁,可以学习。
  • python文本相似度分析

    2019-01-26 19:29:01
    python爬虫,以及相似度分析,可以分析两个文本字符串的相似度
  • 一个轨迹相似度分析系统-计算轨迹或图形的形状相似度 开发及测试环境: GIS:百度地图主开发环境:MyEclipse2015 JDK配置:JDK1.8数据库:MySQLServer 5.0服务器:apache-tomcat-8.0.32测试浏览器:FireFox 47.0 ...
  • 其中有关于短文本相似度以及情感极性分析的算法。 短文本相似度算法(distance.py) 基于分词后单词: edit_similar(str1,str2):编辑距离相似度,输入为分词后的两个句子的列表,返回值为两者相似度。 cos_sim(str1, ...
  • 用户相似度分析

    2021-04-20 09:34:09
    用户相似度分析 计算用户购买物品的相似度 假设当前文件夹中有“用户行为记录.xlsx”,要求统计所有用户中相似度最高的n个用户及其共同购买物品数量,其中n可以指定为大于或等于2的整数。相似度高的定义为共同购买...

    用户相似度分析

    计算用户购买物品的相似度

    假设当前文件夹中有“用户行为记录.xlsx”,要求统计所有用户中相似度最高的n个用户及其共同购买物品数量,其中n可以指定为大于或等于2的整数。相似度高的定义为共同购买物品数量最多。

    文件“用户行为记录.xlsx”里的数据内容](https://img-blog.csdnimg.cn/2021042010032098.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2N4eTg2MTA0NjMxNw==,size_16,color_FFFFFF,t_70)

    程序编写

    使用Python扩展库openpyxl读取Excell文件中的数据,返回一个字典。在字典中,使用用户名字作为“键“,使用包含该用户购买物品名称的集合作为”值“。读取数据时,跳过表头,对于每一行有效数据,获取每一行的物品名称和用户清单,对该物品的购买用户进行分割得到用户列表,列表中的每个用户都购买过该行对应的物品。

    from itertools import combinations
    from functools import reduce
    import openpyxl
    from openpyxl import Workbook
    
    def getUsers(filename):
        users = dict()
        # 打开xlsx文件,并获取第一个worksheet
        wb = openpyxl.load_workbook(filename)
        ws = wb.worksheets[0]
        # 遍历Excel文件中的所有行
        for index, row in enumerate(ws.rows):
            # 绕过第一行的表头
            if index == 0:
                continue
            # 获取物品名称和用户列表
            filmName, actor = row[0].value, row[1].value.split(',')
            # 遍历购买该物品的所有用户,统计购买用户
            for a in actor:
                users[a] = users.get(a, set())
                users[a].add(filmName)
        return users
    data = getUsers(r'C:\Users\st\Desktop\用户行为记录.xlsx')
    def relations(num):
        # 参数num表示要查找购买物品相似的num个人    
        # 包含全部物品的集合
        allFilms = reduce(lambda x,y: x|y, data.values(), set())
        # 购买相似的num个用户及其购买物品的名称
        combiData = combinations(data.items(), num)
        trueLove = max(combiData,
                       key=lambda item: len(reduce(lambda x,y:x&y,
                                               [i[1] for i in item],
                                               allFilms)))
        return ('满意度相似的{0}个用户是{1},'
                'Ta们共同购买物品数量是{2}'.format(num,
                                  tuple((item[0] for item in trueLove)),
                                  len(reduce(lambda x,y:x&y,
                                         [item[1] for item in trueLove],
                                         allFilms))))
    print(relations(2))
    print(relations(3))
    print(relations(4))
    

    运行结果

    在这里插入图片描述

    展开全文
  • 利用Python进行文本相似度分析

    千次阅读 2019-03-11 16:15:38
    一、文本分析流程: 1.读取文档 2.对要计算的多篇文档进行分词 3.对文档进行整理成指定格式,方便后续计算 4.计算出词语的频率 5.对可选、低频词进行过滤 6.通过语料库建立词典 7.加载要对比的文档 8.将要...

    **

    一、文本分析流程:

    1.读取文档
    2.对要计算的多篇文档进行分词
    3.对文档进行整理成指定格式,方便后续计算
    4.计算出词语的频率
    5.对可选、低频词进行过滤
    6.通过语料库建立词典
    7.加载要对比的文档
    8.将要对比的文档通过doc2bow转化为稀疏向量
    9.对稀疏向量进一步处理,得到新语料库,
    10.通过TF-idf模型对新语料库处理,得到tfidf
    11.通过token2id得到特征数
    12.计算稀疏矩阵相似度,从而建立索引
    13.得到最终相似度结果

    二、代码示例

    from gensim import corpora,models,similarities
    import jieba
    from collections import defaultdict
    #  1.读取文档
    doc1 = "F:/result/1.txt"
    doc2 = "F:/result/3.txt"
    d1 = open(doc1,encoding="utf-8").read()
    d2 = open(doc2,encoding="utf-8").read()
    #  2.对要计算的多篇文档进行分词
    data1 = jieba.cut(d1)
    data2 = jieba.cut(d2)
    #   3.对文档进行整理成指定格式,方便后续计算  
           用累加的方式遍历   
    data11 = ""
    for item in data1:
        data11+=item+" "
    
    data22 = ""
    for item in data2:
        data22+=item+" "
    
    documents = [data11,data22]
    #  4.计算出词语的频率
    texts = [[word for word in document.split()]
            for document in documents]
    
    frequency = defaultdict(int)
    for text in texts:
        for token in text:
            frequency[token]+=1
    
    #  5.对可选、低频词进行过滤
    texts = [[word for word in text if frequency[token]>1000]
     for text in texts]              #从右往左读
    
    #  6.通过语料库建立词典
    dictionary = corpora.Dictionary(texts)
    dictionary.save("F:/result/wenben3.txt")
    
    #  7.加载要对比的文档
    doc3 = "F:/result/4.txt"
    d3 = open(doc3,encoding="utf-8").read()
    
    #  8.将要对比的文档通过doc2bow转化为稀疏向量
    data3 = jieba.cut(d3)
    data33 = ""
    for item in data3:
        data33+=item+""
    new_doc = data33
    new_vec = dictionary.doc2bow(new_doc.split())  #  得到稀疏向量
    corpus = [dictionary.doc2bow(text) for text in texts]
    
    #  10.通过TF-idf模型对新语料库处理,得到tfidf
    tfidf = models.TfidfModel(corpus)
    
    #  11.通过token2id得到特征数
    featureNum = len(dictionary.token2id.keys())
    
    #  12.计算稀疏矩阵相似度,从而建立索引
    index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNum)
    sim = index[tfidf[new_vec]]
    print(sim)
    
    

    结果:42.85%的相似度

    Building prefix dict from the default dictionary …
    Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache
    Loading model cost 1.007 seconds.
    Prefix dict has been built succesfully.
    [0. 0.42851594]

    Process finished with exit code 0

    展开全文
  • python数据分析-文本相似度分析

    千次阅读 2018-03-03 10:29:42
    由于本文设计较多知识点,在编写...它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。 gensim 以“文集”——文本文档的集合

    由于本文设计较多知识点,在编写代码之前需要搞清楚这些知识点的含义。

    1。知识点解释

    • Gensim是一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算,信息检索等一些常用任务的API接口。
      gensim 以“文集”——文本文档的集合——作为输入,并生成一个“向量”来表征该文集的文本内容,从而实现语义挖掘。
    • TF-IDF.对于提取一篇文章的关键词,如果某个词很重要,它应该在这篇文章中多次出现。于是,我们进行”词频”(Term Frequency,缩写为TF)统计。现次数最多的词是—-“的”、”是”、”在”—-这一类最常用的词。它们叫做”停用词”(stop words),表示对找到结果毫无帮助、必须过滤掉的词。而对于我们需要的关键词,例如对于上篇博文中的《丰乳肥臀》,出现最多的前十个词中包括如:上官,女人,一个,地说,母亲。显然对于关键词:一个,地说,对反应文章的特性并没有其余几个好,这时,就是在词频的基础上,要对每个词分配一个”重要性”权重。最常见的词(”的”、”是”、”在”)给予最小的权重,较常见的词(”一个”)给予较小的权重,较少见的词(”上官”、”女人”)给予较大的权重。这个权重叫做”逆文档频率”(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见程度成反比。知道了”词频”(TF)和”逆文档频率”(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章的重要性越高,它的TF-IDF值就越大。这里写图片描述这里写图片描述+1为了防止分母出现0。了解了TF-IDF之后,又出现了新的词:语料库。参考一
    • 语料库(corpus)。理论上语料越大越好 ,百度百科的解释:⒈语料库中存放的是在语言的实际使用中真实出现过的语言材料,因此例句库通常不应算作语料库;⒉语料库是承载语言知识的基础资源,但并不等于语言知识;⒊真实语料需要经过加工(分析和处理),才能成为有用的资源。
    • 余弦相似性。简单的说,对于要要计算相似度的两个句子,步骤:分词-计算词频-将词频写成向量形式-计算向量相似程度(向量夹角)。这里写图片描述
      计算方式如下:
      这里写图片描述
      这里写图片描述
      假定a向量是[x1, y1],b向量是[x2, y2],那么可以将余弦定理改写成下面的形式。
      这里写图片描述
      余弦的这种计算方法对n维向量也成立。假定A和B是两个n维向量,A是 [A1, A2, …, An] ,B是 [B1, B2, …, Bn] ,则A与B的夹角θ的余弦等于:
      这里写图片描述
      余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫”余弦相似性”。

      参考

      所以,对于要计算的两篇文章的相似度:
      (1)使用TF-IDF算法,找出两篇文章的关键词;
      (2)每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
      (3)生成两篇文章各自的词频向量;
      (4)计算两个向量的余弦相似度,值越大就表示越相似。

    2。代码

    #!/user/bin/env python
    #-*- coding:utf-8 -*-
    #author:M10
    import jieba
    from gensim import corpora,models,similarities
    from collections import defaultdict
    doc1 = '/Users/wangxingfan/Desktop/doc1.txt'
    doc2 = '/Users/wangxingfan/Desktop/doc2.txt'
    d1 = open(doc1).read()
    d2 = open(doc2).read()
    data1 = jieba.cut(d1)
    data2 = jieba.cut(d2)
    list1 = []
    list2 = []
    list = []
    for i in data1:
        list1.append(i)
    for i in data2:
        list2.append(i)
    list = [list1,list2]
    frequency = defaultdict(int)#如果键不存在则返回N/A,而不是报错,获取分词后词的个数
    for i in list:
        for j in i:
            frequency[j] +=1
    #创建词典
    dictionary = corpora.Dictionary(list)
    #词典保存到本地
    dictionary.save('/Users/wangxingfan/Desktop/dic1.txt')
    doc3 = '/Users/wangxingfan/Desktop/doc3.txt'
    d3 = open(doc3).read()
    data3 = jieba.cut(d3)
    data31 = []
    for i in data3:
        data31.append(i)
    new_doc = data31
    #稀疏向量.dictionary.doc2bow(doc)是把文档doc变成一个稀疏向量,[(0, 1), (1, 1)],表明id为0,1的词汇出现了1次,至于其他词汇,没有出现。
    new_vec = dictionary.doc2bow(new_doc)
    #获取语料库
    corpus = [dictionary.doc2bow(i) for i in list]
    tfidf = models.TfidfModel(corpus)
    #特征数
    featureNUM = len(dictionary.token2id.keys())
    #通过TfIdf对整个语料库进行转换并将其编入索引,以准备相似性查询
    index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNUM)
    #计算向量相似度
    sim = index[tfidf[new_vec]]
    print(sim)

    输出结果[ 0. 0.7104941]
    参考:
    gensim教程
    gensim:相似性查询
    如何计算两个文档的相似度(二)

    展开全文
  • 文本相似度分析

    千次阅读 2018-11-04 21:58:53
    就拿我来说最近读的“一寸山河一寸血”和“混在三国当军阀”这两本书,本人感觉很相似,但具体相似多少就需要量化,因此想通过电脑来分析一下。接下来就不废话直接上原理和具体算法。  用到算法的概述:通过TF-IDF...

    1 算法小结

         相信有些人在闲暇时间喜欢读小说,至于什么小说在这就不一而论了。就拿我来说最近读的“一寸山河一寸血”和“混在三国当军阀”这两本书,本人感觉很相似,但具体相似多少就需要量化,因此想通过电脑来分析一下。接下来就不废话直接上原理和具体算法。

       用到算法的概述:通过TF-IDF计算文本的关键词,如果某个词很重要,它应该在这篇文章中多次出现,我们进行”词频”(Term Frequency,缩写为TF)统计;另外要对每个词分配一个”重要性”权重。最常见的词(”的”、”是”、”在”)给予最小的权重,较常见的词(”一个”)给予较小的权重,较少见的词给予较大的权重。这个权重叫做”逆文档频率,它的大小与一个词的常见程度成反比。知道了”词频”(TF)和”逆文档频率”(IDF)以后,将这两个值相乘,就得到了一个词的TF-IDF值。得到tf-idf通过token2id得到特征数(可以用来计算的特征)然后计算稀疏矩阵相似度,从而建立索引,最后计算相似度结果。(TF-IDF算法就不详细及介绍哈,这个很多可以查到)

    2 具体的步骤:

        详细过程:1)读取文档(1-6分析文档);2)对要计算的多篇文档进行分词;3)对文档进行整理成指定格式,方便后续进行计算;4)计算出词语的频率;5)对频率低的词语进行过滤(看数据量决定);6)通过语料库建立词典;7)加载要对比的文档(计算要分析的文档7-13);8)将要对比的文档通过doc2bow转化为稀疏向量;9)对稀疏向量进行进一步处理,得到新语料库;10)将新语料库通过tfidfmodel进行处理,得到tfidf;11)通过token2id得到特征数(可以用来计算的特征);12)稀疏矩阵相似度,从而建立索引;13)得到最终相似度结果

    3 具体实例

    import jieba
    from gensim import corpora,models,similarities
    from collections import defaultdict
    doc1 = 'C:/Users/test2/Desktop/hzsgdjf.txt'
    d1 = open(doc1,'r',encoding="utf-8").read()
    data1 = jieba.cut(d1)
    list1 = []
    list = []
    for i in data1:
        list1.append(i)
    list = [list1]
    frequency = defaultdict(int)#如果键不存在则返回N/A,而不是报错,获取分词后词的个数
    for i in list:
        for j in i:
            frequency[j] +=1
    #创建词典
    dictionary = corpora.Dictionary(list)
    #词典保存到本地
    dictionary.save('C:/Users/test2/Desktop/dic1.txt')
    doc3 = 'C:/Users/test2/Desktop/ycshycx.txt'
    d3 = open(doc3,'r',encoding="utf-8").read()
    data3 = jieba.cut(d3)
    data31 = []
    for i in data3:
        data31.append(i)
    new_doc = data31
    #稀疏向量.dictionary.doc2bow(doc)是把文档doc变成一个稀疏向量,[(0, 1), (1, 1)],表明id为0,1的词汇出现了1次,至于其他词汇,没有出现。
    new_vec = dictionary.doc2bow(new_doc)
    #获取语料库
    corpus = [dictionary.doc2bow(i) for i in list]
    tfidf = models.TfidfModel(corpus)
    #特征数
    featureNUM = len(dictionary.token2id.keys())
    #通过TfIdf对整个语料库进行转换并将其编入索引,以准备相似性查询
    index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNUM)
    #计算向量相似度
    sim = index[tfidf[new_vec]]
    print(sim)

    以上程序可以在jupyter中实现,可以实现简单文本相似度的计算。

    展开全文
  • 项目:文本相似度分析(C++)

    千次阅读 2019-02-28 13:10:40
    文本相似度分析 简介:基于jieba 分词第三方库。 jieba 库地址:https://github.com/fxsjy/jieba.git 简单的介绍一下 jieba 第三方库所用到的算法。 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词...
  • FSV算法,特征选择算法,用于分析两个序列的相似度
  • 用Python进行简单的文本相似度分析学习目标:利用gensim包分析文档相似度使用jieba进行中文分词了解TF-IDF模型环境:Python 3.6.0 |Anaconda 4.3.1 (64-bit)工具:jupyter notebook注:为了简化问题,本文没有剔除...
  • Java进行语义相似度分析

    千次阅读 2017-11-02 14:35:23
    给定文本input.txt ,其中有750对英文句子,以" 句子1 + Tab + ... 完成上一个任务后,老师还会给出一个针对上述750对句子,人工给出的相似度评分文件standardAnalysis.txt,现在又要求利用Pearson相关系数法,分析out
  • 文本相似度分析实例

    千次阅读 2018-10-26 22:38:15
    1.读取文档 2.对计算的文档进行分词 3.对文档进行整理成指定格式,方便后续进行计算 4.计算出词语的频率 5.【可选】对频率低的词语进行过滤 6.通过语料库建立词典 7.加载要对比的文档 ...12.计算稀疏矩阵相似度,...
  • 基于CNN和词向量的文本相似度分析

    万次阅读 热门讨论 2018-07-11 11:08:14
    发现很多伙伴需要更详细的东西,后续更新了一下,请关注:https://blog.csdn.net/Mr_carry/article/details/95082422。...由此而生,我们自然想到通过分类来减少信息检索,分类的依据就是文本之间的相似度,同时人们...
  • 序列比较是生物信息学的基础之一,可用于研究序列之间的进化... 在所有蛋白质序列上都展示了一种新的相似性分析方法,该序列由20种不同物种的线粒体基因组编码。 最后,与ClustalW方法的比较显示了我们方法的实用性。
  • 文中针对现有蠕虫检测算法误检率高的问题,提出了一种基于相似度分析的蠕虫检测算法。该算法通过分析异常数据序列与蠕虫行为特征之间的相似性,实现对基本累计异常行为特征检测算法的优化;同时,考虑到复杂的网络环境,...
  • 相似度的研究涉及词语、组块、句子以及篇章等多个层面,目前的研究主要侧重于词语方面,提出了一些比较有代表性的理论与方法,如字面相似度算法、词素相似度算法,以及基于同义词词林、知网等语义词典的方法,国外的...
  • 分享一篇hanlp分词工具使用的小案例,即利用hanlp分词工具分析两个中文语句的相似度的案例。供大家一起学习参考!   在做考试系统需求时,后台题库...下面介绍如何使用Java实现上述想法,完成语句相似度分析:...
  • 总结文本相似度分析的步骤: 1、读取文档 2、对要计算的多篇文档进行分词 3、对文档进行整理成指定格式,方便后续进行计算 4、计算出词语的词频 5、【可选】对词频低的词语进行过滤 6、建立语料库词典 7、加载要对比...
  • 基于稀疏表示的图像相似度保留和相似度分析
  • 针对当前常用爬虫爬行策略的不足,提出结合维基百科和网页相似度分析的主题爬行策略。利用维基百科分类树的结构对主题进行描述;下载网页后对网页进行相应处理,结合文本相关性和Web链接分析来计算候选链接的优先级...
  • 多个文本对比相似度分析

    千次阅读 2018-11-19 16:08:12
    相似度分析 这块参考( https://blog.csdn.net/xiexf189/article/details/79092629 ) 使用TF-IDF模型对语料库建模 tfidf = models.TfidfModel(corpus) 获取测试文档中,每个词的TF-IDF值 tfidf[doc_test_...
  • 基于深度学习的慢性肝病CT报告相似度分析.pdf
  • 歌曲的相似度分析和听歌识曲原理核心思路基本一致,都是提取歌曲的声纹进行判断,提取声纹的方法,这里就要搬出我们大学学过的傅里叶变换了 关于傅里叶变换的普及,可以参考链接 ... 这里听歌识曲,是有一个比较出名...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,866
精华内容 19,546
关键字:

相似度分析