专栏首页机器学习养成记关键词提取Part1(A Quick Review)

关键词提取Part1(A Quick Review)

以下文章来自知乎,作者Bill Tong。Bill Tong,上海交通大学管理科学与工程博士,曾出版《在线文本数据挖掘》一书。

1

概念

关键词提取(Key Word Extraction)说白了就是对文章进行总结,从一篇文章中抽取出比较重要的一些词汇,帮助阅读者高效率地了解文章的大意。尤其是对互联网环境下,每天大量的信息涌出,若不加以预处理,则会成为网页浏览者的负担。关键词提取技术可以非常简单,也可以非常复杂,但是其任务框架都一样,输入一个文章,输出几个关键词。当然,也可以把关键词提取任务适当扩展成关键词组提取,关键字提取,关键句子提取,关键段落(只适用于特别长的文档,如博士论文)....这些技术做的事儿都差不多... 那么,给定一篇文章,关键词是怎么抽取出来的呢?

当前关键词提取算法主要可以分成两个流派

  1. Statistical
  2. Rule Based

本文提供的是一种比较大的分类方法,也有很多reivew的文章分成3类、4类、5类种种,都不重要,关键把思路理清就好。

2

Statistical流派

统计流派,其思路是,先定义一个关键词指标,然后为文章中所有词汇计算关键词指标,把词汇按照指标从大到小排列,指标大的优先选为关键词。这种思路很简单,有点儿像班里选班长,老师说选学习成绩最好的同学当班长,那么选拔方法就是,先定义一个指标,比如考试总分,然后,给每个学生的语文、数学、物理成绩加总,排名,总分排第一的当班长(关键词)。当然,老师可以指定班里有任意多个班长,例如选K个班长,那么就是成绩排名前K个学生当班长。统计流派的关键在于,计算每个词汇的关键词指标,这个指标是根据词汇在文章中的表现统计并计算出来的,所以有Statistical其名。

在对关键词进行提取时,可以有多种指标,影响力最大的两个是:TF-IDF指标和 PageRank指标。TF-IDF基于词袋模型(Bag-of-Words),把文章表示成词汇的集合,由于集合中词汇元素之间的顺序位置与集合内容无关,所以TF-IDF指标不能有效反映文章内部的词汇组织结构。PageRank指标,基于网络模型(Graph Model),把文章表示成网络的结构,网络中的节点表示词汇,节点之间的边为词汇之间的位置邻接关系,网络结构比集合结构包含信息多,考虑了文章内词汇的顺序,所以PageRank指标一般比TF-IDF指标表现更好。

3

Rule Based流派

规则流派,其思路是,将关键词提取任务,定义为一个对词汇进行二元分类的任务。即给定一个词汇,要么是关键词,要么不是关键词,对其分类,是关键词为1,不是就是0。那么,关键词提取问题就变成了一个预测问题。预测问题,需要一个预测函数,这个函数就是规则,给定词汇,获得该词汇的特征,然后预测该词汇是否为关键词 。

规则可以人工指定,也可以通过机器学习(Machine Learning)的方法获得。人工指定规则,一般比较难,所以大家就想着让程序自己去获得规则,即通过机器学习。机器学习的方法相对省脑子,但是费体力,要手工标关键词,然后把标记过的样本扔到模型里去把规则给学习出来。机器学习过程中,需要指定一些词汇特征,用于训练。这些特征,一般也不知道,所以也需要人工指定,比如,考虑词频、词汇包含的字数、词性、词汇的位置等等。现在深度学习成为关键词提取新的发展方向,但是深度学习的方法只能通过复杂网络的训练帮你抽象出词汇特征,但是还得依赖于人工标注。当然了,深度学习的一大好处在于,有一些模型支持对没标记的数据进行学习,可以优化词汇特征的表示。例如,自动编码器,深度玻尔兹曼机等。

4

总结

基于此,我想说的是,虽然关键词提取的算法很多,也很花哨,但是思路比较简单。另外,几乎没有论文回答最基础的一个问题,什么是关键词?为什么某些词应当被提取出来给阅读者看而另外一些词应当忽略?哪些词应当展示给用户看?太多研究关注算法的精度和效率,而忽视了关键词的本质内涵。关键词不是一个客观存在的东西,而本身也是人为标注的,因此模型的评估和优化,本身也是一个主观的东西。这种主观的东西,不应当以算法开发者的意志所左右,而是应当关注用户的需求,想用户之所想,把用户真正关心的那些关键词展示出来。因此,虽然关键词提取算法当前停滞不前,但是从用户的角度重新去考虑关键词的定义,把用户的特征与词汇的特征相结合,进行指标的构建(Statistical)或者规则模型的学习(Rule Based),或许是可以为关键词提取算法的未来研究提供新的发展契机

本文分享自微信公众号 - 机器学习养成记(chenchenwings)

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

原始发表时间:2020-02-22

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode刷题DAY 7:只出现一次的数字III

    给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。如输入[1,2,3,2,4,1],输出[3,4]。

    三猫
  • LeetCode刷题DAY 30:删除与获得点数

    给定一个整数数组 nums ,每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数,同步删除每个等于 nums[i] - 1 或 n...

    三猫
  • LeetCode刷题DAY 32:区域和检索 - 数组不可变

    给定一个整数数组 nums,建立一个函数用于求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。如:输入nums = [-...

    三猫
  • 如何为技术博客设计一个推荐系统(中):基于 Google 搜索的半自动推荐

    与统计学相比,基于内容来向用户推荐相似的内容,往往更容易获得。对于推荐来说,则有两种方式: 手动推荐 自动推荐 (PS:我承认,这句话说了等于没说。) 如下图所...

    Phodal
  • 【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第五节)

    剽悍一小兔
  • 【leetcode刷题】20T29-不同路径 II

    https://leetcode-cn.com/problems/unique-paths-ii/

    木又AI帮
  • Python构建共现矩阵并将其三元组形式存储至csv文件

    主要用于发现主题,解决词向量相近关系的表示; 将共现矩阵行(列)作为词向量,其表现形式类似于数据结构中图论里学的邻接矩阵。在本文中,笔者主要用来统计会议论文作...

    SL_World
  • ng6的ng-template的一个用法 原

    但第一种方法无法插入name的值。  参数是context,不明白它的context是要传递什么进去

    申君健
  • Python爬虫入门教程 52-100 Python3爬虫获取博客园文章定时发送到邮箱

    关于获取文章自动发送到邮箱,这类需求其实可以写好几个网站,弄完博客园,弄CSDN,弄掘金,弄其他的,网站多的是呢~哈哈

    梦想橡皮擦
  • Kubernetes 1.8.6 集群部署–邮件报警(十一)

    老七Linux

扫码关注云+社区

领取腾讯云代金券