专栏首页机器学习入门与实战基于依存句法分析的关键短语抽取算法实战

基于依存句法分析的关键短语抽取算法实战

由于最近在做一些无监督的关键词短语(实体)抽取工作,其实最大的背景还是没有标注好的实体识别训练数据;所以想到采用无监督的关键短语抽取算法折中去抽取一些实体,于是调研了一波关键短语抽取算法和工具。目前无监督关键短语抽取算法和关键词抽取算法差不多:主要是TFIDF,Textrank 等特征为候选短语的打分。然后抽取得分高的候选短语。

算法流程

由于最近在做一些无监督的关键词短语(实体)抽取工作,其实最大的背景还是没有标注好的实体识别训练数据;所以想到采用无监督的关键短语抽取算法折中去抽取一些实体,于是调研了一波关键短语抽取算法和工具。目前无监督关键短语抽取算法和关键词抽取算法差不多:主要是TFIDF,Textrank 等特征为候选短语的打分。然后抽取得分高的候选短语。

候选短语打分:通过上述ngram + 文法规则我们召回候选词集合后,之后我们就可以通过 词语的TFIDF,Textrank等权重特征的给短语打分,当然你也可以用一些其他的文本特征给词语打分。总之,最后我们通过各种特征可以计算出每个短语的得分,然后排序后取topk得候选短语就可以得到我们的关键短语了。

引入依存句法分析

依存句法分析这里笔者不做过多的介绍,有兴趣的同学可以去百度一波.但是这里笔者展示一下依存句法分析的结果,通过依存句法分析,我们可以得到一颗如下的依存树,树的每条边记录了连接节点的对于关系,比如 “青年”的定语是“男性”,所以青年和男性是定中关系。具有定中关系的相邻词组就是一个短语,同时被修饰的词通常比较重要(这是笔者的一个假设),所以,笔者认为:具有定中关系的相邻词组是关键词。

下方是笔者在百度百科中搜索出来的“借款费用”的定义,用依存句法分析了一波,也确实发现具有定中关系的词组组合起来就是关键短语,比如:借款费用,借款利息,外币借款等。

实战部分

实战部分笔者的思路如下:+ 首先采用传统的关键词词组抽取算法抽取一下句子中的关键词短语(可以有效抽取一些新词和关键短语),这样防止一些专有名词分词错误,这里你也可以采用实体识别算法。然后将新抽出的新词加入用户词典。+ 然后采用依存句法分析得到句子的依存树,将具有定中关系的相邻词组抽取出来。关键短语抽取推荐使用:ckpe 这个工具库,作者引入了LDA主题模型去优化关键短语打分,效果不错。至于依存句法分析:笔者选择的是hanlp。代码如下:

输入一下句子: sentence= "借款费用是企业因借入资金所付出的代价,包括借款利息、折价或者溢价的摊销、辅助费用以及因外币借款而发生的汇兑差额等"

最后结果如下:+ ckpe的抽取结果为:['外币', '差额', '费用', '利息', '代价', '资金', '企业'] + ckpe + 依存树 的结果为:['借款费用', '借款利息', '辅助费用', '外币借款', '汇兑差额']

结论

所以在关键短语抽取算法中引入依存句法分析似乎有着不错的效果,其实也是利用了句法特征。做为一个nlper 如果能够善于使用词性特征,句法特征等这些传统特征也能够做很酷的事情,比如无监督抽取出这么好效果的关键短语。当然无监督会产生较多的错误,我们可以采用这种算法辅助去标注数据,最终通过有监督的深度模型训练达到最佳效果。

本文分享自微信公众号 - 机器学习入门与实战(datanlp)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于IBM Model 1的词对齐与短语抽取Python实现

    基于词的翻译模型起源于上世纪IBM关于统计机器翻译的原创性工作,教材主要介绍的是IBM Model 1模型。该模型能够从大量句对齐的语料中自动实现词对齐。

    大数据技术与机器学习
  • ⻓短期记忆LSTM

    在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有...

    大数据技术与机器学习
  • 逻辑回归(LR),损失函数

    逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是Y=aX+b,y的取值范围是[-∞, +∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经...

    大数据技术与机器学习
  • 《统计学习方法》笔记五 决策树

    分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。

    闪电gogogo
  • 分布式系统

    随着互联网的发展,单一节点部署的方式已经无法满足需求,需要通过增加节点来线性扩展系统的负载和性能,因此系统架构也由原来的集中式架构向分布式架构转变。

    shysh95
  • 机器学习实战-2-KNN

    k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。简单地说,k-近邻算法就是采...

    皮大大
  • 一次搞懂序列化和反序列化

    1. 为什么需要序列化? 因为如果不实现序列化,那么则无法反序列化 2. 序列化使用场景? 1. 需要存储对象,比如说我现在需要把内存中的对象暂时写入硬盘...

    用户5166556
  • Linux下报 java.net.SocketException权限不够 异常解决

    今天在Linux下用Jetty把一个应用启动起来报权限不够异常。其实原因很简单,但是如果一时疏忽可能会习惯性地google一把,我就google了一把,但是发现...

    sanmutongzi
  • 机器学习实战-2-KNN

    k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法。简单地说,k-近邻算法就是采...

    皮大大
  • 在eclipse中运行hbase时显示Could not resolve the DNS na...

    ERROR hbase.HServerAddress: Could not resolve the DNS name of ubuntu118 ...

    闵开慧

扫码关注云+社区

领取腾讯云代金券