如何用NLP技术和标题党说拜拜-文本摘要

文本摘要利用NLP技术在大数据环境下对文章进行概括,旨在解决标题党问题。早期方法包括词频、首段等特征值提取,现代方法涉及深度学习,如CNN与seq2seq模型。提取式方法通过评分召回重要句子,而生成式方法利用NN输出进行decoder操作。目前,CNN与seq2seq结合的模型效果较好,如ConvS2S,而强化学习如RLSeq2seq有助于优化seq2seq模型的生成质量。
摘要由CSDN通过智能技术生成

点这里排版好

拖延症 拖了一个星期 ?‍♀️
然后在查文献的时候 发现中文的资料比较少 于是

文本摘要 算是NLP领域一个还实用的细分领域吧

其实按我的理解 文本摘要 是一个披着NLP外衣的CV领域内容(至于为什么 请dalao往下面看)

想想一下 每每看见震惊 公交车上? 有男子做出如此不堪的事这样的标题

可能不自觉的就脑补 一些 你以为会发生的事

结果 点开 链接 发现 这根本就不是你想想的那会事

然后 你会痛骂一身标题党 小gg 然后默默的关闭了网页

如果在你点开链接之前 已经有一个整理好的概述 这个时候 是不是标题党 就一目了然了

文本摘要 解决的 就是 在大数据环境下 如何利用NLP技术 对文章进行概括

feature era

早在上世纪五十年代 就有学者开始研究Text Summarization问题 提出利用诸如词频 首段 首句 标题等等一些特征值 对文章进行自动化概括

本质上来说 这些 都是属于特征工程范畴的工作 利用一些人类认知上的明显的特征关系 找到文章与生成的摘要之间的匹配关系

当然可以想象到 纯人力挖掘 特征 能达到的效果有限

但限于 算力的制约 一直到近年 随着深度学习在ImageNet上崭露头角 才稍有起色

[外链图片转存失败(img-MDHFcY2t-1566641443683)(https://cdn.nlark.com/yuque/0/2018/png/104214/1545572810420-c4c705a5-0298-43cc-bc13-2170720f9236.png "")]

Extractive Vs Abstractive

因为我们已经对NLP领域问题分析的套路 已经有一些 认识

以上的 思路 主要是从 文本中原有信息 根据人类普遍意识上的认识 提取出对应于文章的一段文字 这是一种Extractive方法

很容易想到 除了 抽取之外 还可以通过对NN Output的参数 进行 decoder操作 进行Abstractive操作

生成式的思维 其实 更 符合人类习惯 但 相对于 现有的技术而言 效果 会比较差

之前 我们 在多轮检索式对话中 分析的 也是抽取式的模型

我们对 检索式的大致套路 已经 有所 了解

先对 原有的文本做一个表示 可以是word 粒度的 也可以是上下文粒度的

在QA问题上 从基于表示的思路变换到基于交互的思路

但 QA问题和摘要问题 侧重点 不太一样

QA 更 能反映NLP问题的时序性 对话中 上一句 接着 下一句

在对话过程中 Topic很重要 非停用词很重要 语言风格也很重要 但Topic可能变化 语言风格也可能变化 停用词 也许会变成至关重要的

对话系统侧重 抓取时序上的信息

而Text summarization这个问题中 侧重于Topic的挖掘 时序上的信息 变得没那么重要

直观上感受 文本挖掘 只要从一篇已有的文章中 从排好队的词阵列 中 抽取这篇文章最重要的词 组成它的摘要

这一点 就和 图像识别 很类似-从一张已有的图片中 根据像素分布 抽取出 能代表周围一块区域的特征

所以 目前 Text Summarization 领域中 效果比较好的还是CNN与seq2seq结合的模型

(当然QA也一样 会用到CNN 那里的CNN做的 也同样是抽象的功能)

Extractive

抽取特征的思路 可以分为 抽取主题 和 抽取指示符

  • 抽取主题 方法, 比如说 浅语义LSA、LDA 词频 主题词 贝叶斯 et al.
    • 这种方法 侧重于 试图 寻找语义上的 主题
  • 指示符(你可以粗暴的理解为特征):
    • 比如说: 句子长的可能是更重要的 在文档中位置靠前的可能更重要 具有Title中某些词的句子可能更重要

Extrative 然后 根据 这些 方法 对每个句子进行 一个评分的操作

然后一样的套路根据这个评分 召回可能重要的k个句子

再对这k个句子 做加工 比如说贪心的认为@1的是这个文章的摘要 也有模型针对最大化整体一致性最小化冗余进行优化

除了 抽取特征的思路之外 还有基于知识库(对vertical domain 进行分析)

Topic Words

在Toipic word是的思路下 有诸如

  • 词频阈值: 词频超过一个阈值的情况下 它就是主题词
  • 主题签名词: 有些时候 主题 可以通过多种多样的词语表示 每个主题签名词的词频并不一定高
    • 通过建立对数似然估计检验 来 识别 这些 主题签名词
    • 可以是计算主题签名词数量的频次 (偏向长句子)
    • 也可以是计算主题签名词的占比句子中总词数的比例 (偏向高主题词密度句)
Frequent-driven

词频方法 较为简单 主要是直接算词频 或者 利用Tf-Idf计算词频

Latent Semantic Analysis

浅语义 主要 就是 做矩阵分解 计算SVD 那么得到的中间矩阵就可以看作为原矩阵的Topic

当然 LSA之后 还有基于Dirichlet分布的LDA

Graph Method

基于PageRank的思想 把文章 抽象为graph 其中句子 代表graph中的节点 边权值则为句子和句子之间的相似度

最简单的相似度的做法 就是 Tf-idf

要想获得更好的效果可以 尝试 用一下QA中使用的基于基于交互、双向GRU、Transform等等办法

计算出 各边值之后 就按照PageRank的思路 计算 重要节点 这些重要节点 就是我们需要的摘要句子

讲到这里 我们不难想到 如何 把之前多轮检索式对话系统 中 用到的计算context-reply之间关联度的方法 用在这里

可能会有不错的效果 但 老年人 不能安逸与现状 对吧 检索式 我们做过了 生成式 还没有实践过 so ?

Graph方法 比较有名的 比如说LexRank, TextRank

Mechanical Learning

本质上 抽取式文本摘要 也是 一个分类问题 把所有文本 分类为 是文本摘要 和 不是文本摘要的

分类问题 就有很多操作的空间 比如说 用朴素贝叶斯 决策树 SVM HMM

但 样本集标注信息 较难取得 故有学者提出半监督的模型

通过同时训练两个分类器 每次迭代时 把具有最高分的未标记训练集扔到标记训练集中 以此迭代

Abstractive

随着NN及seq2seq对机器翻译上表现出的显著提升

相应的技术也逐渐应用在Text Summarization领域上

实际上 在文本摘要这个领域中 很多技术是借鉴与机器翻译的

比如说受到NMT(Neural Machine Translation)中Attention和NN的应用的启发,有学者提出NNLM(Neural Network Language Model)结构

之后 有人用RNN代替NNLM 比如说ABS什么的

在这样的模型中会出现几个问题

  • 不能像抽取式一样获取到文本的重要消息
  • 无法处理OOV(out-of-vocabulary)问题
    • 当然我觉得OOV是预处理不好产生的问题
    • OOV就是test dataset中存在train model建立的词表中没有的词
    • 像这个问题 可以简单粗暴的把OOV用零向量或者<UNK>代替 丢到NN中训练
    • 也可以用char-level粒度的模型
    • 要么优化你的分词器
    • 再有就是用FastText
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值