Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
TextRank源码笔记
TextRank源码笔记
更多
TextRank代码版本是(https://github.com/davidadamojr/TextRank.git),基于2004年一篇用graph model做文本中单词、句子排序的paper。
TextRank主要功能是提取关键短语(keyphrases extraction)和文本摘要(summarization)。
1、keyphrases extraction
(1)将文本分词,并用词性进行过滤。这里使用nltk pos_tag留下了词表中的NN,NNP(名词),JJ(形容词)作为候选词。
(2)构建图模型,节点为候选词,边为两单词之间的Levenshtein距离(又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。)
(3)用pagerank计算图(networkx包,节点多了以后,计算巨慢),得出词的得分,然后排序,取前1/3作为候选关键词
(4)如果两个关键词相邻,则组合成短语,否则单独作为关键词。
2、summarization
(1)将文本分句。
(2)构建图模型,节点为句子,边为两句子之间的Levenshtein距离。
(3)用pagerank计算图,得出句子的得分,然后排序。
(4)将排序后的句子合并成字符串,并取top 100个字符作为摘要输出。
几点问题:
1、不管是单词还是句子,相似度计算太表面了,没有涉及到语义层面,效果肯定不会太好。(这里我尝试用了word2vec改善summarization,但是效果不好,原因是sentence vector的质量不高,但是word vector的质量非常高)
2、句子得分模型太过粗糙了,没有考虑feature,得到的效果感觉不会很好。
3、关键短语提取的方案居然用了词性过滤(这个方法我也曾想过,没有动手,因为感觉不靠谱),明显感觉关键短语效果很差,只是简单的考虑了词性这个feature。
4、感觉code中很多功能实现的很累赘,不够精炼.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment