一种关键字提取新方法

2018 年 11 月 15 日 1号机器人网


人从业时间不长,在关键词提取领域只能算是初窥门道。谨结合最近工作内容,小小的讨论一下关键词提取技术。


计算一句话的语义,需要从这句话中找到几个重要的词来基本代表这句话的基本语义,这就是关键字。无论搜索还是问答,都需要做关键字提取。


关键词提取技术看起来只是一种文本匹配,你甚至不用学习算法就知道其中的算法原理。


但是该技术仍旧面临着若干困难。


比如最初在百度还没有分词技术的时候,你若是在搜索引擎中搜索【和服】两个字,它给你返回的网页可能不是你想要的日式仿唐服装,而是【运营商和服务商】,【关于做好党员联系和服务群众工作的意见】,【关于商品和服务实行明码标价的规定】等等。


面对这种窘境,程序猿采取的方式往往是爆肝:没什么事情是字典和规则所不能解决的。


然而字典和规则只是治标不治本,虽然距离让机器真正理解自然语言还有很长很长很长的一段路要走。那为什么在此之前,我们不变得聪明一点呢?


这个让我们摆脱字典和规则的聪明方法,就叫做中文分词。


虽然中分词仍旧面临很多挑战,但在NLP的最底层组件中,其效果已经完全达到了商业化的标准,足以拯救程序猿们脆弱的肝。近年来,从HMM到Bi-lstm-crf的突破更是使得分词准确率有了质的提升。


所以,就像吃饺子的时候必须要有老陈醋(当然根据口味不同也可以蘸酱油,辣椒油,蒜泥,等等),吃油条的时候必须要喝豆腐脑一样,关键词提取也必须要有中文分词器作为基础。


众所周知,在NLP流程中,错误会逐级传递,所以要想把关键词提的准,那分词器也必须可靠。


但即使有了分词器这样的好基友,关键词提取算法依旧只能说是一个【精妙的文本匹配】。


这时候,一个非常常见,原理简单的算法出现了,它就是TF-IDF。TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF意思是词频(Term Frequency),IDF意思是逆文本频率指数(Inverse Document Frequency)。TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。举个栗子,在例句【咬死了猎人的狗】中,根据TF计算出的关键字是“猎人”、“咬”、“狗”“死”。由于是根据TF-IDF进行关键字提取的,以下一组句子的关键字提取结果是一样的:


【它是咬死了猎人的狗】


【它咬死了猎人的狗】


【是猎人的狗咬死了它】


【猎人的狗咬死了它】


【狗咬死了它的猎人】


以下一组句子的关键字差不多: 


【他的狗咬死了猎人】


【猎人的是狗咬死了他】


【咬死了猎人的是狗】


【它咬死了猎人的狗】


如果把“狗”换成“皮卡丘”,而“皮卡丘”这个词比较稀有,那么TF-IDF就会自动将“皮卡丘”这个词排序在关键字列表前面,从而认为“皮卡丘”是该句中的主要关键字。把上面第一组句子里的“狗”换成“狮子”,由于“狮子”比“狗”更稀有,关键字的排序发生了变化。TF-IDF算法的效果是计算词语的稀有度,固然物以稀为贵,但稀有并不等于关键。这样基于统计学的算法有时靠谱有时不靠谱。(靠谱的时候常见于该词出现在文章标题或者开篇等开门见山的写作情况)



进一步分析,一个词的关键与否,依靠的是它在句中所承担起的结构性作用。就好像一座宏伟的建筑中,精美的雕像装饰必然稀有,而钢筋混凝土却很常见(只是看不到),但这就意味着雕像才是建筑的关键而钢筋混凝土只是建筑的摆设吗?


所以,关键词提取的核心算法应该是计算一个词在句子结构性作用而非稀有度。


但是这个结构性如何计算又如何衡量呢?


笔者头脑中的第一个想法就是词嵌入。词嵌入可以有效的计算一个词在文章中的语义信息和结构信息,根据其平移不变性又可以计算出很多其他有趣的结果,最著名的例子莫非【国王-男人 = 女王-女人】了。


