美文网首页
自动摘要

自动摘要

作者: AntiGravity | 来源:发表于2020-05-06 11:01 被阅读0次

背景

大数据时代,信息爆炸?垃圾遍地!

互相复制的新闻
重复推送的广告
大量冗余无效的信息

所以需要筛选信息,通过文本自动摘要
应用场景:P2C网站、企业;论文网站、新闻网站、搜索引擎
使用价值:冗余去除、片面提取、杂质剔除


概览

有监督:人工摘要后契合。无监督:算法生成。

基本原理
  • 文本信息都在句子中。
  • 标点符号进行分句或分段。
  • 找出信息最多的句/段。(关键词、相似度、潜在语义等)
实现思路

抽取式

  • 定义:提取关键词、句子形成摘要
  • 各句打分:
    • 基于统计:如TextTeaser,基于长度、位置、关键词等信息进行评分
    • 基于网络图:如TextRank,按照节点权重
    • 基于潜在语义:使用主题模型,挖掘隐藏信息进行评分
    • 基于各句和文章之间的相似度
    • TF-IDF提取关键词后基于关键词首先出现或包含数量多少
  • 句子重组:保证可读性

压缩式

  • 压缩信息,可能损失

生成式

  • 最接近摘要的本质,难度大
效果评价

人工评价(标准摘要来自专家)

  • Edmundson:计算和标准摘要的句子的重合率
  • ROUGE:计算和标准摘要的重叠基本单元(n元语法、词序列、词对)的召回率
    • ROUGE-N:N-gram
    • ROUGE-L:最长公共子序列
    • ROUGE-W:连续匹配赋予更大权重
    • ROUGE-S:考虑了所有按词序排列的词对。比ngram更深入反应句子级词序。
    • ROUGE-S4/S9:多文档

Python实现

思路
  • 语料处理
  • 分句
  • 特征工程
  • 向量化
  • 句子评分
  • 重组生成摘要
# 语料
chapter.txt[1]
# 分句(过于简略,未考虑说话的双引号内算一句等)
def cut_sentence(intxt):
    delimeters=frozenset('。!?')
    buf=[]
    for ch in intxt:
        buf.append(ch)
        if delimeters.__contains__(ch):
            yield ''.join(buf)
            buf=[]
    if buf:
        yield ''.join(buf)

sentdf=pd.DataFrame(cut_sentence(chapter.txt[1]))
# 去除过短的句子
sentdf['txtlen']=sentdf[0].apply(len)
sentlist=sentdf[0][sentdf.txtlen>20]
print(len(sentlist))
# 向量化
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer

txtlist=[''.join(jieba.lcut(w)) for w in sentlist]

vectorizer=CountVectorizer()
X=vectorizer.fit_transform(txtlist)
tfidf_matrix=TfidfTransformer().fit_transform(X)
# 句子评分
import networkx as nx
similarity=nx.from_scipy_sparse_matrix(tfidf_matrix *tfidf_matrix.T)
scores=nx.pagerank(similarity)

tops=sorted(scores.items(),key=lambda x:x[1], reverse=True)
# 查看评分结果
print(sentlist.iloc[tops[0][0]])
print(sentlist.iloc[tops[1][0]])
sentlist.iloc[tops[2][0]]
# 重组生成摘要
topn=5
topsent=sorted(tops[:topn])
abstract=''
for i in topsent:
    abstract=abstract+sentlist.iloc[i[0]]+'......'
abstract[:-6]

改进:

  • 分句更精确
  • 评分标准尝试pagerank以外的算法
  • 不是分句,而通过分段找出关键段落,然后提取潜在语义或关键词、句。

相关文章

  • The Basic Concepts of Summarizat

    文本摘要技术是利用计算机自动实现文本分析、内容归纳和摘要自动生成的技术。 文本自动摘要的基本分类 文本自动摘要的分...

  • 自动摘要

  • 自动摘要

    背景 大数据时代,信息爆炸?垃圾遍地! 互相复制的新闻重复推送的广告大量冗余无效的信息 所以需要筛选信息,通过文本...

  • 文本自动摘要

    转载自http://www.cnblogs.com/Determined22/ 两周以前读了些文档自动摘要的论文,...

  • 自动摘要综述

    转载 序 文本摘要是自然语言处理中比较难的一个任务,别说是用机器来做文摘了,就连人类做文摘的时候都需要具备很强的语...

  • 自动摘要综述

    转载 序 文本摘要是自然语言处理中比较难的一个任务,别说是用机器来做文摘了,就连人类做文摘的时候都需要具备很强的语...

  • 自动摘要实现

    知识点普及 文章自动摘要主要算法获取需要制作摘要的文章对该文章进行词频统计对该文章进行分句根据中文的标点符号,一般...

  • 自动摘要评测

    自然语言生成(NLG)中常见的无监督自评估方法:BLEU、METEOR、ROUGE、CIDEr 参考: https...

  • TextRank自动摘要提取

    所谓自动摘要,就是从文章中自动抽取关键句。何谓关键句?人类的理解是能够概括文章中心的句子,机器的理解只能模拟人...

  • 自动摘要抽取模型

    决策树算法实现自动摘要 决策树其实可以分为分类树和回归树两类,分类树是指输出每个样本的类别,而回归树则是值输出数值...

网友评论

      本文标题:自动摘要

      本文链接:https://www.haomeiwen.com/subject/zpdightx.html