關(guān)鍵詞是指能反映文本主題或者主要內(nèi)容的詞語(yǔ)霞丧。關(guān)鍵詞提取是NLP領(lǐng)域的一個(gè)重要的子任務(wù)蛀骇。在信息檢索中评汰,準(zhǔn)確的關(guān)鍵詞提取可以大幅提升效率;在對(duì)話系統(tǒng)中祠肥,機(jī)器可以通過(guò)關(guān)鍵詞來(lái)理解用戶意圖武氓;在文本分類中,關(guān)鍵詞的發(fā)現(xiàn)也非常有幫助仇箱。
關(guān)鍵詞提取的方法主要有:TF-IDF县恕、TextRank、Rake剂桥、Topic-Model等忠烛。
TF-IDF
TF-IDF的基本思想是:詞語(yǔ)的重要性與它在文件中出現(xiàn)的次數(shù)成正比,但同時(shí)會(huì)隨著它在語(yǔ)料庫(kù)中出現(xiàn)的頻率成反比下降渊额。
一個(gè)文檔中多次出現(xiàn)的詞總是有一定的特殊意義况木,但是并不是所有多次出現(xiàn)的詞就都是有意義的,如果一個(gè)詞在所有的文檔中都多次出現(xiàn)旬迹,那么這個(gè)詞就沒(méi)有什么價(jià)值了火惊。或者說(shuō)奔垦,如果某個(gè)詞或者短語(yǔ)在一個(gè)文檔中出現(xiàn)多次屹耐,但是在其他文檔中很少出現(xiàn),就可以認(rèn)為這個(gè)詞或短語(yǔ)具有很好的區(qū)分性,適合用來(lái)對(duì)文檔進(jìn)行分類惶岭。
TF(Term Frequency)表示一個(gè)詞在文檔中出現(xiàn)的次數(shù)寿弱。
DF(Document Frequency)表示整個(gè)語(yǔ)料庫(kù)中含有某個(gè)詞的文檔個(gè)數(shù)
IDF(Inverse Document Frequency)為逆文檔頻率,其計(jì)算公式為:
IDF= log(語(yǔ)料庫(kù)中文檔總數(shù)/(包含該詞的文檔數(shù)+1))
+1 的作用是確保分母不為零按灶。
TF-IDF = TF * IDF
由公式可知:一個(gè)詞在文檔中出現(xiàn)的次數(shù)越多症革,其TF值就越大,整個(gè)語(yǔ)料庫(kù)中包含某個(gè)詞的文檔數(shù)越少鸯旁,則IDF值越大噪矛,因此某個(gè)詞的TF-IDF值越大,則這個(gè)詞是關(guān)鍵詞的概率越大铺罢。
TF-IDF關(guān)鍵詞提取算法的一大缺點(diǎn)是:為了精確的提取一篇文檔中的關(guān)鍵詞艇挨,需要有一整個(gè)語(yǔ)料庫(kù)來(lái)提供支持。這個(gè)問(wèn)題的解決方法韭赘,通常是在一個(gè)通用的語(yǔ)料庫(kù)上提前計(jì)算好所有詞的IDF值缩滨,jieba就是這么做的。這樣的解決方案對(duì)于普通文檔關(guān)鍵詞提取有一定的效果泉瞻,但是對(duì)于專業(yè)性稍微強(qiáng)一點(diǎn)的文檔脉漏,表現(xiàn)就會(huì)差很多。
jieba中的已經(jīng)有TF-IDF關(guān)鍵詞提取算法的實(shí)現(xiàn)袖牙。使用jieba中的TF-IDF關(guān)鍵詞提取算法的代碼如下:
Rake
Rake的英文全稱是Rapid Automatic Keyword Extraction鸠删。
Rake算法引入了一個(gè)degree(度)的概念,并且對(duì)詞和短語(yǔ)不做任何區(qū)分贼陶,因此刃泡,它實(shí)際上是不僅僅是在提取關(guān)鍵詞,也是在提取關(guān)鍵短語(yǔ)碉怔。
關(guān)于Rake中引入的degree烘贴,它其實(shí)是圖論中的一個(gè)概念。在一張圖上撮胧,任一頂點(diǎn)的degree(度)是指與該頂點(diǎn)相關(guān)聯(lián)的邊的條數(shù)桨踪。在Rake算法中,一個(gè)詞的degree其實(shí)就是它在整個(gè)文檔中的非重復(fù)共現(xiàn)詞的數(shù)量芹啥。
舉個(gè)例子來(lái)說(shuō)明degree的計(jì)算锻离。比如在 “我要買一個(gè)小米手機(jī),因?yàn)榇蠹叶颊f(shuō)小米手機(jī)很好用墓怀!”中汽纠,“小米”這個(gè)詞出現(xiàn)了兩次,共現(xiàn)詞分別是 【一個(gè)傀履,手機(jī)虱朵,說(shuō),手機(jī)】,因此碴犬,在這句話中絮宁,“小米”這個(gè)詞的degree就是3。
使用Rake算法進(jìn)行關(guān)鍵詞提取不需要一整個(gè)語(yǔ)料庫(kù)的支持服协,相比于TF-IDF绍昂,這是一個(gè)很大的優(yōu)勢(shì)。
Rake算法的輸入?yún)?shù)有三個(gè):1)停用詞表(stop words)偿荷;2)段落分割符治专;3)詞語(yǔ)分割符。針對(duì)同一種語(yǔ)言遭顶,這三個(gè)參數(shù)事實(shí)上是一樣的。
使用Rake算法進(jìn)行關(guān)鍵詞(短語(yǔ))提取的過(guò)程如下:
step 1. 從輸入文本中獲取候選關(guān)鍵詞(candidate keywords)
step 2. 計(jì)算所有候選關(guān)鍵詞的得分泪蔫,公式如下:
score = sum(deg(w)/freq(w))
step 3. 拼接候選關(guān)鍵詞(以同樣的順序相鄰出現(xiàn)兩次)棒旗,獲取帶有停用詞的關(guān)鍵詞
step 4. 輸出得分最高的前T個(gè)候選關(guān)鍵詞作為關(guān)鍵詞,作者的做法是輸出前三分之一
Rake算法的實(shí)現(xiàn)撩荣,請(qǐng)點(diǎn)擊:https://github.com/zelandiya/RAKE-tutorial
TextRank
關(guān)于TextRank算法铣揉,之前寫過(guò)一篇,點(diǎn)擊直達(dá)
參考資料
2逛拱、關(guān)鍵詞提取方法學(xué)習(xí)總結(jié)(TF-IDF、Topic-model台猴、RAKE)
3朽合、用 RAKE 和 Maui 做 NLP 關(guān)鍵詞提取的教程