但是,如果当前文本量太小又如何呢?很现实的一个场景就是:某些专业领域内的关键词提取。由于依赖训练,对于文本量太小的专业领域,词向量的训练就很难达到理想的效果。


其次,词向量是固定的,词嵌入无法计算一词多义。


我常用【我给女朋友买了个苹果】作为例句(虽然我没有女朋友)。如果这句话是在圣诞节说的,也许这个苹果代表的意思就是苹果手机,如果这句话是在平安夜说的,这个苹果也许就真的只是一颗苹果。再比如【我嘴唇有点干】里的“干”和【你要干嘛】里的“干”完全是两个词,但词向量是分不清的。


所以,我认为,也仅代表个人观点:真正的关键词提取技术是建立在词的【知识表示】之上的【结构性信息提取】。而且我认为,词,类似于某种类似极大团结构,删除结构中的任何一个节点都会导致语义上的拓扑结构的崩溃(如果不崩溃就说明该词不重要,不是核心所在),从而使语义发生变化。举个例子,【我没有女朋友】和【我有女朋友】,在文本上很相似的两句话,句意却正好相反。


前几天在微信群聊天发现了一个叫氖星智能机器人大脑的产品,令人眼前一亮。他们的关键字提取技术是按照语法结构提取的。比如上面一组句子的提取结果是这样的:


是他的狗咬死了猎人——————————————狗+咬+猎人+他+死


狗咬死了他的猎人———————————————狗+咬+猎人+他+死


猎人被他的狗咬死了——————————————狗+咬+猎人+他+死


咬死了猎人的狗是它——————————————狗++它+猎人+咬


是它咬死了猎人的狗——————————————它+咬+狗+猎人+死


它咬死了猎人的狗———————————————它+咬+狗+猎人+死


它把猎人的狗咬死了——————————————它+咬+狗+猎人+死


它是咬死了猎人的狗——————————————它++狗+猎人+死


猎人的狗咬死了它———————————————狗+咬+它+猎人+死


猎人的狗咬了它的———————————————狗+咬++猎人+它


猎人的狗咬了它————————————————狗+咬+它+猎人+了


咬死了猎人的狗是它的—————————————狗+++猎人+咬


狗咬死的是猎人————————————————狗++猎人+咬+死


测试地址:http://www.neonstar.cn/statics/splitwords.html


我们看到语义相同的句子关键字的位置是大体相同的,语义不同的句子关键字位置也不同。和TF-IDF算法不同的是,他们的关键字提取不是按统计结果确定关键字权重,而是按词的语法功能确定词的权重。他们告诉我第一个关键字代表句子的主语,第二个关键字代表句子的谓语,第三个关键字代表句子的宾语。前三个关键字相同的句子语义也基本相同。比如上面一组句子里把“狗”换成“狮子”,在提取关键字以后,“狮子”就会出现在原来“狗”所在的位置。把“猎人”换成“园长”,“园长”就会出现在原来“猎人”应该出现的位置。


这种关键字提取技术我从来没有见过。但我发现和TF-IDF相比,它优势很明显。我们要计算两句话语义的相似性,只要看它们各个位置上的关键字是不是相同就好了。比如“它把猎人的狗咬死了”、“它咬死了猎人的狗”、“是它咬死了猎人的狗”,这三句话关键字完全相同,他们的语义也是完全相同的。“它是咬死了猎人的狗”和上面三句关键字的排序不一样,语义也和他们不一样。我发现他们用五个关键字把语义这种非格式化的数据变成了格式化的数据。这真的非常了不起!我试着用他们提供的接口做了一些东西,效果明显有改善。


为什么要研究关键词提取?


得知识者得天下,下一波人工智能浪潮必然是由强人工智能掀起(希望如此),而知识图谱又是通向强人工智能的必经之路,结构化信息技术是构建知识图谱的拦路虎。不积跬步无以至千里,关键词提取这个看似陈旧的技术名词,也需要在AI时代被重新定义。例如知识图谱,这个概念已经存在了数十年,它最初的名字叫做语义网络;如此看来,关键词提取在未来或许可以被称为【结构化信息提取技术】也说不定。


