Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理基本操作關(guān)鍵詞
概述
從今天開(kāi)始我們將開(kāi)啟一段自然語(yǔ)言處理 (NLP) 的旅程. 自然語(yǔ)言處理可以讓來(lái)處理, 理解, 以及運(yùn)用人類(lèi)的語(yǔ)言, 實(shí)現(xiàn)機(jī)器語(yǔ)言和人類(lèi)語(yǔ)言之間的溝通橋梁.

關(guān)鍵詞
關(guān)鍵詞 (keywords), 即關(guān)鍵詞語(yǔ). 關(guān)鍵詞能描述文章的本質(zhì), 在文獻(xiàn)檢索, 自動(dòng)文摘, 文本聚類(lèi) / 分類(lèi)等方面有著重要的應(yīng)用.

關(guān)鍵詞抽取的方法
關(guān)鍵詞提取: 針對(duì)新文檔, 通過(guò)算法分析. 提取文檔中一些詞語(yǔ)作為該文檔的關(guān)鍵詞
關(guān)鍵詞分配: 給定已有的關(guān)鍵詞庫(kù), 對(duì)于新來(lái)的文檔從該詞庫(kù)里面分配幾個(gè)詞語(yǔ)作為這篇文檔的關(guān)鍵詞
TF-IDF 關(guān)鍵詞提取
TF-IDF (Term Frequency-Inverse Document Frequency), 即詞頻-逆文件頻率是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù). TF-IDF 可以幫助我們挖掘文章中的關(guān)鍵詞. 通過(guò)數(shù)值統(tǒng)計(jì), 反映一個(gè)詞對(duì)于語(yǔ)料庫(kù)中某篇文章的重要性.
TF
TF (Term Frequency), 即詞頻. 表示詞在文本中出現(xiàn)的頻率.
公式:

IDF
IDF (Inverse Document Frequency), 即逆文檔頻率. 表示語(yǔ)料庫(kù)中包含詞的文檔的數(shù)目的倒數(shù).
公式:

TF-IDF
公式:

