信息抽取--关键句提取
(純屬為了記錄自己學習的點滴過程,引用資料都附在參考列表)
1 基本概念
關鍵句提取
 在一些場合,關鍵詞或關鍵短語依然顯得碎片化,不足以表達完整的主題。這時通常提取中心句子作為文章的簡短摘要。
2 問題
關鍵句提取;
3 解決思路
基本思想:
 由于一篇文章中幾乎不可能出現相同的兩個句子,所以樸素的 PageRank 在句子顆粒度上行不通。為了將 PageRank 利用到句子顆粒度上去,我們引人 BM25 算法衡量句子的相似度,改進鏈接的權重計算。這樣窗口的中心句與相鄰的句子間的鏈接變得有強有弱,相似的句子將得到更高的投票。而文章的中心句往往與其他解釋說明的句子存在較高的相似性,這恰好為算法提供了落腳點。
BM25:
 BM25(D,Q)=∑i=1nIDF(qi)?TF(qi,D)?(k1+1)TF(qi,D)+k1?(1?b+b?∣D∣avgDL)BM25(D, Q)=\sum_{i=1}^n IDF(q_i) \cdot \frac{TF(q_i,D) \cdot (k_1+1)}{TF(q_i,D)+k_1 \cdot (1 - b + b \cdot \frac{|D|}{avgDL})}BM25(D,Q)=∑i=1n?IDF(qi?)?TF(qi?,D)+k1??(1?b+b?avgDL∣D∣?)TF(qi?,D)?(k1?+1)?
有了BM25算法之后,將一個句子視作查詢語句,相鄰的句子視作待查詢的文檔,就能得到它們之間的相似度。以此相似度作為 PageRank 中的鏈接的權重,于是得到一種改進算法,稱為TextRank。它的形式化計算方法如下:
WS(Vi)=(1?d)+d×∑Vj∈In(Vj)BM25(Vi,Vj)∑Vk∈Out(Vj)BM25(Vk,Vj)WS(Vj)WS(V_i)=(1-d)+d \times \sum_{V_j \in In(V_j)} \frac{BM25(V_i, V_j)}{\sum_{V_k \in Out(V_j)} BM25(V_k, V_j)} WS(V_j)WS(Vi?)=(1?d)+d×∑Vj?∈In(Vj?)?∑Vk?∈Out(Vj?)?BM25(Vk?,Vj?)BM25(Vi?,Vj?)?WS(Vj?)
其中,WS(Vi) 就是文檔中第 i 個句子的得分,重復迭代該表達式若干次之后得到最終的分值,排序后輸出前 N 個即得到關鍵句。另外,由于文檔中句子的數量遠遠小于單詞的數量,并且句子幾乎不重復,所以通常不再取窗口,而認為所有的句子都是相鄰的。
4 實現
from pyhanlp import *"""自動摘要""" document = '''水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發布會上透露, 根據剛剛完成了水資源管理制度的考核,有部分省接近了紅線的指標, 有部分省超過紅線的指標。對一些超過紅線的地方,陳明忠表示,對一些取用水項目進行區域的限批, 嚴格地進行水資源論證和取水許可的批準。'''TextRankSentence = JClass("com.hankcs.hanlp.summary.TextRankSentence") sentence_list = HanLP.extractSummary(document, 3) print(sentence_list)運行結果:
[嚴格地進行水資源論證和取水許可的批準,水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發布會上透露,有部分省超過紅線的指標]5 參考文獻
6 需要解決的問題
總結
以上是生活随笔為你收集整理的信息抽取--关键句提取的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JDK源码-搭建
- 下一篇: 使用Tampermonkey进行Java
