aivolcano / read_new_auto

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

任务目标

开发一套能快速提取新闻文本核心内容的工具,核心内容包括:关键词、关键句。关键词生成词云图

开发一款召回长文本关键句的工具,核心内容是解决NLP中长文本输入的问题

原理

使用TextRank算法召回长文本top-k个关键词和关键句

  • Step1,进行分词和词性标注,将单词添加到图中,删除停用词
  • Step2,出现在一个窗口(window)中的词形成一条边
  • Step3,基于PageRank原理进行迭代(20-30次)
  • Step4,顶点(词)按照分数进行排序,可以筛选指定的词性

注:W_ij: 单词i和j之间的权重 节点的权重不仅依赖于入度,还依赖于入度节点的权重

TextRank中,windows=3,意味着前后3个句子作为顶点,两两使用边连接起来,表示句子间的关系强度。

NLP的长文本解决方案有(以BERT为例,BERT最长只能输入512个字)

  • 人工规则提取核心内容:前128个字 和 后382个字,适用于新闻、文章
  • 截断:前510个字,从511个字开始的内容删除;或者后510个字,从后511个字开始的内容删除
  • 召回算法:从长文本中召回top-k个关键句。
tr4s = TextRank4Sentence().analyze(text=self.text, lower=True, source='all_filters')
# print('摘要:')
# 重要性较高的3个句子
for item in tr4s.get_key_sentences(num=self.sentence_num): # sentence_num是生成关键句的个数
    # index是语句在文本中位置,weight表示权重
    # print('item.index, item.weight, item.sentence',item.index, item.weight, item.sentence)
    # self.import_sentence.append(str(item.index) + ' ' +item.sentence)
    self.import_sentence.append(item.sentence)

# 召回top-3个关键句代表一篇长文本
text4bert = readingNews1.title + readingNews1.import_sentence[0][2:] + readingNews1.import_sentence[1][2:] + readingNews1.import_sentence[2][2:]

环境要求

pip install textrank4zh

About


Languages

Language:Python 100.0%