Skip to content

Instantly share code, notes, and snippets.

@rsarxiv
Created March 30, 2016 12:48
Show Gist options
  • Save rsarxiv/4e949264b3bda98828b84cf2991e57e4 to your computer and use it in GitHub Desktop.
Save rsarxiv/4e949264b3bda98828b84cf2991e57e4 to your computer and use it in GitHub Desktop.
TextTeaser源码阅读笔记
一共三个class,TextTeaser,Parser,Summarizer。
1、TextTeaser,程序入口类。给定待摘要的文本和文本题目,输出文本摘要,默认是原文中最重要的5句话。
2、Summarizer,生成摘要类。计算出每句话的分数,并按照得分做排序,然后按照原文中句子的顺序依次输出得分最高的5句话作为摘要。
关键在于如何计算句子的得分,打分模型分为四个部分:
1)句子长度,长度为20的句子为最理想的长度,依照距离这个长度来打分。
2)句子位置,根据句子在全文中的位置,给出分数。(可能是根据自己统计的一些句子重要性数据)
Tips:这里,可以将文本划分为段落,依据句子在段落中的位置来打分,效果可能会更好!
3)句子是否包含标题词,根据句子中包含标题词的多少来打分。
4)句子关键词打分,文本进行预处理之后,按照词频统计出排名前10的关键词,通过比较句子中包含关键词的情况,以及关键词分布的情况来打分(sbs,dbs两个函数)。
单文档摘要的技术核心就是给句子打分排序,然后按自然序输出。
3、Parser,文本解析类。对文本进行去除停用词、去除标点符号、分词、统计词频等一些预处理操作。
据说,这个算法在新闻上应用的很好,自己试了一下,感觉还是不错的,而且作者将算法做成了生意,卖SaaS API服务,给一些新闻App生成新闻摘要来赚钱,据说效果比之前的summly效果好。
算法很简单,典型的单文档摘要处理方法,完全是feature工程,很多的参数没有依据并且数量很多,效果评定很难做。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment