目錄
一、PageRank算法
二、TextRank算法
1. 關(guān)鍵詞抽取(keyword extraction)
2. 關(guān)鍵短語抽?。╧eyphrase extration)
3. 關(guān)鍵句抽取(sentence extraction)
三、TextRank算法實現(xiàn)
1. 基于Textrank4zh的TextRank算法實現(xiàn)
2. 基于jieba的TextRank算法實現(xiàn)
3.?基于SnowNLP的TextRank算法實現(xiàn)
四、PageRank算法與TextRank算法的區(qū)別
TextRank 算法是一種基于谷歌的 PageRank 算法的用于文本的基于圖的排序算法,通過把文本分割成若干組成單元(單詞、句子)并建立圖模型,利用投票機制對文本中的重要成分進行排序,常用于關(guān)鍵詞提取和文本摘要。和 LDA、HMM 等模型不同, TextRank 不需要事先對多篇文檔進行學習訓練, 因其簡潔有效而得到廣泛應(yīng)用。
我們知道,關(guān)鍵詞是能夠表達文檔中心內(nèi)容的詞語,常用于計算機系統(tǒng)標引論文內(nèi)容特征、信息檢索、系統(tǒng)匯集以供讀者檢閱。關(guān)鍵詞提取是文本挖掘領(lǐng)域的一個分支,是文本檢索、文檔比較、摘要生成、文檔分類和聚類等文本挖掘研究的基礎(chǔ)性工作。
一、PageRank算法
PageRank 算法通過計算網(wǎng)頁鏈接的數(shù)量和質(zhì)量來粗略估計網(wǎng)頁的重要性,算法創(chuàng)立之初即應(yīng)用在谷歌的搜索引擎中,對網(wǎng)頁進行排名。?PageRank 算法的核心思想如下:
- 鏈接數(shù)量:如果一個網(wǎng)頁被越多的其他網(wǎng)頁鏈接,說明這個網(wǎng)頁越重要,即該網(wǎng)頁的PR值(PageRank值)會相對較高;
- 鏈接質(zhì)量:如果一個網(wǎng)頁被一個越高權(quán)值的網(wǎng)頁鏈接,也能表明這個網(wǎng)頁越重要,即一個PR值很高的網(wǎng)頁鏈接到一個其他網(wǎng)頁,那么被鏈接到的網(wǎng)頁的PR值會相應(yīng)地因此而提高。
我們知道,PageRank (PR) 是一種用于計算網(wǎng)頁權(quán)重的算法。我們可以把所有的網(wǎng)頁看成一個大的有向圖。在此圖中,節(jié)點是網(wǎng)頁。如果網(wǎng)頁 A 有指向網(wǎng)頁 B 的鏈接,則它可以表示為從 A 到 B 的有向邊。構(gòu)建完整個圖后,我們可以通過以下公式為網(wǎng)頁分配權(quán)重:
其中,是網(wǎng)頁的重要性(PR 值),是阻尼系數(shù),一般為 0.85,是整個互聯(lián)網(wǎng)中所存在的有指向網(wǎng)頁的鏈接的網(wǎng)頁集合,是網(wǎng)頁中存在的指向所有外部網(wǎng)頁的鏈接的集合,該集合中元素的個數(shù)。
這是一個示例,可以更好地理解上面的符號。我們有一個圖表來表示網(wǎng)頁如何相互鏈接。每個節(jié)點代表一個網(wǎng)頁,箭頭代表邊。我們想得到網(wǎng)頁 ?的權(quán)重。
我們可以將上述函數(shù)中的求和部分重寫為更簡單的版本:
我們可以通過下面的函數(shù)得到網(wǎng)頁 ?的權(quán)重:
我們可以看到網(wǎng)頁 ?的權(quán)重取決于其入站頁面的權(quán)重。我們需要多次運行此迭代才能獲得最終權(quán)重。初始化時,每個網(wǎng)頁的重要性為 1。
二、TextRank算法
TextRank 算法是一種基于圖的用于關(guān)鍵詞抽取和文檔摘要的排序算法,由谷歌的網(wǎng)頁重要性排序算法 PageRank 算法改進而來,它利用一篇文檔內(nèi)部的詞語間的共現(xiàn)信息(語義)便可以抽取關(guān)鍵詞,它能夠從一個給定的文本中抽取出該文本的關(guān)鍵詞、關(guān)鍵詞組,并使用抽取式的自動文摘方法抽取出該文本的關(guān)鍵句。TextRank 算法的基本思想是將文檔看作一個詞的網(wǎng)絡(luò),該網(wǎng)絡(luò)中的鏈接表示詞與詞之間的語義關(guān)系。
TextRank 算法計算公式:
其中,?表示句子??的權(quán)重,右側(cè)的求和表示每個相鄰句子對本句子的貢前程度在單文檔中,我們可以粗略的認為所有句子都是相鄰的,無需像多文檔一樣進行多個窗的生成和抽取,僅需單一文檔窗口即可,?表示兩個句子的相似度? 代表上次選代出的句子? 的權(quán)重。?是阻尼系數(shù),一般為0.85。
TextRank算法主要包括:關(guān)鍵詞抽取、關(guān)鍵短語抽取、關(guān)鍵句抽取。
1. 關(guān)鍵詞抽?。╧eyword extraction)
關(guān)鍵詞抽取是指從文本中確定一些能夠描述文檔含義的術(shù)語的過程。對關(guān)鍵詞抽取而言,用于構(gòu)建頂點集的文本單元可以是句子中的一個或多個字;根據(jù)這些字之間的關(guān)系(比如:在一個框中同時出現(xiàn))構(gòu)建邊。根據(jù)任務(wù)的需要,可以使用語法過濾器(syntactic filters)對頂點集進行優(yōu)化。語法過濾器的主要作用是將某一類或者某幾類詞性的字過濾出來作為頂點集。
2. 關(guān)鍵短語抽?。╧eyphrase extration)
關(guān)鍵詞抽取結(jié)束后,我們可以得到的 N 個關(guān)鍵詞,在原始文本中相鄰的關(guān)鍵詞構(gòu)成關(guān)鍵短語。因此,從 get_keyphrases 函數(shù)的源碼中我們可以看到,它先調(diào)用 get_keywords 抽取關(guān)鍵詞,然后分析關(guān)鍵詞是否存在相鄰的情況,最后確定哪些是關(guān)鍵短語。
3. 關(guān)鍵句抽?。╯entence extraction)
句子抽取任務(wù)主要針對的是自動摘要這個場景,將每一個 sentence 作為一個頂點,根據(jù)兩個句子之間的內(nèi)容重復程度來計算他們之間的“相似度”,以這個相似度作為聯(lián)系,由于不同句子之間相似度大小不一致,在這個場景下構(gòu)建的是以相似度大小作為 edge 權(quán)重的有權(quán)圖。
三、TextRank算法實現(xiàn)
1. 基于Textrank4zh的TextRank算法實現(xiàn)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Project : 關(guān)鍵詞提取
@File : 基于Textrank4zh的TextRank算法實現(xiàn).py
@IDE : PyCharm
@Author : 源于花海
@Date : 2023/10/10 21:24
"""
from textrank4zh import TextRank4Keyword
def keywords_extraction(text):
tr4w = TextRank4Keyword()
tr4w.analyze(text, window=2, lower=True)
keywords = tr4w.get_keywords(6, word_min_len=2)
return keywords
if __name__ == "__main__":
text = "自然語言處理是一門涉及計算機科學、人工智能和語言學等多個領(lǐng)域的交叉學科。"
keywords = keywords_extraction(text)
print(keywords)
2. 基于jieba的TextRank算法實現(xiàn)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Project : 關(guān)鍵詞提取
@File : 基于jieba的TextRank算法實現(xiàn).py
@IDE : PyCharm
@Author : 源于花海
@Date : 2023/10/10 22:12
"""
import jieba
from jieba.analyse import textrank
# 定義待處理文本
text = "自然語言處理是一門涉及計算機科學、人工智能和語言學等多個領(lǐng)域的交叉學科。"
# 使用jieba庫的TextRank算法提取關(guān)鍵詞
keywords = textrank(text, topK=3)
print("關(guān)鍵詞提取結(jié)果:", keywords)
關(guān)鍵詞提取結(jié)果:
分詞結(jié)果: ['自然', '語言', '處理', '是', '一門', '涉及', '計算機', '科學', '、', '人工智能', '和', '語言學', '等', '多個', '領(lǐng)域', '的', '交叉', '學科', '。']
關(guān)鍵詞提取結(jié)果: ['計算機科學', '語言學', '人工智能']
3.?基于SnowNLP的TextRank算法實現(xiàn)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@Project : 關(guān)鍵詞提取
@File : 基于SnowNLP的TextRank算法實現(xiàn).py
@IDE : PyCharm
@Author : 源于花海
@Date : 2023/10/10 22:24
"""
from snownlp import SnowNLP
from snownlp import seg
# 定義待處理文本
text = "自然語言處理是一門涉及計算機科學、人工智能和語言學等多個領(lǐng)域的交叉學科。"
# 使用SnowNLP的分詞功能對文本進行分詞
words = SnowNLP(text).words
# 使用SnowNLP的TextRank算法提取關(guān)鍵詞
keywords = SnowNLP(text).keywords(3)
print("分詞結(jié)果:", words)
print("關(guān)鍵詞提取結(jié)果:", keywords)
輸出結(jié)果如下:文章來源:http://www.zghlxwxcb.cn/news/detail-850763.html
分詞結(jié)果: ['自然', '語言', '處理', '是', '一門', '涉及', '計算機', '科學', '、', '人工智能', '和', '語言學', '等', '多個', '領(lǐng)域', '的', '交叉', '學科', '。']
關(guān)鍵詞提取結(jié)果: ['語言', '處理', '自然']
可以看到,我們成功地使用 SnowNLP 的 TextRank 算法提取出了該文本中的關(guān)鍵詞:語言、處理、自然。文章來源地址http://www.zghlxwxcb.cn/news/detail-850763.html
四、PageRank算法與TextRank算法的區(qū)別
- PageRank 算法根據(jù)網(wǎng)頁之間的鏈接關(guān)系構(gòu)造網(wǎng)絡(luò),TextRank 算法根據(jù)詞之間的共現(xiàn)關(guān)系構(gòu)造網(wǎng)絡(luò);
- PageRank 算法構(gòu)造的網(wǎng)絡(luò)中的邊是有向無權(quán)邊,TextRank 算法構(gòu)造的網(wǎng)絡(luò)中的邊是無向有權(quán)邊。
到了這里,關(guān)于關(guān)鍵詞提取 | 基于Textrank算法的兩種關(guān)鍵詞提取的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!