NLTK
自然語言處理(NLP)
自然語言處理(natural language processing)是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。自然語言處理是一門融語言學、計算機科學、數學于一體的科學。
NLTK
NLTK是構建Python程序以使用人類語言數據的領先平臺。它為50多種語料庫和詞匯資源(如WordNet)提供了易于使用的界面,還提供了一套用于分類,標記化,詞干化,標記,解析和語義推理的文本處理庫。NLTK是Python上著名的?然語?處理庫 ?帶語料庫,具有詞性分類庫 ?帶分類,分詞,等等功能。NLTK被稱為“使用Python進行教學和計算語言學工作的絕佳工具”,以及“用自然語言進行游戲的神奇圖書館”。
安裝語料庫
pip install nltk注意,這只是安裝好了一個框子,里面是沒東西的
# 新建一個ipython,輸入 import nltk nltk.download()我覺得下book 和popular下好就可以了
功能?覽表
NLTK?帶語料庫
?文本處理理流程
Tokenize
把長句?拆成有“意義”的?部件,,使用的是nltk.word_tokenize
import nltk sentence = "hello,,world" tokens = nltk.word_tokenize(sentence) tokens[‘hello’, ‘,’, ‘,world’]
中英?NLP區別
中?分詞
jieba
import jieba seg_list = jieba.cut("我來到北北京清華?大學", cut_all=True) print ("Full Mode:", "/ ".join(seg_list)) # 全模式 seg_list = jieba.cut("我來到北北京清華?大學", cut_all=False) print( "Default Mode:", "/ ".join(seg_list)) # 精確模式 seg_list = jieba.cut("他來到了了北京清華大學") # 默認是精確模式 print (", ".join(seg_list)) seg_list = jieba.cut_for_search("毛利畢業于中國東莞理工,后來出來混日子") # 搜索引擎模式 print (", ".join(seg_list))Full Mode: 我/ 來到/ 北/ / / 京/ 清華/ / / 大學
Default Mode: 我/ 來到/ 北/ 北/ 京/ 清華/ ?/ 大學
新詞識別:他, 來到, 了, 了, 北京, 清華大學
搜索引擎模式:毛利, 畢業, 于, 中國, 東莞, 理工, ,, 后來, 出來, 日子, 混日子
tokenize沒那么簡單
from nltk.tokenize import word_tokenize tweet = 'RT @angelababy: love you baby! :D http://ah.love #168cm' print(word_tokenize(tweet))[‘RT’, ‘@’, ‘angelababy’, ‘:’, ‘love’, ‘you’, ‘baby’, ‘!’, ‘:’, ‘D’, ‘http’, ‘:’, ‘//ah.love’, ‘#’, ‘168cm’]
?
所以要去點無關詞匯
社交?絡語?的tokenize
紛繁復雜的詞形
Inflection變化: walk => walking => walked 不影響詞性
derivation 引申: nation (noun) => national (adjective) => nationalize (verb) 影響詞性
詞形歸?化
Stemming 詞?提取:?般來說,就是把不影響詞性的inflection的?尾巴砍掉
walking 砍ing = walk
walked 砍ed = walk
Lemmatization 詞形歸?:把各種類型的詞的變形,都歸為?個形式
went 歸? = go
are 歸? = be
NLTK實現Stemming
NLTK實現Lemma
Lemma的?問題
到底是哪個意思
NLTK更好地實現Lemma
Part-Of-Speech
NLTK標注POS Tag
Stopwords
?千個HE有?千種指代
?千個THE有?千種指事
對于注重理解?本『意思』的應?場景來說 歧義太多
全體stopwords列表 http://www.ranks.nl/stopwords
NLTK去除stopwords
?本預處理流?線
什么是?然語?處理
從?然語? 得到計算機數據
?本預處理讓我們得到了什么
NLTK完成簡單的情感分析
TF-IDF
- TF: Term Frequency, 衡量?個term在?檔中出現得有多頻繁。
- TF(t) = (t出現在?檔中的次數) / (?檔中的term總數).
- IDF: Inverse Document Frequency, 衡量?個term有多重要。 有些詞出現的很多,但是明顯不是很有卵?。?如’is’,’the‘,’and‘之類 的。 為了平衡,我們把罕見的詞的重要性(weight)搞?, 把常見詞的重要性搞低。
- IDF(t) = log_e(?檔總數 / 含有t的?檔總數). TF-IDF = TF * IDF
總結
- 上一篇: 招联金融额度被冻结是什么意思
- 下一篇: 深入理解SVM