文摘的基本過程分為三個步驟:
1. 文字輸入
2. 計算
3. 文摘輸出
文摘的分類
從輸入的角度來看,基本的可以分為單文件文摘和多文件文摘。區別在於輸入的是一篇文章還是一坨文章。
此外,如果生成的結果在資訊內容型別上相對固定,即可以用模版來生成結果,如:最後生成的是固定格式的個人簡歷,那麼自動文摘任務轉化成為資訊抽取任務。
從計算文摘的技術角度來看,從最大的思路來看,分兩類:
1. 抽取型文摘:直接從原文中抽取句子,形成文摘
2. 理解型文摘:在理解的基礎上,組織語言複述輸入文字的內容
其中2難度太大,所以一般大家說的都是1.
抽取型文摘,一般分為如下幾個步驟:
1. 預處理:包括編碼轉換、斷句等
3. 語句權重計算
4. 按計算權重對語句排序,根據比例抽取文摘句
5. 根據語句在原文中出現的順序重新排序,並對生成文摘進行潤色,如:指代消解
上面步驟中,第三步語句權重的計算是關鍵。一般來講,語句的權重由組成語句的詞語的權重來計算。而詞語的權重由一些因素決定:
1. tf/idf
2. 詞語位置(句首)
3. 是否是指示性詞語,如:綜上所述、第
一、第二、最後
4. 是否是名實體
5. 是否在標題中
7. 詞的情感因素
8. 句法、語義資訊
9. ngram資訊
通常,上述資訊進行線性加權,計算得出詞語權重。詞語權重之和,結合句子的特定資訊(如:位置資訊、結構資訊)來確定句子的權重。
對於上述因素線性加權,權重的確定。如果是無監督學習(沒有訓練語料),則完全憑人的經驗來確定;如果有訓練語料,有監督學習,可以採用一些方法,如:邏輯回歸、遺傳演算法等。
機器學習方法也應用到文摘當中,舉幾個例子:
1. 分類器,尤其是二值分類器(svm),在有監督學習情況下,直接用到上面,輸出0表示非文摘句,輸出1表示文摘句。通常文摘句子數目遠小於非文摘句子數目,用svm會面臨資料集合不平衡的問題。
2. 類pagerank方法:依據是,出現在重要的語句中的詞語也重要,包含重要詞語的語句也重要。詞語權重和句子權重迭代計算,穩定後,形成最終句子權重。一般轉為圖形式,用隨機遊走演算法來獲得優化引數。
等等。不過機器學習方法基本都是有監督學習方法,都需要有標準文摘。但是標準文摘在實際中很難獲得,一方面是標註文摘比其他的標註(如:詞性)代價更大,另一方面是不同人標註的標準不同,結果也不同。所以機器學習方法很難單獨應用到文摘當中。semi-supervised是個可以嘗試的思路。
除了通過對各個因素加權的方式來計算句子的權重,還可以從資訊理論的角度,計算每個句子對於全文來講所佔的資訊量,選擇資訊量最大的語句們作為文摘句。語句的資訊量是組成語句的每個詞語的資訊量的和,詞語資訊量的計算,是通過詞語與其他詞語同現分布(統計ngram)來計算的。相關工作參考復旦大學陶余會的文章《一種基於文字單元關聯網路的自動文摘方法》。
還有一種技術思路,用到了語句之間的相似度:
將文件看做是語句的集合(斷句),選擇第一句話,與剩下的語句集合計算相似度——應該是這句話與集合中心計算向量夾角。然後,將這句話放回集合,取第二句話,繼續計算......直到計算了所有語句。選擇與文章中心相似度最大的語句作為文摘句。然後,重複上述過程,選擇第二個文摘句。過程持續直到選擇了足夠的文摘句為止。
要計算相似度,必須解決句子表示的問題。一般,語句都表示為詞語或者ngram向量,利用向量夾角計算。也有一些人利用了語言學資源,如:hownet、wordnet等語言學詞典,將語句中的詞語轉成了hownet中更加基本的「概念」,用概念向量來表示句子,計算相似度。當然,這兩種相似度也可以通過線性加權的方式結合起來。
再說一下多文件文摘的「詞彙鏈」方法。
詞彙連方法實際上是單文件文摘的句子加權方法在多文件文摘的一種延伸。步驟如下:
1. 首先還是要進行分詞、詞彙權重、詞性標註等準備工作。
2. 選取名詞、名實體、和其他認為重要的詞語作為形成詞彙鏈的詞彙的集合。
3. 選取集合中的乙個詞語,形成的乙個詞彙鏈的第乙個詞語,計算該詞語與集合中其他詞語的相似度,當相似度大於一定閾值的時候,認為兩個詞語是在同乙個詞彙鏈中;否則,另乙個詞語作為新一條詞彙鏈的第乙個詞語;重複上述過程,直到所有的詞語都在乙個詞彙鏈中為止。
4. 計算每個詞彙鏈的權重,依據是每個詞彙的權重、位置等資訊。
5. 對詞彙鏈進行排序,選擇大於某個特定閾值的詞彙鏈
6. 包含詞彙鏈上詞語的語句作為備選語句集合
7. 對備選語句集合進行聚類、去重、重排序
8. 文摘潤色工作,如指代消解、去除指示性詞語等
為什麼說多文件文摘中詞彙鏈方法是單文件文摘句子權重方法的一種延伸呢?想個具體的例子:
最近李天一的案子比較火,會有多篇新聞來報道相關事件進展。如:
1. 李天一**案今日宣判
2. 李某某涉嫌**,法庭合議後,擇日宣判
3. 李雙江兒子在***對楊某某進行**,楊某某身心受到極大傷害,不能出庭...
......(上述新聞是自己杜撰出來的,只為說明問題)
可以抽取三條詞彙鏈:
李天一 --- 李某某 --- 李雙江兒子
宣判 --- 出庭
** --- ** --- 傷害
每個詞彙鏈,說的是相同型別的事情。將多文件中的語句按照時間和在文章中出現的順序、從上到下排列,每一句話作為一行,詞彙鏈就是在縱向穿插這些句子的線索。在同一詞彙鏈上的語句,說的都是同一件事(或者至少在相應的詞語上面,都是表達同樣的意思);而詞彙鏈中的詞語,又對文章資訊有重要線索作用,所以在多個詞彙鏈上的出現語句,就越是重要語句。這些語句相當於通過詞彙鏈的方式重新組織起來了。在這種組織方式下,進行聚類、去重、潤色等工作。
單文件文摘,也可以構建詞彙鏈。無論單文件、多文件文摘,包含多個詞彙鏈的詞彙的句子,重要性都高。那麼在單文件文摘中,就不一定形成詞彙鏈,而只是計算詞語權重、並計算語句權重就可以了。對於多文件文摘,同單文件文摘相比,語句更有可能是重複的,在選取重要語句的基礎上,去重是不能忽視的工作。如果兩個語句包含的詞彙鏈完全相同,那麼這兩個語句很有可能是重複的,表達重複的意思。詞彙鏈在此時對於語句去重是有用的。
自動文摘的評測
基本思路就是計算機器生成文摘同人工標註文摘的相似程度。自動文摘相對分詞、詞性標註、名實體識別等任務來講,是nlp比較「高階」的任務,因此自動評測也比較困難。
網際網路浪潮下的自動文摘
1. 對文摘的需求產生變化:從前都是對傳統新聞文字進行文摘,網際網路語言變化較快,且體裁多樣,如對科技部落格類文摘,技術上是否要做特殊處理?
2. 網際網路的資源也可以考慮利用,如:文摘的評測比較困難,我們可以通過眾包的方式來生成評測集合麼?
在網際網路條件下,還有很多可以yy、可以做的事情。
《Spark效能優化技術研究綜述》學習筆記
大資料平台的執行環境由於受到底層硬體 體系結構 作業系統 spark框架本身以及使用者編寫的應用程式等多層次的綜合影響。如果不了解spark底層複雜的執行機制,就找不到效能瓶頸,也就無法優化。使用者的driver程式通過action操作劃分job,有多少個action操作就有多少個job。job通過...
自動機器學習(AutoML)最新綜述
機器學習的應用需要大量的人工干預,這些人工干預表現在 特徵提取 模型選擇 引數調節等機器學習的各個方面。automl 試圖將這些與特徵 模型 優化 評價有關的重要步驟進行自動化地學習,使得機器學習模型無需人工干預即可被應用。作者從機器學習和自動化兩個角度給出了定義 1.從機器學習角度講,automl...
twisted學習筆記之 綜述和reactor概述
reactor platform usage iocpreactor win32 from twisted.internet import iocpreactor iocpreactor.reactor.install from twisted.internet import reactor sel...