1. 程式人生 > >TF-IDF提取文章關鍵詞演算法

TF-IDF提取文章關鍵詞演算法

一、TF-IDF簡介

TF-IDF(terms frequency-inverse document frequency)是一種用於資訊檢索與文字挖掘的常用加權技術。TF-IDF是一種統計方法,用來評估一字詞對於一篇文章的重要程度。一個詞語對一篇文章的重要性主要是依靠它在檔案中出現的次數,如果這個詞語在這篇文章中的出現次數越高,則表明這個詞語對於這篇文章的重要性越高。同時,它還與這個詞語在語料庫中出現的文章篇數有關,隨著出現的篇數越多,則會降低這個詞語在這篇文章中的重要性,具體的演算法請看下面。

二、演算法實現

1、在實現這個演算法之前,我們需要對一篇文章進行分詞,在進行中文分詞的時候,推薦一個python庫,jieba分詞,作者將這個專案釋出到了GitHub上,是開源的,GitHub地址

https://github.com/fxsjy/jieba

2、TF詞頻的計算

詞頻(TF)=某個詞語在文章中的出現次數

由於我們需要考慮不同的文章,長度不同,我們需要將詞頻進行歸一化處理

詞頻(TF)=某個詞語在文章中的出現次數/文章的總詞數 或者 詞頻(TF)=某個詞語在文章中的出現次數/這篇文章出現最多的詞的出現次數

3、IDF的計算

逆文件頻率(IDF)=log(語料庫的文件總數/包含該詞的文件數+1),語料庫可以自己去網上下載,計算逆文件頻率的原因是為了去除哪些經常出現的詞語,比如說,“的”、“我們”、“他”等這類的詞語,這些詞語對於整篇文件重要性不高、但是出現的頻率會比較多,就有可能會影響到我們最後的計算結果,如果是經常出現的詞語就不能作為我們文章的關鍵詞。

4、計算TF-IDF的值

TF-IDF = 詞頻(TF)* 逆文件頻率(IDF)

5、排序

對文章詞語的TF-IDF值進行排序,我們可以選擇提取TF-IDF值比較大的詞語

6、總結

TF-IDF演算法的優點是簡單快速,結果比較符合實際情況。但,TF-IDF演算法是單純的以“詞頻”來衡量一個詞的重要性,就顯得不夠全面,這些詞語就不一定能體現出文章的主要思想突出文章的主題。而且,這種演算法也無法體現出詞語所處的不同位置對於文章的重要性不同,如果想解決這個問題,我們可以採用對於詞語所處的不同位置給他們設定不同的權重。

三、測試案例

下面的例子是使用jieba庫,來實現TF-IDF演算法的,下面是文章的內容

有很多不同的數學公式可以用來計算tf-idf。
這邊的例子以上述的數學公式來計算。
詞頻(tf)是一詞語出現的次數除以該檔案的總詞語數。
假如一篇檔案的總詞語數是100個,而詞語“母牛”出現了3次,
那麼“母牛”一詞在該檔案中的詞頻就是3/100=0.03。
一個計算檔案頻率(DF)的方法是測定有多少份檔案出現過“母牛”一詞,
然後除以檔案集裡包含的檔案總數。所以,如果“母牛”一詞在1,000份檔案出現過,
而檔案總數是10,000,000份的話,其逆向檔案頻率就是log(10,000,000 / 1,000)=4。
最後的tf-idf的分數為0.03 * 4=0.12。
python程式碼
import sys
sys.path.append('../')

import jieba
import jieba.analyse
from optparse import OptionParser

file_name = "../txt/test.txt"

content = open(file_name, 'rb').read()

#10表示輸出的前10個
tags = jieba.analyse.extract_tags(content, topK=10)

print(",".join(tags))
輸出結果
000,檔案,母牛,詞語,tf,詞頻,100,idf,10,0.03



相關推薦

TF-IDF提取文章關鍵詞演算法

一、TF-IDF簡介 TF-IDF(terms frequency-inverse document frequency)是一種用於資訊檢索與文字挖掘的常用加權技術。TF-IDF是一種統計方法,用來評

java tf-idf提取關鍵字

最近在研究nlp,nlp第一步就是分詞,目前開源的工具中,java的有中科院的分詞工具nlpir、還有word分詞器,ansj_seg等,python的比較火的jieba,ansj_seg5.x版本之後提供了提取關鍵字的方法,jieba也提供了提取關鍵字的方法。

文字挖掘——基於TF-IDF的KNN分類演算法實現

一、專案背景 此專案是用於基建大資料的文字挖掘。首先爬蟲師已經從各個公開網站上採集了大量的文字,這些文字是關於基建行業的各種招中標公告,文本里會有部分詞彙明顯或者隱晦的介紹此專案是關於哪一工程類別的,比如公路工程,市政工程,建築工程,軌道交通工程,等等。

利用資訊熵提取文章關鍵詞

目前,對於文章中提取關鍵詞最常用的方法莫過於TF-IDF,但是這樣提取出來的關鍵詞並不一定準確。 舉個最簡單的例子來說,在新聞中最前面出現“記者李元芳報道”,分詞後的結果是“記者、李元芳、報道”,對於這三個詞,“記者”和“報道”的經常出現,idf值一般來說可能會很低,

python 基於TF-IDF演算法關鍵詞提取

import jiaba.analyse jieba.analyse.extract_tags(content, topK=20, withWeight=False, allowPOS=()) content:為輸入的文字 topK:為返回tf-itf權重最大的關鍵詞,預設值為20個詞 wit

關鍵詞提取演算法TF/IDF演算法

