NLP文本相似度

NLP文本相似度

相似度

  • 相似度度量:计算个体间相似程度

  • 相似度值越小,距离越大,相似度值越大,距离越小

  • 最常用--余弦相似度:​

    • 一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小

    • 余弦值接近1,夹角趋于0,表明两个向量越相似

  • 如果向量a和b不是二维而是n维

示例

  • 句子1:这只皮鞋号码大了,那只号码合适

  • 句子2:这只皮鞋号码不小,那只更合适

    ​分词

  • 句子1:这只/皮鞋/号码/大了,那只/号码/合适

  • 句子2:这只/皮鞋/号码/不/小,那只/更/合适

    ​列出所有词

  • 这只,皮鞋,号码,大了,那只,合适,不,小,更

    ​计算词频

  • 句子1:这只1,皮鞋1,号码2,大了1,那只1,合适1,不0,小0,更0

  • 句子1:这只1,皮鞋1,号码1,大了0,那只1,合适1,不1,小1,更1

    ​词频向量化

  • 句子1:(1,1,2,1,1,1,0,0,0)

  • 句子2:(1,1,1,0,1,1,1,1,1)

    ​套公式计算

     

处理流程

得到了文本相似度计算的处理流程:

  • 找出两篇文章的关键词

  • 每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频

  • 生成两篇文章各自的词频向量

  • 计算两个向量的余弦相似度,值越大就表示越相似

词频-TF

  • 假设:如果一个词很重要,应该会在文章中多次出现

  • 词频-TF(term frequency):一个词在文章中出现的次数

  • 也不是绝对的!出现次数最多的是“的”、“是”、“在”,这类最常用的词,叫做停用词(stop words)

  • 停用词对结果毫无帮助,必须过滤掉的词

  • 过滤掉停用词后就一定能解决问题么?

  • 进一步调整假设:如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能反映了这篇文章的特性,正是我们所需要的关键词

反文档频率-IDF

  • 在词频的基础上,赋予每一个词的权重,进一步体现该词的重要性

  • 最常见的词(“的”、“是”、“在”)给予最小的权重

  • 较常见的词(“国内”、“中国”、“报道”)给予较小的权重

  • 较少见的词(“养殖”、“维基”、“涨停”)给予最大的权重

  • 将TF和IDF进行相乘,就得到了一个词的TF-IDF值,某个词对文章重要性越高,该值越大, 于是排在前面的几个词,就是这篇文章的关键词。

计算步骤

  1. 词频(TF)= 某个词在文章中出现的次数

    • 词频标准化:词频(TF)=某个词在文章中出现的次数文章的总词数​

    • 词频标准化:词频(TF)=某个词在文章中出现的次数该文出现次数最多的词的出现次数​

  2. 反文档频率(IDF)= log(语料库文档总数包含该词的文档数​)

  3. TF-IDF = 词频(IF)* 反文档频率(IDF)

相似文章

  • 使用TF-IDF算法,找出两篇文章的关键词

    • top-n(TF-IDF值)

    • 按分数(TF-IDF值)过滤

  • 每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中词的词频(为了避免文章长度的差异,可以使用相对词频)

  • 生成两篇文章各自的词频向量

  • 计算两个向量的余弦相似度,值越大就表示越相似

自动摘要

  • 确定关键词集合

    • top-n(TF-IDF值)

    • 按分数(TF-IDF值)过滤

  • 找出包含关键词的句子

  • 对关键词排序,相对于的句子划分等级

  • 把等级高的句子取出来,就是摘要

  • 文章的信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。“自动摘要”就是要找出哪些包含信息多的句子

  • 句子的信息量用“关键词”来衡量,如果包含的关键词越多,就说明这个句子越重要

  • 只有关键词之间的距离小于“门槛值”,他们就被认为处于同一个蔟之中,如果两个关键词之间有5个以上的其他词,就可以把这两个关键词分在两个蔟

  • 对于每个蔟,都计算它的重要性分值

    蔟的重要性包含的关键词数量族的长度​

    示例:其中某个蔟一共有7个词,其中4个是关键词。因此,它的重要性分值等于(4*4)/7 = 2.3

  • 简化:不再区分“蔟”,只考虑句子包含的关键词。只考虑关键词首先出现的句子

    • 优点:简单快速,结果比较符合实际情况

    • 缺点:单纯以“词频”做衡量标准,不够全面,有时重要的词可能出现的次数并不多

