日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转] TF-IDF与余弦相似性的应用(三):自动摘要

發布時間:2025/3/17 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转] TF-IDF与余弦相似性的应用(三):自动摘要 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時候,很簡單的數學方法,就可以完成很復雜的任務。

這個系列的前兩部分就是很好的例子。僅僅依靠統計詞頻,就能找出關鍵詞和相似文章。雖然它們算不上效果最好的方法,但肯定是最簡便易行的方法。

今天,依然繼續這個主題。討論如何通過詞頻,對文章進行自動摘要(Automatic summarization)。

如果能從3000字的文章,提煉出150字的摘要,就可以為讀者節省大量閱讀時間。由人完成的摘要叫"人工摘要",由機器完成的就叫"自動摘要"。許多網站都需要它,比如論文網站、新聞網站、搜索引擎等等。2007年,美國學者的論文《A Survey on Automatic Text Summarization》(Dipanjan Das, Andre F.T. Martins, 2007)總結了目前的自動摘要算法。其中,很重要的一種就是詞頻統計。

這種方法最早出自1958年的IBM公司科學家H.P. Luhn的論文《The Automatic Creation of Literature Abstracts》。

Luhn博士認為,文章的信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。"自動摘要"就是要找出那些包含信息最多的句子。

句子的信息量用"關鍵詞"來衡量。如果包含的關鍵詞越多,就說明這個句子越重要。Luhn提出用"簇"(cluster)表示關鍵詞的聚集。所謂"簇"就是包含多個關鍵詞的句子片段。

上圖就是Luhn原始論文的插圖,被框起來的部分就是一個"簇"。只要關鍵詞之間的距離小于"門檻值",它們就被認為處于同一個簇之中。Luhn建議的門檻值是4或5。也就是說,如果兩個關鍵詞之間有5個以上的其他詞,就可以把這兩個關鍵詞分在兩個簇。

下一步,對于每個簇,都計算它的重要性分值。

以前圖為例,其中的簇一共有7個詞,其中4個是關鍵詞。因此,它的重要性分值等于 ( 4 x 4 ) / 7 = 2.3。

然后,找出包含分值最高的簇的句子(比如5句),把它們合在一起,就構成了這篇文章的自動摘要。具體實現可以參見《Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites》(O'Reilly, 2011)一書的第8章,python代碼見github。

Luhn的這種算法后來被簡化,不再區分"簇",只考慮句子包含的關鍵詞。下面就是一個例子(采用偽碼表示),只考慮關鍵詞首先出現的句子。

? 1: Summarizer(originalText, maxSummarySize): 2:     // 計算原始文本的詞頻,生成一個數組,比如[(10,'the'), (3,'language'), (8,'code')...] 3:     wordFrequences = getWordCounts(originalText) 4:     // 過濾掉停用詞,數組變成[(3, 'language'), (8, 'code')...] 5:     contentWordFrequences = filtStopWords(wordFrequences) 6:     // 按照詞頻進行排序,數組變成['code', 'language'...] 7:     contentWordsSortbyFreq = sortByFreqThenDropFreq(contentWordFrequences) 8:     // 將文章分成句子 9:     sentences = getSentences(originalText) 10:     // 選擇關鍵詞首先出現的句子 11:     setSummarySentences = {} 12:     foreach word in contentWordsSortbyFreq: 13:       firstMatchingSentence = search(sentences, word) 14:       setSummarySentences.add(firstMatchingSentence) 15:       if setSummarySentences.size() = maxSummarySize: 16:         break 17:     // 將選中的句子按照出現順序,組成摘要 18:     summary = "" 19:     foreach sentence in sentences: 20:       if sentence in setSummarySentences: 21:         summary = summary + " " + sentence 22:     return summary ?

類似的算法已經被寫成了工具,比如基于Java的Classifier4J庫的SimpleSummariser模塊、基于C語言的OTS庫、以及基于classifier4J的C#實現和python實現。

?

原文地址:

http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html

轉載于:https://www.cnblogs.com/chaosimple/archive/2013/04/07/3005762.html

總結

以上是生活随笔為你收集整理的[转] TF-IDF与余弦相似性的应用(三):自动摘要的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。