當前位置:成語大全網 - 英語詞典 - 如何使用Python在TF-IDF中查找相似文章並生成摘要?

如何使用Python在TF-IDF中查找相似文章並生成摘要?

應用1:關鍵字自動生成

核心思想是計算文檔中壹個詞的標準化TF值,然後計算該詞在整個語料庫中的標準化IDF值。這裏的標準化是指對原有的計算公式做了壹些改動,以達到更好的測量結果,避免壹些極端情況的發生。這個字的TF-IDF值等於TF*IDF。計算這個文檔中所有單詞的TF-IDF值,並從高到低排序,這樣我們就可以提取出我們想要的盡可能多的關鍵詞。

TF-IDF的優點是速度快,結果相對符合實際情況。缺點是當文檔中兩個單詞的IDF值相同時,出現頻率較低的單詞可能更重要。而且TF-IDF算法不能反映我的詞的位置信息,把出現在前面位置的詞和出現在後面位置的詞視為同等重要,這是不正確的。現有的解決方案是對第壹段和每段的第壹句給予更大的權重。

應用2:計算文本相似度

我明白如何計算每個單詞的TF-IDF值。那麽計算文本相似度就很容易了。我們已經計算了文章中每個單詞的TF-IDF值,因此我們可以將文章表征為該單詞的TF-IDF數值向量。要計算兩個文本的相似度,只需計算余弦即可。余弦值越大,兩個文本越相似。

應用3:自動摘要

2007年,美國學者的論文

以第壹張圖為例,其中cluster-* *有七個詞,其中四個是關鍵詞。所以它的重要性得分等於(4*4)/7=2.3。然後,找出聚類重要性得分最高的句子(比如5個句子)放在壹起,形成這篇文章的自動摘要。看見

Summarizer(originalText,maxSummarySize):

//?計算文本的詞頻並生成列表,如[(10,' the '),?(3,“語言”),?(8,“代碼”)...]

詞頻?=?getWordCounts(originalText)

//?過濾掉停用詞,列表就變成[(3,?語言’),?(8,?代碼’)...]

contentWordFrequences?=?filtStopWords(詞頻)

//?根據詞頻大小,列表為[‘碼’,?“語言”...]

contentWordsSortbyFreq?=?sortByFreqThenDropFreq(內容詞頻率)

//?把文章分成句子

句子?=?獲取句子(原始文本)

//?選擇關鍵字首次出現的句子。

setSummarySentences?=?{}

foreach?詞?在?contentWordsSortbyFreq:

firstMatchingSentence?=?搜索(句子,?word)

setsummarysentences . add(firstMatchingSentence)

如果?setSummarySentences.size()?=?maxSummarySize:

破裂

//?按照出現的順序對所選的句子進行總結。

總結?=?""

foreach?句子?在?句子:

如果?句子?在?setSummarySentences:

總結?=?總結?+?"?"?+?句子

回歸?類似的summary的算法已經寫成了工具,比如基於Java的Classifier4J庫的SimpleSummariser模塊,基於C語言的OTS庫,基於classifier4J的C#實現和python實現。