一种结合页面解析规则和NLP文本向量化的摘要提取方法与流程

文档序号:17538643发布日期:2019-04-29 14:17阅读:360来源:国知局
本发明涉及自然语言处理
技术领域
:,特别是涉及一种结合页面解析规则和nlp文本向量化的摘要提取方法。
背景技术
::文本摘要的重要性在生活中都能体现,在这个信息和数据爆炸的时代,越来越多的信息让人们难以在短时间内接收,过滤掉烦琐的文字信息,用几个简单的句子就能把核心的信息表达出来的方式显得尤为重要,最常见的就是日常我们经常接触的新闻、微博等。技术应用方面,通过获取的摘要信息,可以拿来做分类、主旨分析等nlp任务。目前对摘要提取是采用textrank+word2vec模型对整个文本进行核心句子的抽取,但是,对于长篇文章来说,用word2vec模型将文本划分为句子,再将句子拆分成词,然后将词向量化并求距离的过程会有很高的计算复杂度,而且textrank是基于句子的相似度给予的权重,根据实际的抽取结果来看,尤其是对于类似新闻这一类的文本,内容和段落形态各异,很多干扰性的句子会影响抽取结果。技术实现要素:针对上述现有技术的不足,本发明提供了一种结合页面解析规则和nlp文本向量化的摘要提取方法,快速对类似新闻的多样性文本核心句子进行抽取。为了解决上述技术问题,本发明采用了如下的技术方案:一种结合页面解析规则和nlp文本向量化的摘要提取方法,包括以下步骤:s1:运用readability包对网页类的文本数据的“body”标签内html格式的正文数据进行抽取,得到页面正文的文本语料;s2:获取所述文本语料的文本长度,排除不合格的文本语料,合格的文本语料进入s3;s3:判断所述文本语料的句子数量是否大于阈值;若不大于阈值,进入步骤s7,若大于阈值,进入步骤s4;s4:判断能否获取段落小标题语段,如果能,获取段落小标题语段后进入s6;如果不能,进入s5;s5:定义正则匹配关键词,剔除匹配到正则匹配关键词的文本得到过滤后的文本语料;对所述过滤后的文本语料取一定长度的首尾段语段进入s6;s6:对语段进行合规性判定,若语段的合规性符合要求,则认定所述语段为文本摘要句子;若语段的合规性不符合要求,则返回至步骤s4;s7:训练word2vec模型,将所述文本语料拆分成句子,再将句子拆分成词做向量化操作并用emd求句子相似度,再运用textrank算法基于句子相似度给予权重并认定权重最高的句子为文本摘要句子。作为优化,运用python的内置函数的方式来获取步骤s2所述的文本语料的文本长度,在经过对文本语料的句子做过滤后,排除句子数量小于2或在ascii编码条件下句子长度不大于45或包含正则匹配关键词的文本语料。作为优化,步骤s4的具体步骤为在html格式的文本中抽取h2、h3、h4、h5、strong标签,若抽取结果为空则代表没有获取到小标题语段,若不为空,则将h2、h3、h4、h5、strong标签作为小标题语段并进入步骤s6。作为优化,步骤s7的具体步骤为将文本划分为句子,采用cbow与skip-gram模型和负采样与层次softmax方法的组合将句子拆分成词做向量化,将基于词向量的句子用emd求句子的相似度,再运用textrank算法基于句子相似度给予权重并认定权重最高的句子为文本摘要句子。作为优化,步骤s6的合规性判定为:对于能获取小标题的语段,选取语段段落大于5且不包含正则匹配关键词且带有h2、h3、h4、h5、strong标签的段落位置不相邻的文本语段;对于不能获取小标题的语段,选取在unicode编码下长度大于5且不包含正则匹配关键词的文本语料。作为优化,步骤s3的阈值为28。本发明的有益效果是:本发明所述的一种结合页面解析规则和nlp文本向量化的摘要提取方法可以对于长篇的博客、新闻类的文章可以获取较核心的句子从而快速了解主旨。附图说明图1为本发明所述的一种结合页面解析规则和nlp文本向量化的摘要提取方法的方法流程图。图2为本发明所述的一种结合页面解析规则和nlp文本向量化的摘要提取方法的具体实施流程图。具体实施方式下面结合附图对本发明作进一步的详细说明。一种结合页面解析规则和nlp文本向量化的摘要提取方法,包括以下步骤:s1:运用readability包对网页类的文本数据的“body”标签内html格式的正文数据进行抽取,得到页面正文的文本语料。例如需要提取的正文:fromreadability.readabilityimportdocumentfromscrapy.selectorimporthtmlxpathselectorfromscrapy.httpimporthtmlresponseimporturllibhtml=urllib.urlopen(url).read()content_t=html.split(‘<divclass="arti-conrel">‘)[-1].strip().split(‘<divclass="clearfixpage-n-p-con"‘)[0].strip()content_t=‘<divclass="arti-conrel">‘+content_treadable_article=document(content_t).summary()response=htmlresponse(url=“,body=readable_article,encoding=‘utf8‘)hxs=htmlxpathselector(response)html_content=“.join(hxs.select(‘//text()‘).extract()).strip()s2:获取所述文本语料的文本长度,排除不合格的文本语料,合格的文本语料进入s3。运用python的内置函数的方式来获取步骤s2的文本语料的文本长度,在经过对文本语料的句子做过滤后,排除句子数量小于2或在ascii编码条件下句子长度不大于45且包含正则匹配关键词的文本语料。判断句子数量是以句末为句号、问号和叹号为判断标准的,长度是指包括标点符号在内的字数统计。s3:判断所述文本语料的句子数量是否大于阈值;若不大于阈值,进入步骤s7,若大于阈值,进入步骤s4。本实施例中,句子的数量阈值为28。s4:判断能否获取段落小标题语段,如果能,获取段落小标题语段后进入s6;如果不能,进入s5。在html格式的文本中抽取h2、h3、h4、h5、strong标签,若抽取结果为空则代表没有获取到小标题语段,若不为空,则将h2、h3、h4、h5、strong标签作为小标题语段。例如有文本:需要把table标签提取出来,代码如下:[div/table]或fromlxmlimportetreediv=etree.html(html)table=div.xpath('//div/table')[0]content=etree.tostring(table,print_pretty=true,method='html'),也可以采用其他代码来实现提取标签。s5:定义正则匹配关键词,剔除匹配到正则匹配关键词的文本得到过滤后的文本语料;对所述过滤后的文本语料取一定长度的首尾段语段进入s6。正则匹配关键词包括"(作者|备注|来源|编辑|免责声明)[::]+|未经.*(同意|许可)*.*严禁转载|如需转载.*注明出处|图为|关注.*(微信|同花顺财经)|保证.*内容.*(虚假记载|真实)|^第[一二三四五六七八九十]+|^[\((]*[\d]+[、\.]*|^特别说明[::]"。s6:若语段的合规性符合要求,则认定所述语段为文本摘要句子;若语段的合规性不符合要求,则返回至步骤s4;本实施例中,语段的合规性具体判断标准为:对于能获取小标题的语段,选取语段段落大于5且不包含正则匹配关键词且带有h2、h3、h4、h5、strong标签的段落位置不相邻的文本语段;对于不能获取小标题的语段,选取在unicode编码下长度大于5且不包含正则匹配关键词的文本语料。s7:训练word2vec模型,将所述文本语料拆分成句子,再将句子拆分成词做向量化操作并用emd求句子相似度,再运用textrank算法基于句子相似度给予权重并认定权重最高的句子为文本摘要句子。本实施例中,步骤s7的具体步骤为将文本划分为句子,采用cbow与skip-gram模型和负采样与层次softmax方法的组合将句子拆分成词做向量化,将基于词向量的句子用emd求句子的相似度,再运用textrank算法基于句子相似度给予权重并认定权重最高的句子为文本摘要句子。cbow(continuousbag-of-wordmodel,cbow),称为连续词袋模型,是一个三层神经网络,输入已知上下文输出对下个单词的预测。cbow模型的第一层是输入层,输入已知上下文的词向量.中间一层称为线性隐含层,它将所有输入的词向量累加。第三层是一棵哈夫曼树,树的的叶节点与语料库中的单词一一对应,而树的每个非叶节点是一个二分类器(一般是softmax感知机等),树的每个非叶节点都直接与隐含层相连。将上下文的词向量输入cbow模型,由隐含层累加得到中间向量.将中间向量输入哈夫曼树的根节点,根节点会将其分到左子树或右子树。每个非叶节点都会对中间向量进行分类,直到达到某个叶节点.该叶节点对应的单词就是对下个单词的预测。首先根据预料库建立词汇表,词汇表中所有单词拥有一个随机的词向量.我们从语料库选择一段文本进行训练。将单词w的上下文的词向量输入cbow,由隐含层累加,在第三层的哈夫曼树中沿着某个特定的路径到达某个叶节点,从给出对单词w的预测。训练过程中我们已经知道了单词w,根据w的哈夫曼编码我们可以确定从根节点到叶节点的正确路径,也确定了路径上所有分类器应该作出的预测。我们采用梯度下降法调整输入的词向量,使得实际路径向正确路径靠拢。在训练结束后我们可以从词汇表中得到每个单词对应的词向量。skip-gram模型同样是一个三层神经网络,skip-gram模型的结构与cbow模型正好相反,skip-gram模型输入某个单词输出对它上下文词向量的预测。输入一个单词,输出对上下文的预测。skip-gram的核心同样是一个哈夫曼树,每一个单词从树根开始到达叶节点可以预测出它上下文中的一个单词。对每个单词进行n-1次迭代,得到对它上下文中所有单词的预测,根据训练数据调整词向量得到足够精确的结果。用emd求句子的相似度的具体步骤为:假设有两个包含向量化词的句子p、q,p={(p1,wp1),(p2,wp2),(p3,wp3)···,(pn,wpm)},q={(q1,wq1),(q2,wq2),(q3,wq3)···,(qn,wqn)}pi是句子p的某个向量化词,wpi是向量化词pi的权重,而qj是句子q的某个向量化词,wqj是向量化词qj的权重,m、n分别为句子p和句子q的向量化词的数量。定义句子p和句子q之间的距离矩阵[dij];每一项dij代表pi和qj的距离,[dij]是个mxn矩阵;定义pi到qj的流动数量矩阵f=[fij],pi到qj的次数,从而最小化全局的代价函数:对最小化全局代数函数归一化得到:即其中,fij≥0;再通过textrank算法基于句子相似度给予权重并认定权重最高的句子为文本摘要句子。textrank算法是一种用于文本的基于图的排序算法。通过把文本分割成若干组成单元(单词、句子)并建立图模型,利用投票机制对文本中的重要成分进行排序,仅利用单篇文档本身的信息即可实现关键词提取、文摘。初始时,设置每个句子的重要性为1,通过迭代得到公式如下:计算得到句子权重,其中,ws(vi)为文本句子i的重要性(pr值),ws(vj)为文本句子j的重要性(pr值),d是阻尼系数,一般设置为0.85,in(vi)是存在指向文本句子i的链接的句子集合;out(vj)是文本句子j中的链接存在的链接指向的句子的集合;wji是文本句子i和文本句子j的相似度,公式等号左边计算的结果是迭代后文本句子i的pr值,等号右边用到的pr值全是迭代前的。最终得到权重最高的文本句子就是文本摘要句子。最后应说明的是:本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等统计数的范围之内,则本发明也意图包含这些改动和变型。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1