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

简介

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

共性分析

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

信息论中的互信息

一般而言,信道中总是存在着噪声和干扰,信源发出消息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)。

其中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 的熵定义为:

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

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

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

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

共性分析

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

图10

短语提取

说明

内部采用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

matlab的NLP功能,pyhanlp 共性分析与短语提取内容详解相关推荐

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

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

  2. pyhanlp 共性分析与短语提取

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

  3. 微信分账功能与微信支付企业付款相关内容详解(payjs版)

    PAYJS开通微信分账功能以来,有很多同学咨询相关情况.很多同学关心有没有什么办法,可以让自己的商户号快速开通企业付款功能.这里就介绍下微信分账的具体相关内容,可以完美解决问题. 一.什么是微信分账? ...

  4. SIMPLIS仿真软件3-暂态分析(Transient Analysis)详解

    SIMPLIS仿真软件3-暂态分析(Transient Analysis)详解 导读 SIMPLIS Status窗口 SIMPLIS暂态仿真的机制 一个关于暂态分析的有用的小技巧 Back Anno ...

  5. 功能表单之人员构造器字段类型详解—JEPLUS软件快速开发平台

    为什么80%的码农都做不了架构师?>>>    JEPLUS功能表单之人员构造器字段类型详解 大家平时在开发过程中会遇到各种各样的选择人员的操作,比如负责人,登记人,当前操作人,部门 ...

  6. NLP --- 隐马尔可夫HMM(概念详解、三个基本问题详解)

    本节将进入隐马尔可夫环节,再次提醒不懂马尔科夫过程的同学建议先搞懂什么是马尔科夫过程,什么是马尔科夫链,同时需要懂一点语言模型的知识,下面会用到一点点,本人打算详细总结隐马尔可夫算法思想,因此讲解的会 ...

  7. 阿里国际站年底询盘分析总结方法及步骤详解

    阿里国际站年底询盘分析总结方法及步骤详解 年底了,12月的阿里国际站数据在上周也出来了,所以是时间表演真正的技术了,不对,是时间来对全年询盘进行分析整理及总结了,今天就和大家来一起看下,如何对阿里国际 ...

  8. ML之shap:分析基于shap库生成的力图、鸟瞰图、散点图等可视化图的坐标与内容详解之详细攻略

    ML之shap:分析基于shap库生成的力图.鸟瞰图.散点图等可视化图的坐标与内容详解之详细攻略 目录 一.力图可视化 1.单个样本力图可视化

  9. Android Studio CPU profiler性能分析工具介绍和使用详解

    Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...

最新文章

  1. QMessageBox对话框
  2. java中unknown source_java中GUI编程中的unknown source问题
  3. vsftpd + mysql + virtual users
  4. Python安装错误 building 'statsmodels. extensionerror: Microsoft Visual C++ 14.0 is
  5. 使用python pandas dataframe学习数据分析
  6. mysql管理数据 并上传至云端_怎样将MySQL数据库上传到服务器
  7. pcie握手机制_图解PCIE原理(从软件角度)
  8. C#串口数据读写——计数器数据获取重置功能记录
  9. linux笔记:shell编程-正则表达式
  10. 廖雪峰JavaScript教程
  11. Rabbitmq消息发布确认机制
  12. mysql 限制条数_MySQL LIMIT:限制查询结果的条数
  13. JavaScript 浏览器端 this的指向性问题
  14. syn 攻击脚本 python_Python Scapy实现SYN Flood攻击
  15. Win10关闭安全中心的病毒和威胁实时保护
  16. 2023养老展|山东养老用品展|老年护理产品展|医养健康展
  17. LevelDB整体介绍
  18. 有趣的计算机课作文,一堂有趣的课作文(精选4篇)
  19. 百度排名批量查询_一篇讲透百度霸屏引流细节思路与操作玩法
  20. 记得第一次用QQ的心情吗?现在轮到你的行业为“AI.QQ”激动了

热门文章

  1. SVN Server安装配置
  2. 数组方法关于任意数字类型的数组求最大值解决办法
  3. Testing AJAX Applications with VSTS 2008
  4. Unity Application Block-配置文件的使用-示例(附×××)
  5. 约瑟夫环(约瑟夫问题)求最后出列的人数
  6. ESX VCENTER克隆或复制产生的GUEST OS,网卡问题处理
  7. PMBOK学习笔记二-项目管理过程
  8. Mybatis简单的入门之增删改查
  9. centos7 tomcat8 配置 java web环境 熵池不够大 启动慢问题
  10. linux 连接跟踪nf_conntrack 与 NAT和状态防火墙