KeyBert、TextRank等九种本文关键词提取算法(KPE)原理及代码实现
關(guān)鍵詞提取 (Keyphrase Extraction,KPE) 任務(wù)可以自動提取文檔中能夠概括核心內(nèi)容的短語,有利于下游信息檢索和 NLP 任務(wù)。當(dāng)前,由于對文檔進(jìn)行標(biāo)注需要耗費(fèi)大量資源且缺乏大規(guī)模的關(guān)鍵詞提取數(shù)據(jù)集,無監(jiān)督的關(guān)鍵詞提取在實(shí)際應(yīng)用中更為廣泛。無監(jiān)督關(guān)鍵詞抽取的state of the art(SOTA)方法是對候選詞和文檔標(biāo)識之間的相似度進(jìn)行排序來選擇關(guān)鍵詞。但由于候選詞和文檔序列長度之間的差異導(dǎo)致了關(guān)鍵短語候選和文檔的表征不匹配,導(dǎo)致以往的方法在長文檔上的性能不佳,無法充分利用預(yù)訓(xùn)練模型的上下文信息對短語構(gòu)建表征。下面主要介紹一些主流的KPE算法。
目錄
數(shù)據(jù)集
一、基于詞袋加權(quán)的TFIDF算法
1.1 代碼實(shí)現(xiàn)
1.2 優(yōu)缺點(diǎn)
二、考慮詞關(guān)聯(lián)網(wǎng)絡(luò)的TextRank算法?
2.1? 代碼實(shí)現(xiàn)
2.2??優(yōu)缺點(diǎn)
三、結(jié)合主題的LDA算法?
3.1 代碼實(shí)現(xiàn)
3.2?優(yōu)缺點(diǎn)
四、結(jié)合語義編碼的KeyBert算法?
4.1 代碼實(shí)現(xiàn)
4.2?優(yōu)缺點(diǎn)
五、Yake?
5.1 算法思想?
5.2?代碼實(shí)現(xiàn)
六、Rake
6.1 算法思想?
6.2?代碼實(shí)現(xiàn)
七、Summa?
八、Autophrasex
8.1 算法思想
8.2 代碼實(shí)現(xiàn)?
九、?MDERank
9.1 算法思想?
9.2? 實(shí)驗(yàn)結(jié)果
十、小結(jié)
十一、關(guān)鍵詞提取的評價指標(biāo)?
十二、下一步計(jì)劃
數(shù)據(jù)集
數(shù)據(jù)集來自知網(wǎng)和維普網(wǎng),知網(wǎng)、維普網(wǎng)等數(shù)據(jù)集的關(guān)鍵詞提取可以作為知識發(fā)現(xiàn)的一種途徑,由于當(dāng)前關(guān)鍵詞提取的各類算法各有優(yōu)劣,基于統(tǒng)計(jì)學(xué)的算法依賴切分詞效果且缺失上下文語義信息,基于預(yù)訓(xùn)練模型的算法偏向于獲取長度較長的短語,且在英文數(shù)據(jù)集效果好于中文數(shù)據(jù)集,可以嘗試結(jié)合各類算法結(jié)果互補(bǔ),在缺乏專家知識情況下得到較優(yōu)的新詞發(fā)現(xiàn)結(jié)果,然后獲得細(xì)粒度的切分詞效果,然后基于詞信息熵約束構(gòu)建整個概念權(quán)重網(wǎng)絡(luò)。
?
一、基于詞袋加權(quán)的TFIDF算法
TF-IDF是一種統(tǒng)計(jì)方法,用以評估一個字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度,字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在語料庫中出現(xiàn)的頻率成反比下降,也就是說一個詞語在一篇文章中出現(xiàn)次數(shù)越多, 同時在所有文檔中出現(xiàn)次數(shù)越少, 越能夠代表該文章。
如果詞w在一篇文檔d中出現(xiàn)的頻率高,并且在其他文檔中很少出現(xiàn),則認(rèn)為詞w具有很好的區(qū)分能力,適合用來把文章d和其他文章區(qū)分開來。
其中:?
1.1 代碼實(shí)現(xiàn)
import jieba.posseg import jieba.analyse as analyse text = '''注重?cái)?shù)據(jù)整合,……風(fēng)險防控平臺。''' jieba.analyse.extract_tags(text, topK=20, withWeight=True, allowPOS=('ns', 'n', 'vn', 'v','nr', 'nt')) [('人工智能', 1.3136147771513889),('學(xué)習(xí)', 0.40118887617430554),('教育', 0.3154662543388889),('領(lǐng)域', 0.30068308568944446),('智能', 0.29833992884875),('應(yīng)用', 0.23755056059833335),('數(shù)據(jù)挖掘', 0.18343792321388888),('報告', 0.1447372240438889),('美國白宮', 0.14254293739166665),('測評', 0.1342579326025),('戰(zhàn)略規(guī)劃', 0.13309985470055555),('關(guān)鍵技術(shù)', 0.12556757288347223),('迫切需要', 0.12473189897430556),('導(dǎo)師', 0.12365924136402778),('題為', 0.11886588055569443),('方面', 0.11841974111416666),('助手', 0.11316812518263888),('伙伴', 0.10634042710152777),('引領(lǐng)', 0.10570780668152778),('情感', 0.10347510041430556)]1.2 優(yōu)缺點(diǎn)
TF-IDF算法的優(yōu)點(diǎn)是簡單快速,結(jié)果比較符合實(shí)際情況。缺點(diǎn)是,單純以"詞頻"衡量一個詞的重要性,不夠全面,有時重要的詞可能出現(xiàn)次數(shù)并不多。
此外,這種算法無法體現(xiàn)詞的位置信息,出現(xiàn)位置靠前的詞與出現(xiàn)位置靠后的詞,都被視為重要性相同,IDF的簡單結(jié)構(gòu)并不能有效地反映單詞的重要程度和特征詞的分布情況,使其無法很好地完成對權(quán)值調(diào)整。
二、考慮詞關(guān)聯(lián)網(wǎng)絡(luò)的TextRank算法?
上面說到,TF-IDF基于詞袋模型(Bag-of-Words),把文章表示成詞匯的集合,由于集合中詞匯元素之間的順序位置與集合內(nèi)容無關(guān),所以TF-IDF指標(biāo)不能有效反映文章內(nèi)部的詞匯組織結(jié)構(gòu)。
TextRank由Mihalcea與Tarau提出,通過詞之間的相鄰關(guān)系構(gòu)建網(wǎng)絡(luò),然后用PageRank迭代計(jì)算每個節(jié)點(diǎn)的rank值,排序rank值即可得到關(guān)鍵詞。
??
TextRank是一種基于隨機(jī)游走的關(guān)鍵詞提取算法,考慮到不同詞對可能有不同的共現(xiàn)(co-occurrence),TextRank將共現(xiàn)作為無向圖邊的權(quán)值。
其中,TextRank的迭代計(jì)算公式如下:
其實(shí)現(xiàn)包括以下步驟:
(1)把給定的文本T按照完整句子進(jìn)行分割;
(2)對于每個句子,進(jìn)行分詞和詞性標(biāo)注處理,并過濾掉停用詞,只保留指定詞性的單詞,如名詞、動詞、形容詞,即,其中 ti,j 是保留后的候選關(guān)鍵詞;
(3)構(gòu)建候選關(guān)鍵詞圖G = (V,E),其中V為節(jié)點(diǎn)集,由2)生成的候選關(guān)鍵詞組成,然后采用共現(xiàn)關(guān)系(co-occurrence)構(gòu)造任兩點(diǎn)之間的邊,兩個節(jié)點(diǎn)之間存在邊僅當(dāng)它們對應(yīng)的詞匯在長度為K的窗口中共現(xiàn),K表示窗口大小,即最多共現(xiàn)K個單詞;
(4)根據(jù)上面公式,迭代傳播各節(jié)點(diǎn)的權(quán)重,直至收斂;
(5)對節(jié)點(diǎn)權(quán)重進(jìn)行倒序排序,從而得到最重要的T個單詞,作為候選關(guān)鍵詞;
(6)由5得到最重要的T個單詞,在原始文本中進(jìn)行標(biāo)記,若形成相鄰詞組,則組合成多詞關(guān)鍵詞;?
2.1? 代碼實(shí)現(xiàn)
text = '''注重?cái)?shù)據(jù)整合,……風(fēng)險防控平臺。''' jieba.analyse.textrank(text, topK=20, withWeight=True, allowPOS=('ns', 'n', 'vn', 'v','nr', 'nt')) [('人工智能', 1.0),('學(xué)習(xí)', 0.6800568212134035),('智能', 0.4389534533321184),('教育', 0.43548509800254215),('領(lǐng)域', 0.40052664326981924),('應(yīng)用', 0.2700569709749324),('報告', 0.2670045024866088),('方面', 0.23187049758189643),('美國白宮', 0.212792514544243),('表示', 0.19660053148836146),('技術(shù)', 0.19208881567499897),('機(jī)器', 0.1866120173833769),('伙伴', 0.18077573362593893),('科技', 0.17403990709678335),('政策', 0.17351519161476764),('辦公室', 0.1729439493752458),('知識', 0.16756939766301235),('體現(xiàn)', 0.1648925203267789),('計(jì)算', 0.16287121059070878),('關(guān)鍵技術(shù)', 0.1626651496174857)]2.2??優(yōu)缺點(diǎn)
TextRank與TFIDF均嚴(yán)重依賴于分詞結(jié)果—如果某詞在分詞時被切分成了兩個詞,那么在做關(guān)鍵詞提取時無法將兩個詞黏合在一起
不過,TextRank雖然考慮到了詞之間的關(guān)系,但是仍然傾向于將頻繁詞作為關(guān)鍵詞。
三、結(jié)合主題的LDA算法?
LDA(Latent Dirichlet Allocation)是一種文檔主題生成模型,也稱為一個三層貝葉斯概率模型,包含詞、主題和文檔三層結(jié)構(gòu)。
所謂生成模型,就是說,我們認(rèn)為一篇文章的每個詞都是通過“以一定概率選擇了某個主題,并從這個主題中以一定概率選擇某個詞語”這樣一個過程得到。文檔到主題服從多項(xiàng)式分布,主題到詞服從多項(xiàng)式分布。
因此計(jì)算詞的分布和文檔的分布的相似度,取相似度最高的幾個詞作為關(guān)鍵詞。
3.1 代碼實(shí)現(xiàn)
下面調(diào)用百度預(yù)訓(xùn)練主題模型famila為例,預(yù)先訓(xùn)練2000個主題,得到給定文檔的關(guān)鍵詞集合。?
pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple import paddlehub as hub lda_news = hub.Module(name="lda_news") lda_news.cal_doc_keywords_similarity(text) [{'word': '領(lǐng)域', 'similarity': 0.06851161624447644},{'word': '學(xué)習(xí)', 'similarity': 0.06485399440791326},{'word': '教育', 'similarity': 0.0495215784697363},{'word': '人工智能', 'similarity': 0.04286504274500501},{'word': '報告', 'similarity': 0.030329787603339084},{'word': '智能', 'similarity': 0.027729840172003375},{'word': '發(fā)展', 'similarity': 0.02362142605550909},{'word': '技術(shù)', 'similarity': 0.014803972123798883},{'word': '數(shù)據(jù)', 'similarity': 0.01465273360067766},{'word': '方法', 'similarity': 0.012348153295121723}]3.2?優(yōu)缺點(diǎn)
LDA通過主題建模,在一定程度上考慮了文檔與關(guān)鍵詞在主題上的一致性,但這需要找到合適的主題數(shù)目作為超參數(shù),具體的效果受其影響較大。
四、結(jié)合語義編碼的KeyBert算法?
KeyBERT(Sharma, P., & Li, Y. (2019). Self-Supervised Contextual Keyword and Keyphrase Retrieval with Self-Labelling),提出了一個利用bert快速提取關(guān)鍵詞的方法。
原理十分簡單:首先使用 BERT 提取文檔嵌入以獲得文檔級向量表示。隨后,為N-gram 詞/短語提取詞向量,然后,我們使用余弦相似度來找到與文檔最相似的單詞/短語。最后可以將最相似的詞識別為最能描述整個文檔的詞。
其中,有幾個參數(shù):
keyphrase_ngram_range:?默認(rèn)(1, 1),表示單個詞, 如"抗美援朝", "紀(jì)念日"是孤立的兩個詞;(2, 2)表示考慮詞組, 如出現(xiàn)有意義的詞組 "抗美援朝 紀(jì)念日;(1, 2)表示同時考慮以上兩者情況;
top_n:顯示前n個關(guān)鍵詞,默認(rèn)5;
use_maxsum:?默認(rèn)False;是否使用Max Sum Similarity作為關(guān)鍵詞提取標(biāo)準(zhǔn);
use_mmr:?默認(rèn)False;是否使用Maximal Marginal Relevance (MMR) 作為關(guān)鍵詞提取標(biāo)準(zhǔn);
diversity:?如果use_mmr=True,可以設(shè)置該參數(shù)。參數(shù)取值范圍從0到1;
4.1 代碼實(shí)現(xiàn)
pip install keybert pip install zh_core_web_sm-2.3.1.tar.gz pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ spacy==2.3.1 import os from keybert import KeyBERTkw_model = KeyBERT(model='paraphrase-MiniLM-L6-v2')print("naive ...") keywords = kw_model.extract_keywords(text) print(keywords)print("\nkeyphrase_ngram_range ...") keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, 2), stop_words=None) print(keywords)print("\nhighlight ...") keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, 2), highlight=None) print(keywords)# 為了使結(jié)果多樣化,我們將 2 x top_n 與文檔最相似的詞/短語。 # 然后,我們從 2 x top_n 單詞中取出所有 top_n 組合,并通過余弦相似度提取彼此最不相似的組合。 print("\nuse_maxsum ...") keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(1, 3), stop_words=None,use_maxsum=True, nr_candidates=20, top_n=5) print(keywords)# 為了使結(jié)果多樣化,我們可以使用最大邊界相關(guān)算法(MMR) # 來創(chuàng)建同樣基于余弦相似度的關(guān)鍵字/關(guān)鍵短語。 具有高度多樣性的結(jié)果: print("\nhight diversity ...") keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(3, 3), stop_words=None,use_mmr=True, diversity=0.7) print(keywords)# 低多樣性的結(jié)果 print("\nlow diversity ...") keywords = kw_model.extract_keywords(text, keyphrase_ngram_range=(3, 3), stop_words=None,use_mmr=True, diversity=0.2) print(keywords) naive ... [('推動實(shí)施智能教育的措施不能僅從高等學(xué)校人才培養(yǎng)和人工智能發(fā)展的必要性角度思考', 0.8883), ('人工智能及其分支技術(shù)對美國新聞業(yè)的滲透及影響日益深入', 0.8877), ('就人工智能熱潮下中國經(jīng)濟(jì)增長和就業(yè)的演進(jìn)趨勢進(jìn)行展望', 0.8823), ('探討了人工智能技術(shù)在美國新聞業(yè)應(yīng)用的現(xiàn)實(shí)狀況', 0.8779), ('并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而', 0.8767)]keyphrase_ngram_range ... [('在邁向人工智能時代的關(guān)鍵時期 聯(lián)合國教科文組織2019年5月在中國北京舉辦了首屆國際人工智能與教育大會', 0.9135), ('人工智能及其分支技術(shù)對美國新聞業(yè)的滲透及影響日益深入 本文探討了人工智能技術(shù)在美國新聞業(yè)的研發(fā)應(yīng)用格局', 0.9134), ('并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而 為人工智能的生成成果提供一定程度的著作權(quán)法保護(hù)具有必要性鑒于人工智能生成成果的保護(hù)價值與鄰接權(quán)制度的價值相契合', 0.9052), ('就人工智能熱潮下中國經(jīng)濟(jì)增長和就業(yè)的演進(jìn)趨勢進(jìn)行展望 并給出應(yīng)對思路和建議', 0.9013), ('教育過程和因材施教實(shí)踐所帶來的深刻變革 縱觀國內(nèi)外人工智能人才戰(zhàn)略規(guī)劃', 0.8988)]highlight ... [('在邁向人工智能時代的關(guān)鍵時期 聯(lián)合國教科文組織2019年5月在中國北京舉辦了首屆國際人工智能與教育大會', 0.9135), ('人工智能及其分支技術(shù)對美國新聞業(yè)的滲透及影響日益深入 本文探討了人工智能技術(shù)在美國新聞業(yè)的研發(fā)應(yīng)用格局', 0.9134), ('并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而 為人工智能的生成成果提供一定程度的著作權(quán)法保護(hù)具有必要性鑒于人工智能生成成果的保護(hù)價值與鄰接權(quán)制度的價值相契合', 0.9052), ('就人工智能熱潮下中國經(jīng)濟(jì)增長和就業(yè)的演進(jìn)趨勢進(jìn)行展望 并給出應(yīng)對思路和建議', 0.9012), ('教育過程和因材施教實(shí)踐所帶來的深刻變革 縱觀國內(nèi)外人工智能人才戰(zhàn)略規(guī)劃', 0.8988)]use_maxsum ... [('人工智能的生成成果是人工智能程序在人類參與度極低的情況下基于數(shù)據(jù)和算法通過自主學(xué)習(xí)和建模所自動生成的內(nèi)容 并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而 為人工智能的生成成果提供一定程度的著作權(quán)法保護(hù)具有必要性鑒于人工智能生成成果的保護(hù)價值與鄰接權(quán)制度的價值相契合', 0.9074), ('應(yīng)用與研發(fā) 美國白宮科技政策辦公室于2016年10月發(fā)布了題為 為人工智能的未來做好準(zhǔn)備', 0.9086), ('并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而 為人工智能的生成成果提供一定程度的著作權(quán)法保護(hù)具有必要性鑒于人工智能生成成果的保護(hù)價值與鄰接權(quán)制度的價值相契合 可將人工智能生成成果作為廣義上的鄰接權(quán)之客體', 0.9119), ('近年來 許多國家將人工智能技術(shù)發(fā)展列為國家戰(zhàn)略規(guī)劃 人工智能技術(shù)的快速發(fā)展將會給圖書館帶來巨大的影響', 0.9119), ('在邁向人工智能時代的關(guān)鍵時期 聯(lián)合國教科文組織2019年5月在中國北京舉辦了首屆國際人工智能與教育大會 并形成成果文件', 0.9133)]hight diversity ... [('最后對人工智能在電力系統(tǒng)及綜合能源系統(tǒng)中應(yīng)用所面臨的挑戰(zhàn)進(jìn)行了分析和展望 2016年10月 美國國家科學(xué)與技術(shù)委員會相繼發(fā)布了兩份關(guān)于人工智能領(lǐng)域的美國國家戰(zhàn)略報告', 0.9437), ('educational artificial intelligence', 0.0517), ('development strategic plan', 0.1816), ('數(shù)字計(jì)算機(jī) digital computer', 0.3279), ('preparing for the', 0.1783)]low diversity ... [('最后對人工智能在電力系統(tǒng)及綜合能源系統(tǒng)中應(yīng)用所面臨的挑戰(zhàn)進(jìn)行了分析和展望 2016年10月 美國國家科學(xué)與技術(shù)委員會相繼發(fā)布了兩份關(guān)于人工智能領(lǐng)域的美國國家戰(zhàn)略報告', 0.9437), ('人工智能與教育相互賦能成為時代命題 在邁向人工智能時代的關(guān)鍵時期 聯(lián)合國教科文組織2019年5月在中國北京舉辦了首屆國際人工智能與教育大會', 0.9288), ('并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而 為人工智能的生成成果提供一定程度的著作權(quán)法保護(hù)具有必要性鑒于人工智能生成成果的保護(hù)價值與鄰接權(quán)制度的價值相契合 可將人工智能生成成果作為廣義上的鄰接權(quán)之客體', 0.9119), ('對我國的現(xiàn)代化建設(shè)將具有重大的現(xiàn)實(shí)意義和深遠(yuǎn)的戰(zhàn)略意義 人工智能的生成成果是人工智能程序在人類參與度極低的情況下基于數(shù)據(jù)和算法通過自主學(xué)習(xí)和建模所自動生成的內(nèi)容 并非人類以人工智能為工具進(jìn)行的個性化表達(dá)如果認(rèn)定其為作品會違背傳統(tǒng)的著作權(quán)法理論然而', 0.9035), ('從為數(shù)不多的公開報道的人工智能專利訴訟案件中 我們已經(jīng)感受到了人工智能領(lǐng)域知識產(chǎn)權(quán)戰(zhàn)爭的硝煙 2017年', 0.9143)] import keybert import jieba from keybert import KeyBERT model = KeyBERT('bert-base-chinese') doc = " ".join(jieba.cut(text)) keywords = model.extract_keywords(doc, keyphrase_ngram_range=(1,1), top_n=20) keywords [('聯(lián)合國教科文組織', 0.7681),('國家科學(xué)技術(shù)委員會', 0.7416),('北京大學(xué)法學(xué)院', 0.7122),('中南財(cái)經(jīng)政法大學(xué)', 0.6801),('人工智能', 0.6776),('計(jì)算機(jī)科學(xué)', 0.6726),('華東師范大學(xué)', 0.668),('就業(yè)機(jī)會', 0.6372),('信息技術(shù)', 0.6331),('課程體系', 0.6325),('計(jì)算機(jī)輔助', 0.63),('著作權(quán)法', 0.6291),('保障機(jī)制', 0.6259),('深入開展', 0.6253),('機(jī)器人學(xué)', 0.6216),('醫(yī)護(hù)人員', 0.6204),('個人信息', 0.6202),('信息科學(xué)', 0.6162),('各行各業(yè)', 0.616),('基因工程', 0.611)] import keybert import jieba from keybert import KeyBERT model = KeyBERT('bert-base-chinese') # doc = " ".join(jieba.cut(text)) keywords = model.extract_keywords(text, keyphrase_ngram_range=(1,1), top_n=20) keywords [('推動實(shí)施智能教育的措施不能僅從高等學(xué)校人才培養(yǎng)和人工智能發(fā)展的必要性角度思考', 0.9416),('為人工智能的生成成果提供一定程度的著作權(quán)法保護(hù)具有必要性鑒于人工智能生成成果的保護(hù)價值與鄰接權(quán)制度的價值相契合', 0.9397),('探討了現(xiàn)階段影響基于人工智能的數(shù)據(jù)分析技術(shù)在狀態(tài)檢修領(lǐng)域應(yīng)用效果的關(guān)鍵問題', 0.9368),('我國現(xiàn)行刑法體系對于人工智能時代有關(guān)主體刑事責(zé)任的追究具有一定的局限性和滯后性', 0.9353),('對這些深層問題的思考和回答將是決定人工智能在教育上乃至在未來社會能夠走多遠(yuǎn)的關(guān)鍵', 0.9346),('從教育的本質(zhì)特征和人工智能的研究領(lǐng)域來分析人工智能與教育的關(guān)系', 0.9322),('人工智能作品的著作權(quán)歸屬以及人工智能背景下的壟斷與不正當(dāng)競爭等問題', 0.9303),('人工智能技術(shù)的快速發(fā)展將對國際關(guān)系領(lǐng)域產(chǎn)生深遠(yuǎn)的影響', 0.9282),('人工智能與信息推薦是近年來信息科學(xué)領(lǐng)域最受關(guān)注的兩個前沿課題', 0.9261),('人工智能生成物應(yīng)當(dāng)作為人利用人工智能創(chuàng)作的作品并按照現(xiàn)行著作權(quán)法關(guān)于作品的構(gòu)成要件判斷其獨(dú)創(chuàng)性', 0.9258),('另一方面知識產(chǎn)權(quán)保護(hù)是建設(shè)創(chuàng)新型國家所面臨的最重要的問題之一', 0.9254),('2016年alphago的異軍突起引起了全社會對人工智能的廣泛關(guān)注', 0.9251),('必然會導(dǎo)致以激勵人類知識創(chuàng)新為核心的著作權(quán)制度在理論上難以自洽', 0.9246),('理論界與實(shí)踐界應(yīng)更加密切關(guān)注人工智能的后續(xù)發(fā)展', 0.9236),('人工智能的生成成果是人工智能程序在人類參與度極低的情況下基于數(shù)據(jù)和算法通過自主學(xué)習(xí)和建模所自動生成的內(nèi)容', 0.9233),('人工智能教育應(yīng)用現(xiàn)狀與發(fā)展趨勢研究有助于推動技術(shù)與教育的深度融合發(fā)展', 0.9229),('而人工智能與多種技術(shù)形成的新型交叉技術(shù)已經(jīng)廣泛地應(yīng)用于移動互聯(lián)網(wǎng)', 0.9226),('文章將從激勵論和市場競爭的角度對是否應(yīng)授予人工智能創(chuàng)作物以版權(quán)保護(hù)的不同政策選擇的利弊進(jìn)行分析', 0.9226),('深度學(xué)習(xí)算法的突破使人工智能技術(shù)進(jìn)入了新一輪的高速發(fā)展周期', 0.9219),('人工智能的發(fā)展已經(jīng)使得文學(xué)藝術(shù)領(lǐng)域作品的創(chuàng)作不再為人類所壟斷', 0.9212)]4.2?優(yōu)缺點(diǎn)
Keybert基于一種假設(shè),關(guān)鍵詞與文檔在語義表示上是一致的,利用bert的編碼能力,能夠得到較好的結(jié)果。
但缺點(diǎn)很明顯:
首先,不同的語義編碼模型會產(chǎn)生不同的結(jié)果,這個比較重要。
此外,由于bert只能接受限定長度的文本,例如512個字,這個使得我們在處理長文本時,需要進(jìn)一步加入摘要提取等預(yù)處理措施,這無疑會帶來精度損失。
五、Yake?
5.1 算法思想?
它是一種輕量級、無監(jiān)督的自動關(guān)鍵詞提取方法,它依賴于從單個文檔中提取的統(tǒng)計(jì)文本特征來識別文本中最相關(guān)的關(guān)鍵詞。該方法不需要針對特定的文檔集進(jìn)行訓(xùn)練,也不依賴于字典、文本大小、領(lǐng)域或語言。Yake 定義了一組五個特征來捕捉關(guān)鍵詞特征,這些特征被啟發(fā)式地組合起來,為每個關(guān)鍵詞分配一個分?jǐn)?shù)。分?jǐn)?shù)越低,關(guān)鍵字越重要。你可以閱讀原始論文[2],以及yake 的Python 包[3]關(guān)于它的信息。
特征提取主要考慮五個因素(去除停用詞后)
大寫term
(Casing)
大寫字母的term(除了每句話的開頭單詞)的重要程度比那些小寫字母的term重要程度要大。?
其中,表示該詞的大寫次數(shù),?表示該詞的縮寫次數(shù)。
詞的位置
(Word Position)
文本越開頭的部分句子的重要程度比后面的句子重要程度要大。
其中表示包含該詞的所有句子在文檔中的位置中位數(shù)。
詞頻
(Term Frequency)
一個詞在文本中出現(xiàn)的頻率越大,相對來說越重要,同時為了避免長文本詞頻越高的問題,會進(jìn)行歸一化操作。
其中,MeanTF是整個詞的詞頻均值,??是標(biāo)準(zhǔn)差。
上下文關(guān)系
(Term Related to Context)
一個詞與越多不相同的詞共現(xiàn),該詞的重要程度越低。
其中??表示窗口size為??從左邊滑動, DR表示從右邊滑動。?表示出現(xiàn)在固定窗口大小為 w下,出現(xiàn)不同的詞的個數(shù)。?表示所有詞頻的最大值。
詞在句子中出現(xiàn)的頻率
(Term Different Sentence):一個詞在越多句子中出現(xiàn),相對更重要
其中 SF(t) 是包含詞t tt的句子頻率,?表示所有句子數(shù)量。
最后計(jì)算每個term的分值公式如下:
S(t)表示的是單詞 t 的分值情況,其中 s(t) 分值越小,表示的單詞 t 越重要。
5.2?代碼實(shí)現(xiàn)
pip install git+https://github.com/LIAAD/yake首先從 Yake 實(shí)例中調(diào)用?KeywordExtractor?構(gòu)造函數(shù),它接受多個參數(shù),其中重要的是:要檢索的單詞數(shù)top,此處設(shè)置為 10。參數(shù)?lan:此處使用默認(rèn)值en。可以傳遞停用詞列表給參數(shù)?stopwords。然后將文本傳遞給?extract_keywords?函數(shù),該函數(shù)將返回一個元組列表?(keyword: score)。關(guān)鍵字的長度范圍為 1 到 3。?
import yake title = '人工智能' full_text = title +", "+ text full_text = " ".join(jieba.cut(full_text)) kw_extractor = yake.KeywordExtractor(top=10, n=1,stopwords=None) keywords = kw_extractor.extract_keywords(full_text) for kw, v in keywords:print("Keyphrase: ",kw, ": score", v) Keyphrase: 人工智能 : score 1.2726925778426499e-05 Keyphrase: 機(jī)器人 : score 0.0003960331506800356 Keyphrase: 圖書館 : score 0.0017620405819233243 Keyphrase: STEM : score 0.0018281187867754825 Keyphrase: 刑事責(zé)任 : score 0.002066516885053515 Keyphrase: 個性化 : score 0.002356090299070339 Keyphrase: 智能化 : score 0.0033658602388738313 Keyphrase: 人才培養(yǎng) : score 0.003954639032169166 Keyphrase: 資源管理 : score 0.004255070574530873 Keyphrase: 著作權(quán)法 : score 0.004728008509892105 Keyphrase: 生成物 : score 0.005241329661570213 Keyphrase: 使用者 : score 0.005845555794886875 Keyphrase: 互聯(lián)網(wǎng) : score 0.005889898907848213 Keyphrase: 知識產(chǎn)權(quán) : score 0.00589953336628331 Keyphrase: 職業(yè)培訓(xùn) : score 0.006608544692913609 Keyphrase: 進(jìn)一步 : score 0.0066618802973781935 Keyphrase: 程序設(shè)計(jì) : score 0.007409809042653846 Keyphrase: 自然人 : score 0.007485194481383966 Keyphrase: 控制能力 : score 0.007494260825899035 Keyphrase: 信息技術(shù) : score 0.007530569139208396六、Rake
6.1 算法思想?
Rake 是 Rapid Automatic Keyword Extraction 的縮寫,它是一種從單個文檔中提取關(guān)鍵字的方法。實(shí)際上提取的是關(guān)鍵的短語(phrase),并且傾向于較長的短語,在英文中,關(guān)鍵詞通常包括多個單詞,但很少包含標(biāo)點(diǎn)符號和停用詞,例如and,the,of等,以及其他不包含語義信息的單詞。
Rake算法首先使用標(biāo)點(diǎn)符號(如半角的句號、問號、感嘆號、逗號等)將一篇文檔分成若干分句,然后對于每一個分句,使用停用詞作為分隔符將分句分為若干短語,這些短語作為最終提取出的關(guān)鍵詞的候選詞。
每個短語可以再通過空格分為若干個單詞,可以通過給每個單詞賦予一個得分,通過累加得到每個短語的得分。Rake 通過分析單詞的出現(xiàn)及其與文本中其他單詞的兼容性(共現(xiàn))來識別文本中的關(guān)鍵短語。最終定義的公式是:
即單詞??的得分是該單詞的度(是一個網(wǎng)絡(luò)中的概念,每與一個單詞共現(xiàn)在一個短語中,度就加1,考慮該單詞本身)除以該單詞的詞頻(該單詞在該文檔中出現(xiàn)的總次數(shù))。
然后對于每個候選的關(guān)鍵短語,將其中每個單詞的得分累加,并進(jìn)行排序,RAKE將候選短語總數(shù)的前三分之一的認(rèn)為是抽取出的關(guān)鍵詞。
6.2?代碼實(shí)現(xiàn)
不調(diào)用包的情況下
import jieba import jieba.posseg as pseg import operator import json from collections import Counter# Data structure for holding data class Word():def __init__(self, char, freq = 0, deg = 0):self.freq = freqself.deg = degself.char = chardef returnScore(self):return self.deg/self.freqdef updateOccur(self, phraseLength):self.freq += 1self.deg += phraseLengthdef getChar(self):return self.chardef updateFreq(self):self.freq += 1def getFreq(self):return self.freq# Check if contains num def notNumStr(instr):for item in instr:if '\u0041' <= item <= '\u005a' or ('\u0061' <= item <='\u007a') or item.isdigit():return Falsereturn True# Read Target Case if Json def readSingleTestCases(testFile):with open(testFile) as json_data:try:testData = json.load(json_data)except:# This try block deals with incorrect json format that has ' instead of "data = json_data.read().replace("'",'"')try:testData = json.loads(data)# This try block deals with empty transcript fileexcept:return ""returnString = ""for item in testData:try:returnString += item['text']except:returnString += item['statement']return returnStringdef run(rawText):# Construct Stopword LibswLibList = [line.rstrip('\n') for line in open(r"../../../stopword/stopwords.txt",'r',encoding='utf-8')]# Construct Phrase Deliminator LibconjLibList = [line.rstrip('\n') for line in open(r"wiki_quality.txt",'r',encoding='utf-8')]# Cut TextrawtextList = pseg.cut(rawText)# Construct List of Phrases and Preliminary textListtextList = []listofSingleWord = dict()lastWord = ''poSPrty = ['m','x','uj','ul','mq','u','v','f']meaningfulCount = 0checklist = []for eachWord, flag in rawtextList:checklist.append([eachWord,flag])if eachWord in conjLibList or not notNumStr(eachWord) or eachWord in swLibList or flag in poSPrty or eachWord == '\n':if lastWord != '|':textList.append("|")lastWord = "|"elif eachWord not in swLibList and eachWord != '\n':textList.append(eachWord)meaningfulCount += 1if eachWord not in listofSingleWord:listofSingleWord[eachWord] = Word(eachWord)lastWord = ''# Construct List of list that has phrases as wrdsnewList = []tempList = []for everyWord in textList:if everyWord != '|':tempList.append(everyWord)else:newList.append(tempList)tempList = []tempStr = ''for everyWord in textList:if everyWord != '|':tempStr += everyWord + '|'else:if tempStr[:-1] not in listofSingleWord:listofSingleWord[tempStr[:-1]] = Word(tempStr[:-1])tempStr = ''# Update the entire Listfor everyPhrase in newList:res = ''for everyWord in everyPhrase:listofSingleWord[everyWord].updateOccur(len(everyPhrase))res += everyWord + '|'phraseKey = res[:-1]if phraseKey not in listofSingleWord:listofSingleWord[phraseKey] = Word(phraseKey)else:listofSingleWord[phraseKey].updateFreq()# Get score for entire SetoutputList = dict()for everyPhrase in newList:if len(everyPhrase) > 5:continuescore = 0phraseString = ''outStr = ''for everyWord in everyPhrase:score += listofSingleWord[everyWord].returnScore()phraseString += everyWord + '|'outStr += everyWordphraseKey = phraseString[:-1]freq = listofSingleWord[phraseKey].getFreq()if freq / meaningfulCount < 0.01 and freq < 3 :continueoutputList[outStr] = scoresorted_list = sorted(outputList.items(), key = operator.itemgetter(1), reverse = True)return sorted_list[:50]if __name__ == '__main__':with open(r'Ai_zhaiyaohebing.txt','r') as fp:text = ''for i in range(100):text += fp.readline() # print(text)result = run(text)print(result) [('人力資源管理', 4.75), ('金融風(fēng)險管理領(lǐng)域', 4.58183990442055), ('新工科', 4.203030303030303), ('混合式教學(xué)', 3.9035087719298245), ('發(fā)展歷程', 3.59047619047619), ('嚴(yán)重危害社會', 3.4918032786885247), ('創(chuàng)作物', 3.4154135338345863), ('刑事風(fēng)險', 3.404891304347826), ('產(chǎn)業(yè)發(fā)展', 3.1469979296066253), ('快速發(fā)展', 2.8154761904761907), ('深度融合', 2.7992424242424243), ('智能系統(tǒng)', 2.764596273291925), ('人類社會', 2.7095452141723957), ('社會風(fēng)險', 2.709194583036351), ('現(xiàn)行著作權(quán)法', 2.6240601503759398), ('革命', 2.5555555555555554), ('發(fā)展方向', 2.5434173669467786), ('監(jiān)督義務(wù)', 2.5214285714285714), ('人類智能', 2.339481065918654), ('研究現(xiàn)狀', 2.3337662337662337), ('發(fā)展現(xiàn)狀', 2.2813852813852815), ('新技術(shù)', 2.2503987240829346), ('人力', 2.25), ('發(fā)展建議', 2.1904761904761907), ('刑事', 2.1875), ('科技', 2.1818181818181817), ('技術(shù)發(fā)展', 2.137844611528822), ('醫(yī)療', 2.125), ('辦案', 2.125), ('主導(dǎo)', 2.111111111111111), ('新聞', 2.111111111111111), ('發(fā)展過程', 2.0967261904761907), ('輔助', 2.090909090909091), ('新時代', 2.0377241805813235), ('新挑戰(zhàn)', 2.005733005733006), ('素養(yǎng)', 2.0), ('新一輪', 2.0), ('越來越', 2.0), ('金融風(fēng)險', 2.0), ('智能作品', 1.9896636587366694), ('產(chǎn)業(yè)', 1.9565217391304348), ('人才', 1.9333333333333333), ('水平', 1.9), ('協(xié)同', 1.8571428571428572), ('智能機(jī)器', 1.805072463768116), ('平衡', 1.8), ('全球', 1.8), ('強(qiáng)智能', 1.7884057971014493), ('狀態(tài)', 1.7692307692307692), ('學(xué)科', 1.75)]調(diào)用包的情況下?
pip install multi_rake from multi_rake import Rake rake = Rake() keywords = rake.apply(text) print(keywords[:20]) [('以應(yīng)對人工智能的快速發(fā)展。 人工智能是人類社會的偉大發(fā)明', 4.0), ('適時進(jìn)行機(jī)器人專門立法。 近期國內(nèi)召開的人工智能教育論壇', 4.0), ('的人才培養(yǎng)體系。 對人工智能創(chuàng)作物的可版權(quán)性判斷', 4.0), ('以鼓勵投資人并促進(jìn)人工智能技術(shù)的長足發(fā)展。 近幾年', 4.0), ('未來教育將是教師與人工智能教師協(xié)同共存的時代。 以大數(shù)據(jù)、云計(jì)算、移動互聯(lián)網(wǎng)等技術(shù)為代表的信息技術(shù)生態(tài)系統(tǒng)的形成和發(fā)展', 4.0), ('具有一定借鑒意義。 如果人工智能生成的內(nèi)容在表現(xiàn)形式上不符合作品的構(gòu)成要件', 4.0), ('并不意味著著作權(quán)法因人工智能而改變。 人工智能時代的到來必將帶來風(fēng)險', 4.0), ('教育中的人工智能將走向人機(jī)協(xié)同的增強(qiáng)智能。 美國總統(tǒng)行政辦公室聯(lián)合美國國家科學(xué)技術(shù)委員會', 4.0), ('以期為相關(guān)研究提供有益的借鑒和參考。 當(dāng)前人工智能本質(zhì)上是人類輔助工具', 4.0), ('以從反面論證當(dāng)前對人工智能沒有必要作為刑事主體認(rèn)定。 在當(dāng)今信息革命時代', 4.0), ('構(gòu)建智慧社會的法治秩序。 新技術(shù)帶來的教育變革方興未艾', 4.0), ('基于智慧教育的框架對機(jī)器學(xué)習(xí)的教育應(yīng)用與創(chuàng)新提出了相關(guān)建議。 現(xiàn)行法律體系下對于人工智能的法律人格規(guī)制缺位', 4.0), ('通過強(qiáng)制投保責(zé)任險、確立以人為本的監(jiān)管體系、加速《人工智能發(fā)展法》立法等體系性安排促進(jìn)人工智能在可控的范圍內(nèi)發(fā)展。 新技術(shù)浪潮洶涌而至。大數(shù)據(jù)、并行計(jì)算和深度學(xué)習(xí)驅(qū)動人工智能技術(shù)飛速發(fā)展', 4.0), ('旨在為我國人工智能與教育的融合發(fā)展提供理論指導(dǎo)。 人工智能的發(fā)展', 4.0), ('構(gòu)成了人工智能語境下的法律轉(zhuǎn)型。 隨著自動駕駛汽車等智能機(jī)器人的自主性、學(xué)習(xí)和適應(yīng)能力不斷增強(qiáng)', 4.0), ('是建設(shè)校本人工智能教學(xué)資源的主要策略。 人工智能從輔助人類創(chuàng)造的工具逐漸發(fā)展到具有自主創(chuàng)造的能力。計(jì)算機(jī)輔助完成的創(chuàng)新成果體現(xiàn)了人類的創(chuàng)造性', 4.0), ('其權(quán)利歸屬問題也同樣可以在不與傳統(tǒng)規(guī)則相沖突的方式下得到解決。 正人工智能正以超出人們預(yù)想的速度發(fā)展。2017年', 4.0), ('華東師范大 推進(jìn)能源生產(chǎn)和消費(fèi)革命', 4.0), ('最后對人工智能在電力系統(tǒng)及綜合能源系統(tǒng)中應(yīng)用所面臨的挑戰(zhàn)進(jìn)行了分析和展望。 2016年10月', 4.0), ('preparing for', 4.0)]七、Summa?
pip install summa from summa import keywords TR_keywords = keywords.keywords(full_text, scores=True) print(TR_keywords[0:20]) [('人工智能', 0.20105816731313303), ('年', 0.11016040768956535), ('神經(jīng)網(wǎng)絡(luò)', 0.06388799726915423), ('近年來', 0.04027526419089607), ('intelligence', 0.03653466362942308), ('在大數(shù)據(jù)的支持下', 0.0346246971866595), ('artificial', 0.029128810102958716), ('strategic', 0.023389329179370238), ('plan', 0.021451371397580698), ('人類心智和認(rèn)知分為神經(jīng)', 0.020984152907027116), ('年alphago的異軍突起引起了全社會對人工智能的廣泛關(guān)注', 0.02098414835783193), ('人工智能體的擬主體性賦予了人工智能特有的擬倫理角色', 0.020984148321143422), ('人工智能擁有類似人類的智能', 0.020984148286721082), ('智能機(jī)器人實(shí)施嚴(yán)重危害社會的行為可分為兩種', 0.02098414799550613), ('進(jìn)入大數(shù)據(jù)人工智能時代', 0.020984147618257863), ('人類已步入人工智能時代', 0.020984146933629117), ('面對人工智能技術(shù)浪潮的再次爆發(fā)', 0.020984145756245923), ('介紹了中國人工智能從迷霧重重', 0.020984139474778257), ('大智能時代的來臨', 0.02098413435650319), ('混合式教學(xué)通過', 0.020984132401813637)] from summa import summarizer from summa import keywordsif __name__ == "__main__":my_summary = summarizer.summarize(text)my_keywords = keywords.keywords(text)# print("my_summary = \n{0}".format(my_summary))print("my_keywords = \n{0}".format(my_keywords)) my_keywords = 人工智能 年 神經(jīng)網(wǎng)絡(luò) 近年來 intelligence 在大數(shù)據(jù)的支持下 artificial strategic plan 人類心智和認(rèn)知分為神經(jīng) 年alphago的異軍突起引起了全社會對人工智能的廣泛關(guān)注 人工智能體的擬主體性賦予了人工智能特有的擬倫理角色 人工智能擁有類似人類的智能 智能機(jī)器人實(shí)施嚴(yán)重危害社會的行為可分為兩種 進(jìn)入大數(shù)據(jù)人工智能時代 人類已步入人工智能時代 面對人工智能技術(shù)浪潮的再次爆發(fā) 介紹了中國人工智能從迷霧重重 大智能時代的來臨 混合式教學(xué)通過 人工智能時代即將到來 人工智能時代的到來必將帶來風(fēng)險 人工智能在經(jīng)歷了多次起伏之后 對人工智能創(chuàng)作物如何保護(hù) 現(xiàn)行法律體系下對于人工智能的法律人格規(guī)制缺位八、Autophrasex
8.1 算法思想
Autophrasex是新詞發(fā)現(xiàn)算法,主要思想是:
Robust Positive-Only Distant Training:使用wiki和freebase作為顯眼數(shù)據(jù),根據(jù)知識庫中的相關(guān)數(shù)據(jù)構(gòu)建Positive Phrases,根據(jù)領(lǐng)域內(nèi)的文本生成Negative Phrases,構(gòu)建分類器后根據(jù)預(yù)測的結(jié)果減少負(fù)標(biāo)簽帶來的噪音問題。
POS-Guided Phrasal Segmentation:使用POS詞性標(biāo)注的結(jié)果,引導(dǎo)短語分詞,利用POS的淺層句法分析的結(jié)果優(yōu)化Phrase bo
AutoPhrase可以支持任何語言,只要該語言中有通用知識庫。與當(dāng)下最先進(jìn)的方法比較,新方法在跨不同領(lǐng)域和語言的5個實(shí)際數(shù)據(jù)集上的有效性有了顯著提高。
8.2 代碼實(shí)現(xiàn)?
pip install autophrasex from autophrasex import *# 構(gòu)造autophrase autophrase = AutoPhrase(reader=DefaultCorpusReader(tokenizer=JiebaTokenizer()),selector=DefaultPhraseSelector(),extractors=[NgramsExtractor(N=4),?IDFExtractor(),?EntropyExtractor()] )# 開始挖掘 predictions = autophrase.mine(corpus_files=['./Aizhaiyao.txt'],quality_phrase_files='./wiki_quality.txt',callbacks=[LoggingCallback(),ConstantThresholdScheduler(),EarlyStopping(patience=2, min_delta=5)])# 輸出挖掘結(jié)果 for pred in predictions:print(pred) ('教育 人工智能', 0.31) ('智能 機(jī)器人', 0.2) ('教學(xué)', 0.18) ('價值', 0.18) ('職業(yè)培訓(xùn)', 0.17) ('教師', 0.17) ('智能', 0.15) ('實(shí)踐', 0.14) ('人工智能 產(chǎn)品', 0.13) ('人力', 0.13) ('人類', 0.12) ('學(xué)習(xí)', 0.12) ('分析', 0.12) ('創(chuàng)新', 0.12) ('資源', 0.12) ('新聞', 0.12) ('規(guī)制', 0.11) ('提高', 0.11) ('個性化 學(xué)習(xí)', 0.11) ('體現(xiàn)', 0.11) ('嚴(yán)重危害', 0.11) ('研究', 0.1) ('領(lǐng)域', 0.1) ('人力 資源管理', 0.1) ('生成物', 0.1) ('控制能力', 0.1) ('信息化', 0.1)九、?MDERank
相關(guān)研究ACL2022最新進(jìn)展(MDERank),主要采用如下方法:
9.1 算法思想?
1.由原先的短語-文本層面的相似度計(jì)算通過掩碼轉(zhuǎn)換為文本-文本層面,從而解決了長度不匹配的問題。
2.避免了使用短語的表征,而是使用掩碼后的文本替代候選詞,由此可以獲得充分利用了上下文信息的文本表征。
1. 絕對采樣:利用現(xiàn)有的無監(jiān)督關(guān)鍵詞提取方法,對每篇文章抽取得到關(guān)鍵詞集合,將這些“關(guān)鍵詞”作為正例對原始文章進(jìn)行掩碼。然后在剩下候選詞(“非關(guān)鍵詞”)中隨機(jī)抽取作為負(fù)例。
2. 相對采樣:利用現(xiàn)有的無監(jiān)督關(guān)鍵詞提取方法,對每篇文章抽取得到 d 關(guān)鍵詞集合,在關(guān)鍵詞集合中,隨機(jī)抽取兩個“關(guān)鍵詞”,其中排名靠前的一個作為正例,另一個則為負(fù)例,從而構(gòu)建訓(xùn)練數(shù)據(jù)。
9.2? 實(shí)驗(yàn)結(jié)果
十、小結(jié)
從中我們可以看到,TF-IDF基于統(tǒng)計(jì)易于實(shí)現(xiàn),但是缺點(diǎn)就是沒有考慮詞與詞,詞與文檔之間的關(guān)系。
TextRank考慮了詞與詞之間的關(guān)系(提取思想就是從窗口之間的詞匯關(guān)系而來),但是缺點(diǎn)是它針對的是單個文本,而不是整個語料,在詞匯量比較少的文本中,也就是短文中,效果不會太好。
以上兩種方式都沒有考慮到詞和整個文檔的相關(guān)性或者一致性。
因此,如果認(rèn)為關(guān)鍵詞與文檔在主題分布或者語義分布是一致或者相似時,我們就可以進(jìn)一步的展開嘗試。
例如,LDA主題模型認(rèn)為文檔是有很多主題組成的,文檔既是主題的分布也是關(guān)鍵詞的分布,可以計(jì)算詞的主題分布與文檔主題分布的相似性,抽取關(guān)鍵詞。
通過Bert編碼,可以分別得到文檔和詞語的embedding表示,通過比對兩者之間的相似度,然后排序,可以得到關(guān)鍵詞集合。
這兩種都是很直接的想法,并且可以快速平移至摘要抽取上,如同類思想的BertSum工作。
基于統(tǒng)計(jì)學(xué)的關(guān)鍵詞提取算法,依賴于切分詞,然而普適的切分詞,在缺乏領(lǐng)域知識情況下,很容易將我們需要的信息切分開。?
基于深度學(xué)習(xí)的keybert只能接受限定長度的文本,例如512個字,這個使得我們在處理長文本時,需要進(jìn)一步加入摘要提取等預(yù)處理措施,這無疑會帶來精度損失。而且在沒有切分詞的情況下,生成的結(jié)果偏向于長短語,常常達(dá)不到預(yù)期的效果。?
十一、關(guān)鍵詞提取的評價指標(biāo)?
關(guān)鍵詞的評價也是一個關(guān)鍵問題,一般來說,主要有以下幾種方式:
搜索推薦評價指標(biāo)Precision@k、Recall@k、F1@k假設(shè)對于一個查詢,真實(shí)相關(guān)的結(jié)果是{A,C,E, Q},搜索模型得到5個結(jié)果{A, B, C, D, E},則其中只有A,C,E是相關(guān)的,標(biāo)記為{1, 0, 1, 0, 1},1表示相關(guān),0表示不相關(guān)。?
1、F1@1:針對top-1的結(jié)果計(jì)算F1 score
在具體計(jì)算上,得到輸出的關(guān)鍵詞序列后,獲取其中的第一個關(guān)鍵詞和GT中的第一個關(guān)鍵詞作對比,從而計(jì)算出f1 score;?
2、F1@3:針對top-3的結(jié)果計(jì)算F1 score
在具體計(jì)算上,得到關(guān)鍵詞序列中的前三關(guān)鍵詞與GT中的關(guān)鍵詞做對比(不關(guān)心這三個關(guān)鍵詞的相互順序)
3、MAP(mean average precision)平均精度均值:
在具體計(jì)算上,先求出每個候選詞在當(dāng)前文本的精確率(TP/(TP+FP)),然后將這一段文本的所有候選詞精確率求和并除以候選詞個數(shù)得到該文本的平均精確率(AP),最后將所有文本的平均精確率相加后除以文本數(shù),就得到平均精度均值(MAP)。
十二、下一步計(jì)劃
import pandas as pd count = {} filename = "./AI_test.csv" inputs = pd.read_excel(filename) for text in inputs['關(guān)鍵詞’]: for char in str(text).split():if char in count:count[char] +=1else:count[char] = 1 {'人工智能': 84, '教育人工智能': 5, 'EAI': 1, '機(jī)器學(xué)習(xí)': 4, '社會風(fēng)險': 2, '法律挑戰(zhàn)': 1, '制度安排': 1, '人工智能+教育': 1, '智能教育': 2, '智能作品': 1, '自然人': 1, '版權(quán)': 1, '人工智能教育應(yīng)用': 3, '人工智能教師': 1, '協(xié)同共存': 1, 'AI': 5, '教育生態(tài)系統(tǒng)': 1, '獨(dú)創(chuàng)性': 3, '刑事風(fēng)險': 1, '刑事責(zé)任': 3, '嚴(yán)格責(zé)任': 2, '智能教學(xué)系統(tǒng)': 2, '學(xué)習(xí)分析': 1, '智慧教育': 2, '教育應(yīng)用': 3, '主體地位': 1, '刑罰目的': 1, '法律規(guī)制': 2, '智慧社會': 1, '個性化學(xué)習(xí)': 2, '法律人格': 2, '人權(quán)': 1, '數(shù)據(jù)安全': 1, '深度學(xué)習(xí)': 4, 'ITS': 1, '自動化測評': 1, '法律認(rèn)知': 1, '法律規(guī)則': 1, '法律價值': 1, '自動駕駛汽車': 1, '智能機(jī)器人': 6, '差別化責(zé)任': 1, 'AI教育': 1, 'AI課程與教學(xué)': 1, '計(jì)算思維': 1, '人工智能創(chuàng)造物': 1, '人類受眾': 1, '作者': 1, '知識產(chǎn)權(quán)': 2, '未來教育': 2, '教育信息化': 1, '電力系統(tǒng)': 1, '綜合能源系統(tǒng)': 1, '網(wǎng)絡(luò)社會': 1, '大數(shù)據(jù)': 5, '美國': 1, '人工智能生成內(nèi)容': 1, '著作權(quán)': 1, '類腦智能': 1, '認(rèn)知計(jì)算': 1, '認(rèn)知腦計(jì)算模型': 1, '弱人工智能': 3, '強(qiáng)人工智能': 2, '獨(dú)立意志': 1, '辨認(rèn)控制能力': 1, '法律人工智能': 1, '法律數(shù)據(jù)': 1, '算法': 4, '創(chuàng)作物': 1, '作品': 1, '版權(quán)保護(hù)': 1, '“人工智能+”時代': 1, '人工智能技術(shù)': 1, '學(xué)習(xí)行為': 1, '學(xué)習(xí)空間': 1, 'PST框架': 1, '教育目標(biāo)': 1, '可版權(quán)性': 1, '人類社會': 1, '人工智能領(lǐng)域': 1, '隱私保護(hù)': 1, '個人信息': 1, '人工神經(jīng)網(wǎng)絡(luò)': 1, '人-機(jī)系統(tǒng)': 1, '人工智能生成成果': 1, '鄰接權(quán)': 2, '數(shù)據(jù)成果': 1, '數(shù)據(jù)處理者權(quán)': 1, '智慧圖書館': 1, '智慧服務(wù)': 1, '智能圖書館': 2, '人工智能生成物': 3, '著作權(quán)法': 1, 'STEM/STEAM': 1, '法律': 2, '電子人': 1, '新工科': 2, '人才培養(yǎng)': 2, '技術(shù)框架': 1, '應(yīng)用模式': 1, '發(fā)展難題': 1, '圖書館': 4, 'AlphaGo': 1, '蒙特卡洛樹搜索': 1, '倫理': 1, '智能體': 1, '擬主體性': 1, '群體智能': 1, '教學(xué)機(jī)器': 1, '量子力學(xué)': 1, '物理主義': 1, '教育': 1, '未來社會': 1, '人工智能體': 1, '意志能力': 1, '物質(zhì)性條件': 1, '機(jī)器人': 1, '就業(yè)': 2, '職業(yè)培訓(xùn)': 1, '主體': 1, '客體': 1, '理性': 1, '計(jì)算機(jī)輔助教學(xué)': 1, '治理': 1, '公共政策': 1, '人工智能教育': 1, '教育人工智能技術(shù)框架': 1, '人工智能時代原住民': 1, '智能時代': 1, '信息技術(shù)': 1, '圖書館服務(wù)': 1, '機(jī)器人權(quán)利': 1, '法律擬制': 1, '擬制電子人': 1, '《北京共識》': 1, '教育發(fā)展': 1, '可持續(xù)發(fā)展': 1, '戰(zhàn)略博弈': 1, '軍事系統(tǒng)': 1, 'STEM教育': 1, '跨學(xué)科': 1, '模式': 1, '人工智能時代': 1, '普通機(jī)器人': 1, '經(jīng)濟(jì)增長': 1, '收入不平等': 1, '混合式教學(xué)': 1, '發(fā)展應(yīng)用': 1, '辯證關(guān)系': 1, '中國': 2, '智能科學(xué)': 1, '行政倫理': 1, '政府轉(zhuǎn)型': 1, '社會管理': 1, '刑事法治理念': 1, '犯罪主體地位': 1, '人工智能犯罪': 1, '人類心智': 1, '人類認(rèn)知': 1, '人類智能': 1, '人工智能產(chǎn)業(yè)': 1, '發(fā)展現(xiàn)狀': 1, '對策': 1, '刑事責(zé)任能力': 1, '刑責(zé)承擔(dān)范圍': 1, '人工智能+': 1, '創(chuàng)新創(chuàng)業(yè)教育': 1, '復(fù)旦共識': 1, '多元智能': 1, '技術(shù)發(fā)展': 1, '人工智能創(chuàng)作物': 1, '非創(chuàng)作性投入': 1, '利益平衡': 1, '多方位挑戰(zhàn)': 1, '老齡化': 1, '智能化生產(chǎn)': 1, '替代效應(yīng)': 1, '人機(jī)共存': 1, '人性解放': 1, '機(jī)器人道德倫理': 1, '刑法規(guī)制': 1, '實(shí)證性': 1, '監(jiān)管者': 1, '生產(chǎn)性資源': 1, '智能教育應(yīng)用': 1, '個性化': 1, '智能教育核心服務(wù)': 1, '教育信息化2.0': 1, '“智能+”校園': 1, '教育生態(tài)': 1, '司法權(quán)': 1, '司法運(yùn)營電腦化': 1, '法律推理': 1, '發(fā)展機(jī)遇': 1, '作品的作者': 1, '刑事法網(wǎng)': 1, '功能定位': 1, '主體資格': 2, '智能醫(yī)療': 1, '智慧醫(yī)療': 1, '手術(shù)機(jī)器人': 1, '創(chuàng)新原理': 1, '高等教育': 1, '學(xué)科': 1, '人力資源管理': 1, '薪酬': 1, '績效管理': 1, '會計(jì)變革': 1, '風(fēng)險控制': 1, '專利分析': 1, '產(chǎn)業(yè)發(fā)展': 1, '移動互聯(lián)網(wǎng)': 1, '演進(jìn)路線': 1, '新聞業(yè)': 1, '自動化新聞': 1, '邏輯起點(diǎn)': 1, '邊界': 1, '神經(jīng)網(wǎng)絡(luò)': 1, '支持向量機(jī)': 1, '混合智能': 1, '刑事司法': 1, '司法判斷': 1, '規(guī)則': 1, '概念內(nèi)涵': 1, '目標(biāo)定位': 1, '司法領(lǐng)域': 1, '辦案輔助工具': 1, '數(shù)據(jù)分析': 1, '電力變壓器': 1, '狀態(tài)檢修': 1, '自動化決策': 1, '技術(shù)-經(jīng)濟(jì)特征': 1, '高質(zhì)量增長': 1, '就業(yè)結(jié)構(gòu)': 1, '辨認(rèn)能力': 1, '控制能力': 1, '共同犯罪': 1, '創(chuàng)客教育': 1, '國際考察': 1, '發(fā)展策略': 1, '數(shù)字圖書館': 1, '信息推薦': 1, '康德哲學(xué)': 1, '法律屬性': 1, '人才體系': 1, '智能創(chuàng)新': 1}結(jié)合知網(wǎng)、維普網(wǎng)等數(shù)據(jù)集的關(guān)鍵詞提取可以作為知識發(fā)現(xiàn)的一種途徑,由于當(dāng)前關(guān)鍵詞提取的各類算法各有優(yōu)劣,基于統(tǒng)計(jì)學(xué)的算法依賴切分詞效果且缺失上下文語義信息,基于預(yù)訓(xùn)練模型的算法偏向于獲取長度較長的短語,且在英文數(shù)據(jù)集效果好于中文數(shù)據(jù)集,可以嘗試結(jié)合各類算法結(jié)果互補(bǔ),在缺乏專家知識情況下得到較優(yōu)的新詞發(fā)現(xiàn)結(jié)果,然后獲得細(xì)粒度的切分詞效果,然后基于詞信息熵約束構(gòu)建整個概念權(quán)重網(wǎng)絡(luò)。?
參考內(nèi)容:
1.?NLP關(guān)鍵詞提取必備:從TFIDF到KeyBert范式原理優(yōu)缺點(diǎn)與開源實(shí)現(xiàn)
2.?【Python】用 Python 從單個文本中提取關(guān)鍵字的四種超棒的方法?
3.?行業(yè)短語抽取方案 - 今夜無風(fēng) - 博客園 (cnblogs.com)?
總結(jié)
以上是生活随笔為你收集整理的KeyBert、TextRank等九种本文关键词提取算法(KPE)原理及代码实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕x205ta小本驱动下载页面
- 下一篇: Mail_Android_Video_S