Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作關(guān)鍵詞
概述
從今天開始我們將開啟一段自然語言處理 (NLP) 的旅程. 自然語言處理可以讓來處理, 理解, 以及運(yùn)用人類的語言, 實(shí)現(xiàn)機(jī)器語言和人類語言之間的溝通橋梁.
關(guān)鍵詞
關(guān)鍵詞 (keywords), 即關(guān)鍵詞語. 關(guān)鍵詞能描述文章的本質(zhì), 在文獻(xiàn)檢索, 自動(dòng)文摘, 文本聚類 / 分類等方面有著重要的應(yīng)用.
關(guān)鍵詞抽取的方法
關(guān)鍵詞提取: 針對(duì)新文檔, 通過算法分析. 提取文檔中一些詞語作為該文檔的關(guān)鍵詞
關(guān)鍵詞分配: 給定已有的關(guān)鍵詞庫, 對(duì)于新來的文檔從該詞庫里面分配幾個(gè)詞語作為這篇文檔的關(guān)鍵詞
TF-IDF 關(guān)鍵詞提取
TF-IDF (Term Frequency-Inverse Document Frequency), 即詞頻-逆文件頻率是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù). TF-IDF 可以幫助我們挖掘文章中的關(guān)鍵詞. 通過數(shù)值統(tǒng)計(jì), 反映一個(gè)詞對(duì)于語料庫中某篇文章的重要性.
TF
TF (Term Frequency), 即詞頻. 表示詞在文本中出現(xiàn)的頻率.
公式:
IDF
IDF (Inverse Document Frequency), 即逆文檔頻率. 表示語料庫中包含詞的文檔的數(shù)目的倒數(shù).
公式:
TF-IDF
公式:
TF-IDF = (詞的頻率 / 句子總字?jǐn)?shù)) × (總文檔數(shù) / 包含該詞的文檔數(shù))
如果一個(gè)詞非常常見, 那么 IDF 就會(huì)很低, 反之就會(huì)很高. TF-IDF 可以幫助我們過濾常見詞語, 提取關(guān)鍵詞.
jieba TF-IDF 關(guān)鍵詞抽取
格式:
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
參數(shù):
sentence
: 待提取的文本語料
topK
: 返回的關(guān)鍵詞個(gè)數(shù), 默認(rèn)為 20
withWeight
: 是否需要返回關(guān)鍵詞權(quán)重, 默認(rèn)為 False
allowPOS
: 僅包括指定詞性的詞, 默認(rèn)為空, 即不篩選
jieba 詞性
編號(hào) | 詞性 | 描述 |
---|---|---|
Ag | 形語素 | 形容詞性語素。形容詞代碼為 a,語素代碼g前面置以A。 |
a | 形容詞 | 取英語形容詞 adjective的第1個(gè)字母。 |
ad | 副形詞 | 直接作狀語的形容詞。形容詞代碼 a和副詞代碼d并在一起。 |
an | 名形詞 | 具有名詞功能的形容詞。形容詞代碼 a和名詞代碼n并在一起。 |
b | 區(qū)別詞 | 取漢字“別”的聲母。 |
c | 連詞 | 取英語連詞 conjunction的第1個(gè)字母。 |
dg | 副語素 | 副詞性語素。副詞代碼為 d,語素代碼g前面置以D。 |
d | 副詞 | 取 adverb的第2個(gè)字母,因其第1個(gè)字母已用于形容詞。 |
e | 嘆詞 | 取英語嘆詞 exclamation的第1個(gè)字母。 |
f | 方位詞 | 取漢字“方” |
g | 語素 | 絕大多數(shù)語素都能作為合成詞的“詞根”,取漢字“根”的聲母。 |
h | 前接成分 | 取英語 head的第1個(gè)字母。 |
i | 成語 | 取英語成語 idiom的第1個(gè)字母。 |
j | 簡稱略語 | 取漢字“簡”的聲母。 |
k | 后接成分 | |
l | 習(xí)用語 | 習(xí)用語尚未成為成語,有點(diǎn)“臨時(shí)性”,取“臨”的聲母。 |
m | 數(shù)詞 | 取英語 numeral的第3個(gè)字母,n,u已有他用。 |
Ng | 名語素 | 名詞性語素。名詞代碼為 n,語素代碼g前面置以N。 |
n | 名詞 | 取英語名詞 noun的第1個(gè)字母。 |
nr | 人名 | 名詞代碼 n和“人(ren)”的聲母并在一起。 |
ns | 地名 | 名詞代碼 n和處所詞代碼s并在一起。 |
nt | 機(jī)構(gòu)團(tuán)體 | “團(tuán)”的聲母為 t,名詞代碼n和t并在一起。 |
nz | 其他專名 | “?!钡穆暷傅牡?1個(gè)字母為z,名詞代碼n和z并在一起。 |
o | 擬聲詞 | 取英語擬聲詞 onomatopoeia的第1個(gè)字母。 |
p | 介詞 | 取英語介詞 prepositional的第1個(gè)字母。 |
q | 量詞 | 取英語 quantity的第1個(gè)字母。 |
r | 代詞 | 取英語代詞 pronoun的第2個(gè)字母,因p已用于介詞。 |
s | 處所詞 | 取英語 space的第1個(gè)字母。 |
tg | 時(shí)語素 | 時(shí)間詞性語素。時(shí)間詞代碼為 t,在語素的代碼g前面置以T。 |
t | 時(shí)間詞 | 取英語 time的第1個(gè)字母。 |
u | 助詞 | 取英語助詞 auxiliary |
vg | 動(dòng)語素 | 動(dòng)詞性語素。動(dòng)詞代碼為 v。在語素的代碼g前面置以V。 |
v | 動(dòng)詞 | 取英語動(dòng)詞 verb的第一個(gè)字母。 |
vd | 副動(dòng)詞 | 直接作狀語的動(dòng)詞。動(dòng)詞和副詞的代碼并在一起。 |
vn | 名動(dòng)詞 | 指具有名詞功能的動(dòng)詞。動(dòng)詞和名詞的代碼并在一起。 |
w | 標(biāo)點(diǎn)符號(hào) | |
x | 非語素字 | 非語素字只是一個(gè)符號(hào),字母 x通常用于代表未知數(shù)、符號(hào)。 |
y | 語氣詞 | 取漢字“語”的聲母。 |
z | 狀態(tài)詞 | 取漢字“狀”的聲母的前一個(gè)字母。 |
un | 未知詞 |
不帶關(guān)鍵詞權(quán)重
例子:
import jieba.analyse # 定義文本 text = "自然語言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。" \ "它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法。" \ "自然語言處理是一門融語言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。" \ "因此,這一領(lǐng)域的研究將涉及自然語言,即人們?nèi)粘J褂玫恼Z言," \ "所以它與語言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。" \ "自然語言處理并不是一般地研究自然語言," \ "而在于研制能有效地實(shí)現(xiàn)自然語言通信的計(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. ['自然語言', '計(jì)算機(jī)科學(xué)', '語言學(xué)', '研究', '領(lǐng)域', '處理', '通信', '有效', '軟件系統(tǒng)', '人工智能', '實(shí)現(xiàn)', '計(jì)算機(jī)系統(tǒng)', '重要', '一體', '一門', '日常', '計(jì)算機(jī)', '密切', '數(shù)學(xué)', '研制']
附帶關(guān)鍵詞權(quán)重
import jieba.analyse # 定義文本 content = "自然語言處理是人工智能和語言學(xué)領(lǐng)域的分支學(xué)科。此領(lǐng)域探討如何處理及運(yùn)用自然語言;自然語言處理包括多方面和步驟,基本有認(rèn)知、理解、生成等部分。" # 定義文本 text = "自然語言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。" \ "它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法。" \ "自然語言處理是一門融語言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。" \ "因此,這一領(lǐng)域的研究將涉及自然語言,即人們?nèi)粘J褂玫恼Z言," \ "所以它與語言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。" \ "自然語言處理并不是一般地研究自然語言," \ "而在于研制能有效地實(shí)現(xiàn)自然語言通信的計(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. [('自然語言', 1.1237629576061539), ('計(jì)算機(jī)科學(xué)', 0.4503481350267692), ('語言學(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), ('一門', 0.11300493477184616), ('日常', 0.10913612756276922), ('計(jì)算機(jī)', 0.1046889912443077), ('密切', 0.10181409957492307), ('數(shù)學(xué)', 0.10166677655076924), ('研制', 0.09868653898630769)]
TextRank
TextRank 通過詞之間的相鄰關(guān)系構(gòu)建網(wǎng)絡(luò),然后用PageRank 迭代計(jì)算每個(gè)節(jié)點(diǎn)的 rank 值. 排序 rank值即可得到關(guān)鍵詞.
import jieba.analyse # 定義文本 content = "自然語言處理是人工智能和語言學(xué)領(lǐng)域的分支學(xué)科。此領(lǐng)域探討如何處理及運(yùn)用自然語言;自然語言處理包括多方面和步驟,基本有認(rèn)知、理解、生成等部分。" # 定義文本 text = "自然語言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。" \ "它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語言進(jìn)行有效通信的各種理論和方法。" \ "自然語言處理是一門融語言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。" \ "因此,這一領(lǐng)域的研究將涉及自然語言,即人們?nèi)粘J褂玫恼Z言," \ "所以它與語言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。" \ "自然語言處理并不是一般地研究自然語言," \ "而在于研制能有效地實(shí)現(xiàn)自然語言通信的計(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)', '處理', '語言學(xué)', '數(shù)學(xué)', '人們', '計(jì)算機(jī)', '涉及', '有著', '一體', '方法', '語言', '研制', '使用', '人工智能', '在于', '聯(lián)系', '科學(xué)'] Loading model cost 1.062 seconds. Prefix dict has been built successfully.
以上就是Python機(jī)器學(xué)習(xí)NLP自然語言處理基本操作關(guān)鍵詞的詳細(xì)內(nèi)容,更多關(guān)于Python機(jī)器學(xué)習(xí)NLP自然語言處理的資料請(qǐng)關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。