TF-IDF = (詞的頻率 / 句子總字?jǐn)?shù)) × (總文檔數(shù) / 包含該詞的文檔數(shù))
如果一個(gè)詞非常常見(jiàn), 那么 IDF 就會(huì)很低, 反之就會(huì)很高. TF-IDF 可以幫助我們過(guò)濾常見(jiàn)詞語(yǔ), 提取關(guān)鍵詞.
jieba TF-IDF 關(guān)鍵詞抽取
格式:
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
參數(shù):
sentence: 待提取的文本語(yǔ)料
topK: 返回的關(guān)鍵詞個(gè)數(shù), 默認(rèn)為 20
withWeight: 是否需要返回關(guān)鍵詞權(quán)重, 默認(rèn)為 False
allowPOS: 僅包括指定詞性的詞, 默認(rèn)為空, 即不篩選
jieba 詞性
| 編號(hào) | 詞性 | 描述 |
|---|---|---|
| Ag | 形語(yǔ)素 | 形容詞性語(yǔ)素。形容詞代碼為 a,語(yǔ)素代碼g前面置以A。 |
| a | 形容詞 | 取英語(yǔ)形容詞 adjective的第1個(gè)字母。 |
| ad | 副形詞 | 直接作狀語(yǔ)的形容詞。形容詞代碼 a和副詞代碼d并在一起。 |
| an | 名形詞 | 具有名詞功能的形容詞。形容詞代碼 a和名詞代碼n并在一起。 |
| b | 區(qū)別詞 | 取漢字“別”的聲母。 |
| c | 連詞 | 取英語(yǔ)連詞 conjunction的第1個(gè)字母。 |
| dg | 副語(yǔ)素 | 副詞性語(yǔ)素。副詞代碼為 d,語(yǔ)素代碼g前面置以D。 |
| d | 副詞 | 取 adverb的第2個(gè)字母,因其第1個(gè)字母已用于形容詞。 |
| e | 嘆詞 | 取英語(yǔ)嘆詞 exclamation的第1個(gè)字母。 |
| f | 方位詞 | 取漢字“方” |
| g | 語(yǔ)素 | 絕大多數(shù)語(yǔ)素都能作為合成詞的“詞根”,取漢字“根”的聲母。 |
| h | 前接成分 | 取英語(yǔ) head的第1個(gè)字母。 |
| i | 成語(yǔ) | 取英語(yǔ)成語(yǔ) idiom的第1個(gè)字母。 |
| j | 簡(jiǎn)稱(chēng)略語(yǔ) | 取漢字“簡(jiǎn)”的聲母。 |
| k | 后接成分 | |
| l | 習(xí)用語(yǔ) | 習(xí)用語(yǔ)尚未成為成語(yǔ),有點(diǎn)“臨時(shí)性”,取“臨”的聲母。 |
| m | 數(shù)詞 | 取英語(yǔ) numeral的第3個(gè)字母,n,u已有他用。 |
| Ng | 名語(yǔ)素 | 名詞性語(yǔ)素。名詞代碼為 n,語(yǔ)素代碼g前面置以N。 |
| n | 名詞 | 取英語(yǔ)名詞 noun的第1個(gè)字母。 |
| nr | 人名 | 名詞代碼 n和“人(ren)”的聲母并在一起。 |
| ns | 地名 | 名詞代碼 n和處所詞代碼s并在一起。 |
| nt | 機(jī)構(gòu)團(tuán)體 | “團(tuán)”的聲母為 t,名詞代碼n和t并在一起。 |
| nz | 其他專(zhuān)名 | “專(zhuān)”的聲母的第 1個(gè)字母為z,名詞代碼n和z并在一起。 |
| o | 擬聲詞 | 取英語(yǔ)擬聲詞 onomatopoeia的第1個(gè)字母。 |
| p | 介詞 | 取英語(yǔ)介詞 prepositional的第1個(gè)字母。 |
| q | 量詞 | 取英語(yǔ) quantity的第1個(gè)字母。 |
| r | 代詞 | 取英語(yǔ)代詞 pronoun的第2個(gè)字母,因p已用于介詞。 |
| s | 處所詞 | 取英語(yǔ) space的第1個(gè)字母。 |
| tg | 時(shí)語(yǔ)素 | 時(shí)間詞性語(yǔ)素。時(shí)間詞代碼為 t,在語(yǔ)素的代碼g前面置以T。 |
| t | 時(shí)間詞 | 取英語(yǔ) time的第1個(gè)字母。 |
| u | 助詞 | 取英語(yǔ)助詞 auxiliary |
| vg | 動(dòng)語(yǔ)素 | 動(dòng)詞性語(yǔ)素。動(dòng)詞代碼為 v。在語(yǔ)素的代碼g前面置以V。 |
| v | 動(dòng)詞 | 取英語(yǔ)動(dòng)詞 verb的第一個(gè)字母。 |
| vd | 副動(dòng)詞 | 直接作狀語(yǔ)的動(dòng)詞。動(dòng)詞和副詞的代碼并在一起。 |
| vn | 名動(dòng)詞 | 指具有名詞功能的動(dòng)詞。動(dòng)詞和名詞的代碼并在一起。 |
| w | 標(biāo)點(diǎn)符號(hào) | |
| x | 非語(yǔ)素字 | 非語(yǔ)素字只是一個(gè)符號(hào),字母 x通常用于代表未知數(shù)、符號(hào)。 |
| y | 語(yǔ)氣詞 | 取漢字“語(yǔ)”的聲母。 |
| z | 狀態(tài)詞 | 取漢字“狀”的聲母的前一個(gè)字母。 |
| un | 未知詞 |
不帶關(guān)鍵詞權(quán)重
例子:
import jieba.analyse # 定義文本 text = "自然語(yǔ)言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。" \ "它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語(yǔ)言進(jìn)行有效通信的各種理論和方法。" \ "自然語(yǔ)言處理是一門(mén)融語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。" \ "因此,這一領(lǐng)域的研究將涉及自然語(yǔ)言,即人們?nèi)粘J褂玫恼Z(yǔ)言," \ "所以它與語(yǔ)言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。" \ "自然語(yǔ)言處理并不是一般地研究自然語(yǔ)言," \ "而在于研制能有效地實(shí)現(xiàn)自然語(yǔ)言通信的計(jì)算機(jī)系統(tǒng),特別是其中的軟件系統(tǒng)。" \ "因而它是計(jì)算機(jī)科學(xué)的一部分" # 提取關(guān)鍵詞 keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=False) # 調(diào)試輸出 print([i for i in keywords])
輸出結(jié)果:
Building prefix dict from the default dictionary ... Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache Loading model cost 0.890 seconds. Prefix dict has been built successfully. ['自然語(yǔ)言', '計(jì)算機(jī)科學(xué)', '語(yǔ)言學(xué)', '研究', '領(lǐng)域', '處理', '通信', '有效', '軟件系統(tǒng)', '人工智能', '實(shí)現(xiàn)', '計(jì)算機(jī)系統(tǒng)', '重要', '一體', '一門(mén)', '日常', '計(jì)算機(jī)', '密切', '數(shù)學(xué)', '研制']
附帶關(guān)鍵詞權(quán)重
import jieba.analyse # 定義文本 content = "自然語(yǔ)言處理是人工智能和語(yǔ)言學(xué)領(lǐng)域的分支學(xué)科。此領(lǐng)域探討如何處理及運(yùn)用自然語(yǔ)言;自然語(yǔ)言處理包括多方面和步驟,基本有認(rèn)知、理解、生成等部分。" # 定義文本 text = "自然語(yǔ)言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。" \ "它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語(yǔ)言進(jìn)行有效通信的各種理論和方法。" \ "自然語(yǔ)言處理是一門(mén)融語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。" \ "因此,這一領(lǐng)域的研究將涉及自然語(yǔ)言,即人們?nèi)粘J褂玫恼Z(yǔ)言," \ "所以它與語(yǔ)言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。" \ "自然語(yǔ)言處理并不是一般地研究自然語(yǔ)言," \ "而在于研制能有效地實(shí)現(xiàn)自然語(yǔ)言通信的計(jì)算機(jī)系統(tǒng),特別是其中的軟件系統(tǒng)。" \ "因而它是計(jì)算機(jī)科學(xué)的一部分" # 提取關(guān)鍵詞 (帶權(quán)重) keywords = jieba.analyse.extract_tags(text, topK=20, withWeight=True) # 調(diào)試輸出 print([i for i in keywords])
輸出結(jié)果:
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache
Loading model cost 1.110 seconds.
Prefix dict has been built successfully.
[('自然語(yǔ)言', 1.1237629576061539), ('計(jì)算機(jī)科學(xué)', 0.4503481350267692), ('語(yǔ)言學(xué)', 0.27566262244215384), ('研究', 0.2660770221507693), ('領(lǐng)域', 0.24979825580353845), ('處理', 0.24973179957046154), ('通信', 0.2043557391963077), ('有效', 0.16296019853692306), ('軟件系統(tǒng)', 0.16102600688461538), ('人工智能', 0.14550809839215384), ('實(shí)現(xiàn)', 0.14389939312584615), ('計(jì)算機(jī)系統(tǒng)', 0.1402028601413846), ('重要', 0.12347581087876922), ('一體', 0.11349408224353846), ('一門(mén)', 0.11300493477184616), ('日常', 0.10913612756276922), ('計(jì)算機(jī)', 0.1046889912443077), ('密切', 0.10181409957492307), ('數(shù)學(xué)', 0.10166677655076924), ('研制', 0.09868653898630769)]
TextRank
TextRank 通過(guò)詞之間的相鄰關(guān)系構(gòu)建網(wǎng)絡(luò),然后用PageRank 迭代計(jì)算每個(gè)節(jié)點(diǎn)的 rank 值. 排序 rank值即可得到關(guān)鍵詞.
import jieba.analyse # 定義文本 content = "自然語(yǔ)言處理是人工智能和語(yǔ)言學(xué)領(lǐng)域的分支學(xué)科。此領(lǐng)域探討如何處理及運(yùn)用自然語(yǔ)言;自然語(yǔ)言處理包括多方面和步驟,基本有認(rèn)知、理解、生成等部分。" # 定義文本 text = "自然語(yǔ)言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。" \ "它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語(yǔ)言進(jìn)行有效通信的各種理論和方法。" \ "自然語(yǔ)言處理是一門(mén)融語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。" \ "因此,這一領(lǐng)域的研究將涉及自然語(yǔ)言,即人們?nèi)粘J褂玫恼Z(yǔ)言," \ "所以它與語(yǔ)言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。" \ "自然語(yǔ)言處理并不是一般地研究自然語(yǔ)言," \ "而在于研制能有效地實(shí)現(xiàn)自然語(yǔ)言通信的計(jì)算機(jī)系統(tǒng),特別是其中的軟件系統(tǒng)。" \ "因而它是計(jì)算機(jī)科學(xué)的一部分" # TextRank提取關(guān)鍵詞 keywords = jieba.analyse.textrank(text, topK=20, withWeight=False) # 調(diào)試輸出 print([i for i in keywords])
調(diào)試輸出:
Building prefix dict from the default dictionary ... Loading model from cache C:\Users\Windows\AppData\Local\Temp\jieba.cache ['研究', '領(lǐng)域', '計(jì)算機(jī)科學(xué)', '實(shí)現(xiàn)', '處理', '語(yǔ)言學(xué)', '數(shù)學(xué)', '人們', '計(jì)算機(jī)', '涉及', '有著', '一體', '方法', '語(yǔ)言', '研制', '使用', '人工智能', '在于', '聯(lián)系', '科學(xué)'] Loading model cost 1.062 seconds. Prefix dict has been built successfully.

以上就是Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理基本操作關(guān)鍵詞的詳細(xì)內(nèi)容,更多關(guān)于Python機(jī)器學(xué)習(xí)NLP自然語(yǔ)言處理的資料請(qǐng)關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信