最长公共子序列-LCS

  • 最长公共子序列(Longest Common Subsequence)

  • 一个序列s任意删除若干个字符得到的新序列T,则T叫做S的子序列

  • 两个序列X和Y的公共子序列中,长度最长的那个,定义为X和Y的最长公共子序列

    示例:

    1. 字符串12455245576的最长公共子序列为2455

    2. 字符串acdfg与adfc的最长公共子序列为adf

  • 注意区别最长公共字串(Longest Common Substring)

    • 最长公共字串要求是连续的

LCS作用

  • 求两个序列中最长的公共子序列算法

    生物学家常利用该算法进行基因序列对比,以推测序列的结构、功能和演化过程

  • 描述两段文字之间的“相似度”

    辨别抄袭,对一段文字进行修改之后,计算改动前后文字的最长公共子序列,将除此子序列外的部分提取出来,该方法判断修改的部分

求解-暴力穷举法

  • 假定字符串X,Y的长度分别为m,n;

  • X的一个子序列即下标序列{1,2,.......,m}严格递增子序列,因此,X共有​个不同子序列;同理,Y有​个不同子序列

  • 穷举搜索法时间复杂度O(​)

  • 对于X的每一个子序列,检查它是否也是Y的子序列,从而确定它是否为X和Y的公共子序列,并且在检查过程中选出最长的公共子序列

  • 复杂度高,不可用

求解-动态规划法

  • 字符串X,长度m;字符串Y,长度为n

  • ​即 X序列的前i个字符(1<= j <= m)(​计作“字符串X的i前缀”)

  • ​即 Y序列的前i个字符(1<= j <= n)(​计作“字符串X的j前缀”)

  • LCS(X,Y) = 为字符串X和Y的最长公共子序列,即为​

  • 若果​(最后一个字符相同),则:与​的最长公共子序列​的最后一个字符必定为​

  • 如果​

     1234567
    X B D C A B A  
    Y A B C B D A B

    对于上面的字符串X和Y:

    ​'C' 则有:LCS(BDC, ABC) = LCS(BD, AB) + 'C'

    ​'B' 则有:LCS(BDCAB, ABCB) = LCS(BDCA, ABC) + 'B'

    如果​ ,则​, 或者​,即​

    ​ 则有:​{​}

    ​ 则有:​{​}

    总结:

  • 属于动态规划问题

数据结构-二维数组

  • 使用二维数组C[m, n]

  • C[i, j]记录序列​和​的最长公共子序列的长度

    当或当且当且​

  • 例子

    X= <A, B, C, B, D, A, B>

    y = <B, D, C, A, B, A>

     j0123456
    i   B D C A B A
    0 0 0 0 0 0 0 0
    1 A 0 0 0 0 1 1 1
    2 B 0 1 1 1 1 2 2
    3 C 0 1 1 2 2 2 2
    4 B 0 1 1 2 2 2 3
    5 D 0 1 2 2 2 2 3
    6 A 0 1 2 2 3 3 4
    7 B 0 1 2 2 3 4 4

原文地址:https://www.cnblogs.com/zxbdboke/p/10507785.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


python方向·数据分析   ·自然语言处理nlp   案例:中文分词·社交网络分析      案例:人物关系分析·人工智能·深度学习·计算机视觉案例:行人检测·网络爬虫·量化交易          案例:多因子策略模型 
原文地址http://blog.sina.com.cn/s/blog_574a437f01019poo.html昨天实验室一位刚进组的同学发邮件来问我如何查找学术论文,这让我想起自己刚读研究生时茫然四顾的情形:看着学长们高谈阔论领域动态,却不知如何入门。经过研究生几年的耳濡目染,现在终于能自信地知道去哪儿了解最新科研
ptb数据集是语言模型学习中应用最广泛的数据集,常用该数据集训练RNN神经网络作为语言预测,tensorflow对于ptb数据集的读取也定义了自己的函数库用于读取,在python1.0定义了models文件用于导入ptb库函数,然而当python升级后,导入models文件时就会出现:ModuleNotFountError错误,这时需
 Newtonsoft.JsonNewtonsoft.Json是.Net平台操作Json的工具,他的介绍就不多说了,笔者最近在弄接口,需要操作Json。以某个云计算平台的Token为例,边操作边讲解。Json转为Model将Model转为Json将LINQ转为JSONLinq操作命名空间、类型、方法大全 Json转为Model 