關鍵詞提取演算法一般可分為有監督學習和無監督學習兩類。 有監督的關鍵詞提取方法可以通過分類的方式進行,通過構建一個較為完善的詞表,然後判斷每個文件與詞表中的每個詞的匹配程度,以類似打標籤的方式,達到關鍵詞提取的效果。優點是可以獲得較高的精度,缺點是需要大批量的標註資料,並且要對詞表進行人

關鍵詞提取/關鍵字提取TF-IDF演算法

TF-IDF(term frequency–inverse document frequency)是一種用於資訊檢索與資訊探勘的常用加權技術。TF的意思是詞頻(Term - frequency),  IDF的意思是逆向檔案頻率(inverse Document frequency)。TF-IDF是一

NLP----關鍵詞提取演算法(TextRank,TF/IDF

參考書目:python自然語言處理實戰——核心技術與演算法 TF/IDF 基本思想:TF是計算一個詞在一篇文件中出現的頻率,IDF是一個詞在多少篇文件中出現過,顯然TF越高證明這個詞在這篇文章中的代表性就越強,而INF越低則證明這個詞在具有越強的區分能力。因此中和這兩個數

解析TF-IDF演算法原理:關鍵詞提取,自動摘要,文字相似度計算

Abstract:TF-IDF演算法是一種常用的詞頻統計方法,常被用於關鍵詞提取、文字摘要、文章相似度計算等。 TF-IDF的演算法思路 TF詞頻(Text Frequency):統計出現次數最多的詞 IDF逆文件頻率(Inverse Document Frequ

TF-IDF演算法自動提取關鍵詞

前言 關鍵詞提取可以是說是NLP中比較常見研究方向,這個涉及到資料探勘、文字處理、資訊檢索等很多計算機前沿領域。但今天我們就瞭解一個簡單的演算法來提取關鍵詞。 那麼我們該如何實現計算機自動提取關鍵詞呢? 讓我們從一個例項開始講起。假定現在有一篇長文《中國的

基於TF-IDF演算法的短標題關鍵詞提取

                                         

TF-IDF與餘弦相似性文字處理:自動提取關鍵詞、找出相似文章

這個標題看上去好像很複雜,其實我要談的是一個很簡單的問題。 有一篇很長的文章,我要用計算機提取它的關鍵詞(Automatic Keyphrase extraction),完全不加以人工干預,請問怎樣才能正確做到? 這個問題涉及到資料探勘、文字處理、資訊檢索等很多計算

【自然語言處理】TF-IDF演算法提取關鍵詞

自然語言處理——TF-IDF演算法提取關鍵詞 這個標題看上去好像很複雜,其實我要談的是一個很簡單的問題。 有一篇很長的文章,我要用計算機提取它的關鍵詞(Automatic Keyphrase extraction),完全不加以人工干預,請問怎樣才能正確做到? 這個問

自然語言處理——TF-IDF演算法提取關鍵詞

這個標題看上去好像很複雜,其實我要談的是一個很簡單的問題。有一篇很長的文章,我要用計算機提取它的關鍵詞(Automatic Keyphrase extraction),完全不加以人工干預,請問怎樣才能正確做到?這個問題涉及到資料探勘、文字處理、資訊檢索等很多計算機前沿領域,但是出乎意料的是,有一個非常簡單的經

tf-idf關鍵詞提取演算法

tf-idf簡介 在資訊提取的應用場景之中,我們往往需要一些文字中的重要的詞而不是文字中的所有詞語來進行分析,即使原文字已經進行了去停用詞的處理。 那麼什麼樣的詞算是文字中的關鍵詞呢?一方面,這個詞應該在文字中出現的次數比較多;另一方面,這個詞應該不那麼常見

自然語言處理--TF-IDF關鍵詞提取

png -m word req bsp xmlns idt 區分 適合 TF-IDF算法 TF-IDF(詞頻-逆文檔頻率)算法是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在

關鍵詞抽取演算法介紹:TF-IDF和TextRank

一、前言 關鍵詞抽取就是從文本里面把跟這篇文件意義最相關的一些詞抽取出來。這個可以追溯到文獻檢索初期,當時還不支援全文搜尋的時候,關鍵詞就可以作為搜尋這篇論文的詞語。因此,目前依然可以在論文中看到關鍵詞這一項。 除了這些,關鍵詞還可以在文字聚類、分類、自動摘要等領域中有著重要的作用。

Python的jieba分詞及TF-IDF和TextRank 演算法提取關鍵字

參考文章:Github上的專案———jieba 中文分詞 對於NLP(自然語言處理)來說,分詞是一步重要的工作,市面上也有各種分詞庫,11款開放中文分詞系統比較。 1.基於詞典:基於字典、詞庫匹配的分詞方法;(字串匹配、機械分詞法) 2.基於統計:基於詞頻度統計的分詞方法;&n

TF-IDF關鍵詞提取方法的學習

首先引用一下百度百科裡的解釋: TF-IDF(term frequency–inverse document frequency)是一種用於資訊檢索與資料探勘的常用加權技術。TF意思是詞頻(Term Frequency),IDF意思是逆向檔案頻率(Inverse Document Frequ

如何用Java實現NLP的經典關鍵詞演算法 TF-IDF

面對一篇文章,我們如何提取他的關鍵詞呢。如果是我們自己去提取,那隻需要讀一遍,然後大腦中就會有一定的印象了,但是對於計算機來說,他沒有人那樣的思考能力啊,那怎麼辦,只能依靠演算法了。今天分享的內容呢是如何用Java語言實現NLP(自然語言處理)領域中一個非常著名