开发者社区> 大数据资讯> 正文

pyhanlp 共性分析与短语提取内容详解

简介: HanLP中的词语提取是基于互信息与信息熵。想要计算互信息与信息熵有限要做的是 文本分词进行共性分析。在作者的原文中,有几个问题,为了便于说明,这里首先给出短语提取的原理。在文末在给出pyhanlp的调用代码。
+关注继续查看

 

简介

HanLP中的词语提取是基于互信息与信息熵。想要计算互信息与信息熵有限要做的是 文本分词进行共性分析。在作者的原文中,有几个问题,为了便于说明,这里首先给出短语提取的原理。在文末在给出pyhanlp的调用代码。

共性分析

04f1c5578cb3b059ff055ffc96b8663e48c68ad7 


互信息mi,左熵lr,右熵re,详细解释见下文

信息论中的互信息

4d30240f885e7bd4c6ff662a003689d32b8e083a 

5

一般而言,信道中总是存在着噪声和干扰,信源发出消息x,通过信道后信宿只可能收到由于干扰作用引起的某种变形的y。信宿收到y后推测信源发出x的概率,这一过程可由后验概率p(x|y)来描述。相应地,信源发出x的概率p(x)称为先验概率。我们定义x的后验概率与先验概率比值的对数为y对x的互信息量(简称互信息)。

根据熵的连锁规则,有

 

1| H(X,Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)

 

因此,

 

1|H(X) - H(X|Y) = H(Y) - H(Y|X)

 

这个差叫做X和Y的互信息,记作I(X;Y)。

 

4ff30c28351a6df74a6ad81698fd784774fdb37d

 

其中P(x) 为 单词x出现的次数与总单词数的比值(数学含义为单词x出现的概率)。而P(x,y)则为二阶短语x->y 出现的次数与所有二阶短语的次数。

 

比如在刚刚的说明中,假设默认分词方式将“后验概率”分为“后验”,“概率” 两个大短语,则后验->概率 这个二阶短语一共出现了两次,假设所有二阶短语合共有一百个,则p(后验->概率) = 2 /100 = 1/ 50。

 

要注意的是hanlp作者个的文章《基于互信息和左右信息熵的短语提取识别》中。公式与表标准定义的互信息并不一致,少乘了一个p(x,y),查看源码发现作者确实是按照没有p(x,y)的公式进行计算的。不过使用简化公式计算似乎也是没有问题的。此处还可以参考大鱼的一篇文章

 

信息熵

 

利用信息熵提取

熵这个术语表示随机变量不确定性的量度。具体表述如下: 一般地, 设X 是取有限个值的随机变量( 或者说X 是有限个离散事件的概率场) , X 取值x 的概率为P ( x ) , 则X 的熵定义为:

be55e98a4f2552be9bc76a29bfb104445d3a53f0 


左右熵是指多字词表达的左边界的熵和右边界的熵。左右熵的公式如下:

 

5d27d668cf12ffadac5519dfc7a284dcacb9877f

 

具体计算方法是,以左熵为例,对一个串左边所有可能的词以及词频,计算信息熵,然后求和。

比如算法->工程师这个二阶短语,其左边可能有很多接续,比如“从事算法工程师”和“成为算法工程师”,当其接续多了,左熵也就会更高。这个二阶短语是一个二阶短语的可能性就更大一些。

但是这里存在一个问题,贾母默认分词与停用词效果不好,可能会将“abcd”分成“a,b,c,d”然后去掉“c”这种停用词,这样“a,b,d”则可能被作为一个三阶短语发现。在HanLP中因为只能发现二阶短语,所以可能因为去掉“a,b”中的一个导致无法发现二阶短语这种情况出现,但是这只存在着理论上的可能。

 

共性分析

 

共性 是指 文本中词语共同出现的情况。在hanlp中如果直接调用共性分析模块不仅可以获取词频统计,还可以一同给出互信息mi,左熵lr,右熵re。以下是pyhanlp中的使用。

 

c3bdd1ee0df71466632fd14fc0e8e89b5ab42d14

41fdc488523797dfbc9c0d034b09a9aa71e2d04d 

105fbe1cf280a873aa90d40dc56965a4ddf475f8 


短语提取

 

说明

 

内部采用MutualInformationEntropyPhraseExtractor实现,用户可以直接调用MutualInformationEntropyPhraseExtractor.extractPhrase(text, size)

算法详解

《基于互信息和左右信息熵的短语提取识别》

该功能的实现依赖于共性分析,详细内容可以查看《基于互信息和左右信息熵的短语提取识别

 

pyhan中的短语提取

 

# 短语提取