NLP(NaturalLanguageProcessing)自然语言处理是人工智能的一个子领域,它是能够让人类与智能机器进行沟通交流的重要技术手段,同时也是人工智能中最为困难的问题之一。因此,NLP的研究处处充满魅力和挑战,也因此被称为人工智能“皇冠上的明珠”。目前各家主流深度学习框架,都开放了相应
做一个中文文本分类任务,首先要做的是文本的预处理,对文本进行分词和去停用词操作,来把字符串分割成词与词组合而成的字符串集合并去掉其中的一些非关键词汇(像是:的、地、得等)。再就是对预处理过后的文本进行特征提取。最后将提取到的特征送进分类器进行训练。一、什么是自然语言处
NLP(NaturalLanguageProcessing)自然语言处理是人工智能的一个子领域,它是能够让人类与智能机器进行沟通交流的重要技术手段,同时也是人工智能中最为困难的问题之一。因此,NLP的研究处处充满魅力和挑战,也因此被称为人工智能“皇冠上的明珠”。目前各家主流深度学习框架,都开放了相应
编者注:文中超链接如果不能访问可以点击“阅读原文”访问本文原页面;可以参考2018年5月21-24日伦敦Strata数据会议上的教学辅导课《使用spaCy和SparkNLP进行自然语言理解》。本系列博客的目地是通过使用两个领先的生产级语言处理库(JohnSnowLabs的ApacheSparkNLP和Explosion
NLP文本相似度相似度相似度度量:计算个体间相似程度相似度值越小,距离越大,相似度值越大,距离越小最常用--余弦相似度:​一个向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异的大小余弦值接近1,夹角趋于0,表明两个向量越相似如果向量a和b不是二维而是n维​
0.原文NLP系列(6)_从NLP反作弊技术看马蜂窝注水事件-寒小阳-CSDN博客https://blog.csdn.net/han_xiaoyang/article/details/842057011.马蜂窝是否有大量抄袭点评1.1先用词袋模型快速筛选一批相似点评词袋子模型是一种非常经典的文本表示。顾名思义,它就是将字符串视为
地址:https://gitbook.cn/books/5c7888e1a19247277cb5c313/index.html深度学习优势总结:手工特征耗时耗力,还不易拓展自动特征学习快,方便拓展深度学习提供了一种通用的学习框架,可用来表示世界、视觉和语言学信息深度学习既可以无监督学习,也可以监督学习在DeepNLP
本文将分享发表在2018年的NAACL上,outstandingpaper。论文链接ELMo。该论文旨在提出一种新的词表征方法,并且超越以往的方法,例如word2vec、glove等。论文贡献点能捕捉到更复杂的语法、语义信息。能更好的结合上下文内容,对多义词做更好的表征。(以往的词表征方法,例如word2ve
时间:2016年1月。出处:http://blog.csdn.net/longxinchen_ml/article/details/50597149http://blog.csdn.net/han_xiaoyang/article/details/50616559声明:版权所有,转载请联系作者并注明出处##1.引言贝叶斯方法是一个历史悠久,有着坚实的理论基础的方法,同时处理很多问题时
NLP的工程化,不是一个个算法的累积,也不是一个个任务的独立优化,而应该是系统工程,综合考虑语言、计算、场景等多种因素,不断演进融合,寻求效果满意解的过程。根据赫伯特.西蒙(图灵奖和诺贝尔奖双料得主)的有限理性模型,受到所处环境的高度复杂性和有限的信息加工能力限制,因此NLP应用
继NLP之后,我又开了ML这个大坑。这是因为NLP涉及到太多的ML模型,仅仅拿过来用的话,我实现的HanLP已经快到个人极限了。而模型背后的原理、如何优化、如何并行化等问题,都需要寻根求源才能解决。所以我找了个书单自学,电子书为主,顺便分享出来。 ML书单│  李航.统计学习方法.
少玩ai,人工智能,nlp,tensorflow之类的玄学,多学学基础,三大浪漫,C++,搞开发,千万不要变成调参侠
 0.introductionGAN模型最早由IanGoodfellowetal于2014年提出,之后主要用于signalprocessing和naturaldocumentprocessing两方面,包含图片、视频、诗歌、一些简单对话的生成等。由于文字在高维空间上不连续的问题(即任取一个wordembedding向量不一定能找到其所对应的文字),GA
自然语言处理Firstatall 因为本人换系统之前都在用oneNote,在ubuntu上部署不便,所以将一些常用的信息写成博客 本文主要引用Ruder大神的NLP-proress做了一下翻译和提取原文地址:传送门1.前沿技术StateoftheArt 机器学习和自然语言处理(NLP)的研究近来发展
北风网-人工智能就业班培训链接:https://pan.baidu.com/s/128DJgMY9G-fjzRAxq1QO-w  提取码:ngwi课程体系阶段一、人工智能基础-高等数学必知必会本阶段主要从数据分析、概率论和线性代数及矩阵和凸优化这四大块讲解基础,旨在训练大家逻辑能力,分析能力。拥有良好的数学基础,有利