而什么是知识?如何表示知识?如何将非结构化文本进行结构化?有了氖星智能提供的关键字计算工具,就可以进行一些非结构化文本的信息提取,我用数据说话,这些非结构化的文本占了开放域文本的八成以上。


如果再能配上【同义词词库】和【词属性库】,或者某种已经构建好的知识图谱,或许就能进行【语义分析】了。


例如,同义词和用词向量计算余弦相似度的结果是两个概念。比如老婆的同义词是妻子,而词向量的计算结果是老公。词属性库把词属性相同的词放在一起。比如能发出‘吃’的动作的,几乎都是动物而不是植物。有这些东西做支撑,语义结构分析就相当于解析一栋大楼了,雕像和钢筋的作用自然会被分析清楚。这两项都是非常耗费人力和时间的辛苦而专业的工作。但为了达到工业化的目的,也只能如此。


笔者水平有限,难免出错。道阻且长,谨以此文抛砖引玉。


(作者:北京电子科技学院在读硕士研究生 李忠宇)


登录查看更多
21

相关内容

多智能体深度强化学习的若干关键科学问题
专知会员服务
171+阅读 · 2020年5月24日
《强化学习》简介小册,24页pdf
专知会员服务
261+阅读 · 2020年4月19日
【电子书】大数据挖掘,Mining of Massive Datasets,附513页PDF
专知会员服务
101+阅读 · 2020年3月22日
【经典书】精通机器学习特征工程,中文版,178页pdf
专知会员服务
347+阅读 · 2020年2月15日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
【新书】Python中的经典计算机科学问题,224页pdf
专知会员服务
143+阅读 · 2019年12月28日
【综述】关键词生成,附10页pdf论文下载
专知会员服务
52+阅读 · 2019年11月20日
从锚点到关键点:目标检测方法最新进展(2019)
GAN生成式对抗网络
14+阅读 · 2019年8月22日
从锚点到关键点,最新的目标检测方法发展趋势
计算机视觉life
17+阅读 · 2019年8月20日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
如何匹配两段文本的语义?
黑龙江大学自然语言处理实验室
7+阅读 · 2018年7月21日
从手工提取特征到深度学习的三种图像检索方法
LibRec 每周算法:LDA主题模型
LibRec智能推荐
29+阅读 · 2017年12月4日
Logically-Constrained Reinforcement Learning
Arxiv
3+阅读 · 2018年12月6日
A General and Adaptive Robust Loss Function
Arxiv
7+阅读 · 2018年11月5日
Arxiv
9+阅读 · 2018年4月20日
Arxiv
9+阅读 · 2018年3月10日
Arxiv
5+阅读 · 2018年1月30日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关资讯
从锚点到关键点:目标检测方法最新进展(2019)
GAN生成式对抗网络
14+阅读 · 2019年8月22日
从锚点到关键点,最新的目标检测方法发展趋势
计算机视觉life
17+阅读 · 2019年8月20日
R语言自然语言处理:情感分析
R语言中文社区
16+阅读 · 2019年4月16日
R语言自然语言处理:关键词提取与文本摘要(TextRank)
R语言中文社区
4+阅读 · 2019年3月18日
如何匹配两段文本的语义?
黑龙江大学自然语言处理实验室
7+阅读 · 2018年7月21日
从手工提取特征到深度学习的三种图像检索方法
LibRec 每周算法:LDA主题模型
LibRec智能推荐
29+阅读 · 2017年12月4日
相关论文
Logically-Constrained Reinforcement Learning
Arxiv
3+阅读 · 2018年12月6日
A General and Adaptive Robust Loss Function
Arxiv
7+阅读 · 2018年11月5日
Arxiv
9+阅读 · 2018年4月20日
Arxiv
9+阅读 · 2018年3月10日
Arxiv
5+阅读 · 2018年1月30日
Arxiv
7+阅读 · 2018年1月24日
Top
微信扫码咨询专知VIP会员