text = """算法工程师\n

        算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。算法工程师就是利用算法处理事物的人。\n

        1职位简介\n

        算法工程师是一个非常高端的职位;\n

        专业要求:计算机、电子、通信、数学等相关专业;\n

        学历要求:本科及其以上的学历,大多数是硕士学历及其以上;\n

        语言要求:英语要求是熟练,基本上能阅读国外专业书刊;\n

        必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。\n

        2研究方向\n

        视频算法工程师、图像处理算法工程师、音频算法工程师 通信基带算法工程师\n

        \n

        3目前国内外状况\n

        目前国内从事算法研究的工程师不少,但是高级算法工程师却很少,是一个非常紧缺的专业工程师。算法工程师根据研究领域来分主要有音频/视频算法处理、图像技术方面的二维信息算法处理和通信物理层、雷达信号处理、生物医学信号处理等领域的一维信息算法处理。\n

        在计算机音视频和图形图像技术等二维信息算法处理方面目前比较先进的视频处理算法:机器视觉成为此类算法研究的核心;另外还有2D转3D算法(2D-to-3D conversion),去隔行算法(de-interlacing),运动估计运动补偿算法(Motion estimation/Motion Compensation),去噪算法(Noise Reduction),缩放算法(scaling),锐化处理算法(Sharpness),超分辨率算法(Super Resolution),手势识别(gesture recognition),人脸识别(face recognition)。\n

        在通信物理层等一维信息领域目前常用的算法:无线领域的RRM、RTT,传送领域的调制解调、信道均衡、信号检测、网络优化、信号分解等。\n" +

        另外数据挖掘、互联网搜索算法也成为当今的热门方向。\n

        算法工程师逐渐往人工智能方向发展。"""

                

                

phraseList = HanLP.extractPhrase(text, 10)

print(phraseList);

 

1|[算法工程师, 算法处理, 一维信息, 算法研究, 图像技术, 信号处理, 信息算法, 处理算法, 视频算法, 通信物理]

 

作者:Font Tian  

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【贪心思想】兄弟总爱贪小便宜,原来是把贪心算法掌握得如此熟练【经典例题讲解】
贪心是不是最难的算法呀?答案确实是肯定的,那有的兄弟们就觉得那我是不是要把其他的算法都学熟练以后再来学习贪心呢?这个答案却是否定的。贪心确实是没有套路可言,与其说它是算法,更不如说贪心更像是一种思想。正所谓人不为己天诛地灭,人有贪嗔痴三念,贪心这件事上每个人都是有天赋的,所以我们从开始学习算法就要训练一种贪心的思想。给个小剧场让大家代入一下
6 0
大三专科实习第一个月——推荐极具有价值的小众网站
简介:脱变从现在开始,以下文章讲述的是广度问题接下来方向将是深度的问题。
20 0
为什么不让用join?《死磕MySQL系列 十六》
为什么不让用join?《死磕MySQL系列 十六》
9 0
Java8系列之 Lambda表达式(一)
Java8系列之 Lambda表达式(一)
1 0
【圣诞专场】刷完这套链表套题,面试官考链表的时候我笑出了声(上)
数据结构与算法的重要性相信大家都已经非常清楚。其中链表更是其中的重中之重,很多兄弟就感觉,诶无非单链表双链表实现增删改查,非常简单。确实,链表虽然简单,但许多兄弟也仅仅是在自己的编译器上完成过链表的这些基础功能。那如何检验自己的链表水平呢?——这里我为大家排好了一套链表专题,题目由简到难,囊括链表所有题型,帮你完美过渡。其中我也附带了自身的详细题解,照着这套题目刷下去,相信大家对于链表的操作更加是得心应手。建议收藏,有空时可根据题目顺序训练。
1 0
【圣诞专场】刷完这套链表套题,面试官考链表的时候我笑出了声(下)
【圣诞专场】刷完这套链表套题,面试官考链表的时候我笑出了声
1 0
初学者都能学会的ElasticSearch入门实战《玩转ElasticSearch 2》-3
初学者都能学会的ElasticSearch入门实战《玩转ElasticSearch 2》
1 0
【几数之和系列】四数之和都不会做,面试官让我回去看力扣第一题(上)
今天为大家讲解的是力扣经典的几数之和系列。有句话说得好——有人夜里看海,有人力扣第一题都做不出来。大家应该都知道力扣的第一题是两数之和。但其实两数之和只是一个起始,在进阶的还有三数之和,四数之和以及四数相加等等。今天我为大家将这一系列从易到难为大家整合好,其中详细解析各种方法,帮助大家总结其中规律,以达到举一反三的效果。建议大家收藏,方便训练。
1 0
【几数之和系列】四数之和都不会做,面试官让我回去看力扣第一题(下)
【几数之和系列】四数之和都不会做,面试官让我回去看力扣第一题
1 0
+关注
大数据资讯
hadoop爱好者
149
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载