【关键词提取】第一篇:综述

原文地址:http://www.cnblogs.com/lessmore/category/1009890.html 转载请保留本行,欢迎交流。

目录:

  1. 第一篇:综述
  2. 第二篇:数据集、实现代码介绍
  3. 第三篇:特征设计
  4. 第四篇:候选词生成(上)
  5. 第五篇:候选词生成(下)
  6. 第六篇:性能比较

很长时间没有写博客了,在公司实习的工作实在是乏善可陈,最近忙着完成毕业论文,是用机器学习做关键词自动提取,也算是小有成果,这里写一个系列文章分享遇到的问题和自己的实现。

1.1 问题介绍

关键词是表达文档主题的最小单位,因此在大部分自然语言处理问题中,如自动文摘、自动分类、信息检索、信息抽取、知识挖掘等,都需要先进行关键词提取,再进行其他深层次的处理。关键词提取问题可以表述为,从文章内容中自动选择重要且具有代表性的短语。本文中不加区分地使用关键词和关键短语指代单个单词和词组,并且只关注从原文中抽取重要的短语作为关键词,不考虑生成原文中不存在的短语。举几个关键词的例子,科技文献中摘要下面的关键词列表,博客的关键词通常是Tag标签或者标题中的某个短语。我们这里只处理英文文献,不存在中文分词的问题。从实现的角度来看,关键词提取就是从文章中挑出是关键词的连续单词序列。

1.2 相关研究方法

关键词提取是自然语言处理的基本问题之一,当然有大量的研究,这里列举一些经典的实现方法。

1.2.1候选词生成+分类

基本思路是使用规则从文章中生成可能的关键词,记作候选词,然后训练一个二分类模型,判断候选词中哪些是关键词。
从文档中生成候选词,目标是尽可能多地召回正确关键词,同时保证候选词数目较少。通常策略包括,使用停止词(stopword)列表移除停止词;允许包含特定的词性标注(part-of-speech tag)的短语成为候选词,例如名词,动词;允许出现在维基百科文章标题的词组成为候选词;提取n-grams 满足特定词法语法规则的短语作为候选词。这些策略已经被证实在多个数据集上有较高的召回率,然而可能对长文档得到的候选词数量过多,需要使用规则剪枝。
监督学习方法判断候选词生成是关键词,分为任务重构和特征设计两个子任务。可以简单地视作二分类问题,训练一个分类模型判断候选词是否是关键词即可,可以使用朴素贝叶斯摩西、最大熵模型或者支持向量机等。也可以当作回归问题,将关键词当作1,非关键词当作0,回归模型预测的结果在[0,1]之间,调整合适的阈值就能得到分类结果。

1.2.2 序列标注方法

思路是将文章中地每个单词标注上IOB(Inside, Outside, Beginning),B表示该单词在关键词开头,I表示关键词内部,O表示在关键词外部,将BI*这样地序列当作最后地关键词列表。这样将关键词提取问题转换为序列标注问题,可以使用HMM或者CRF 模型,同样也需要设计特征。

1.2.3 无监督学习方法

无监督学习方法是与上面两类截然不同地方法,没有标注数据,可以使用的就是纯文本。常见的算法是基于图的排序模型,例如 TextRank方法,简单来说就是根据文本构建一个图,顶点是候选词,当两个候选词相关时对应的两个顶点间有一条边相连,仿照PageRank算法,可以求出每个顶点的得分,得分最高的n个候选词选作关键词。通常来说,无监督学习方法的效果不如有监督的效果好,实际上没有测试,毕竟我们的系统有标注数据,会在第二章介绍。

上面三种是常见的使用机器学习进行关键词提取的方法。然而关键词提取研究中仍然存在一些问题有待解决,比如说关键词的数量,关键词的颗粒度,如何构建适用于各种领域的关键词提取系统。本文实现的方法当然也不能解决这些问题,只是综合以往的方法,有一点点的提高。

1.3 我的实现

如何提高这个系统呢?完全按照以往论文提出的方法实现是做不可能的,如果准确率、召回率或者F值有提高,唯一的解释就是数据集不同。按照上面的方法实现一次,看看每次找到的是哪些关键词,想想关键词是在候选词阶段没找到,还是分类错了,或者是标注为BI*的概率太低,还是特征没有区分开。经过一些实验,我有了这两个想法:综合之前提出的各种特征对提升性能有帮助,包括句法、词法的,还包括用外部资源算的;将序列标注方法引入到候选词生成阶段,再用模型分类效果更好。我们的系统将重点介绍这两个想法的实现细节,具体的解释会在后文中会慢慢叙述。

这一篇介绍了关键词提取的背景,相关方法,以及本文改进关键词提取性能的想法。下一篇将介绍我使用的数据集,最终的代码结构。

posted @ 2017-05-27 19:20  小小的港湾  阅读(3278)  评论(0编辑  收藏  举报