Python 自然語言處理——nltk庫入門之詞性標注

nltk 自然語言處理庫源自賓夕法尼亞大學計算機與信息科學系的計算機語言學課程扎附,在數(shù)十名優(yōu)秀的貢獻者的幫助下不斷壯大抠忘,成為最常用的自然語言處理庫之一撩炊。
下面列出了nltk庫中的一些重要的模塊
——nltk.corpus
————獲取語料庫。
——————語料庫和詞典的標準化接口
——nltk.tokenize,nltk.stem
————字符串處理
——————分詞崎脉,句子分解拧咳,提取主干
——nltk.collocations
————搭配探究
——————t檢驗,卡方檢驗囚灼,點互信息
——nltk.tag
————詞性標識符
——————n-gram骆膝,backoff,Brill灶体,HMM阅签,TnT
——nltk.classify,nltk.cluster
————分類
——————決策樹,最大熵蝎抽,樸素貝葉斯政钟,EM,k-means
——nltk.chunk
————分塊
——————正則表達式织中,n-gram锥涕,命名實體
——nltk.parse
————解析
——————圖表,基于特征狭吼,一致性层坠,概率性,依賴項
——nltk.sem,nltk.inference
————語義解釋
——————λ演算刁笙,一階邏輯破花,模型檢驗
——nltk.metrics
————指標評測
——————精度,召回率疲吸,協(xié)議系數(shù)
——nltk.probability
————概率與估計
——————頻率分布座每,平滑概率分布
——nltk.app,nltk.chat
————應用
——————圖形化的關鍵詞排序,分析器摘悴,WordNet查看器峭梳,聊天機器人
——nltk.toolbox
————語言學領域的工作
——————處理SIL工具箱格式的數(shù)據(jù)

  • 下載數(shù)據(jù)集

在本文中將使用nltk自帶的twitter sample進行練習,在linux終端或者windows控制臺中輸入:

$ python -m nltk.downloader twitter_samples

即可下載數(shù)據(jù)集

  • 下載詞性標注器

$ python -m nltk.downloader averaged_perceptron_tagger
  • 開始使用

下面在linux終端分步演示:

$ python
  • 導入數(shù)據(jù)集蹂喻,數(shù)據(jù)集中包含了兩萬條從推特API中獲取到的JSON格式的文本
>>> from nltk.corpus import twitter_samples
  • 查看數(shù)據(jù)集葱椭,其總包含了如下三個文件
>>> twitter_samples.fileids()
['negative_tweets.json', 'positive_tweets.json', 'tweets.20150430-223406.json']
  • 查看其中一個文件
twitter_samples.strings('tweets.20150430-223406.json')

然后你就會被大段文字刷屏了,看到這些文字說明twitter數(shù)據(jù)集已經(jīng)下載成功了口四。

  • 詞性標注

接下來我們要使用nltk統(tǒng)計這段文本中出現(xiàn)了多少個形容詞孵运,多少個名詞。

  • 用Ctrl+D退出python環(huán)境蔓彩,使用vim新建一個名為nlp.py的文件
$ vim nlp.py
from nltk.corpus import twitter_samples
#導入詞性標注器
from nltk.tag import pos_tag_sents
#獲取字符串
tweets = twitter_samples.strings('positive_tweets.json')
#分詞--將句子轉化為單詞列表
tweets_tokens=twitter_samples.tokenized('positive_tweets.json')
#標注詞性
tweets_tagged = pos_tag_sents(tweets_tokens)
#打印前兩句
print(tweets_tagged[:2])

退出vim后運行代碼治笨,結果如下:

$ python nlp.py
[[('#FollowFriday', 'JJ'), ('@France_Inte', 'NNP'), ('@PKuchly57', 'NNP'), ('@Milipol_Paris', 'NNP'), ('for', 'IN'), ('being', 'VBG'), ('top', 'JJ'), ('engaged', 'VBN'), ('members', 'NNS'), ('in', 'IN'), ('my', 'PRP$'), ('community', 'NN'), ('this', 'DT'), ('week', 'NN'), (':)', 'NN')], [('@Lamb2ja', 'NN'), ('Hey', 'NNP'), ('James', 'NNP'), ('!', '.'), ('How', 'NNP'), ('odd', 'JJ'), (':/', 'NNP'), ('Please', 'NNP'), ('call', 'VB'), ('our', 'PRP$'), ('Contact', 'NNP'), ('Centre', 'NNP'), ('on', 'IN'), ('02392441234', 'CD'), ('and', 'CC'), ('we', 'PRP'), ('will', 'MD'), ('be', 'VB'), ('able', 'JJ'), ('to', 'TO'), ('assist', 'VB'), ('you', 'PRP'), (':)', 'VBP'), ('Many', 'JJ'), ('thanks', 'NNS'), ('!', '.')]]

每個tuple的第二個元素就是詞性驳概,在nltk中,JJ是形容詞(-_-|||)旷赖,NN是單數(shù)名詞顺又,NNS是復數(shù)名詞。

  • 統(tǒng)計詞頻

from nltk.corpus import twitter_samples
#導入詞性標注器
from nltk.tag import pos_tag_sents
#獲取字符串
tweets = twitter_samples.strings('positive_tweets.json')
#分詞--將句子轉化為單詞列表
tweets_tokens=twitter_samples.tokenized('positive_tweets.json')
#標注詞性
tweets_tagged = pos_tag_sents(tweets_tokens)
JJ_count = 0
NN_count = 0
for tweet in tweets_tagged:
        for pair in tweet:
                tag = pair[1]
                if tag == 'JJ':
                        JJ_count += 1
                elif tag == 'NN':
                        NN_count += 1
print('總計形容詞:%d 個' % JJ_count)
print('總計單數(shù)名詞:%d個' % NN_count)

  • 最終結果

$ python nlp.py
總計形容詞:6094 個
總計單數(shù)名詞:13180個

總結:
最近在學習自然語言處理杠愧,看了很多中文和英文教程待榔,發(fā)現(xiàn)中文博主和英文博主最大的區(qū)別就是,很多中文博主即便所寫入門教程也喜歡把自己覺得簡單的步驟跳過去流济,讓初學者看得有點懵锐锣。
我以后的文章會盡量把所有可能出錯的步驟描述清晰,方便大家交流绳瘟。

參考:《python自然語言處理》
博客文章 :https://www.digitalocean.com/community/tutorials/how-to-work-with-language-data-in-python-3-using-the-natural-language-toolkit-nltk

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雕憔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糖声,更是在濱河造成了極大的恐慌斤彼,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蘸泻,死亡現(xiàn)場離奇詭異琉苇,居然都是意外死亡,警方通過查閱死者的電腦和手機悦施,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門并扇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抡诞,你說我怎么就攤上這事穷蛹。” “怎么了昼汗?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵肴熏,是天一觀的道長。 經(jīng)常有香客問我顷窒,道長蛙吏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任鞋吉,我火速辦了婚禮出刷,結果婚禮上,老公的妹妹穿的比我還像新娘坯辩。我一直安慰自己,他們只是感情好崩侠,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布漆魔。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪改抡。 梳的紋絲不亂的頭發(fā)上矢炼,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音阿纤,去河邊找鬼句灌。 笑死,一個胖子當著我的面吹牛欠拾,可吹牛的內(nèi)容都是我干的胰锌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼藐窄,長吁一口氣:“原來是場噩夢啊……” “哼资昧!你這毒婦竟也來了?” 一聲冷哼從身側響起荆忍,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤格带,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后刹枉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叽唱,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年微宝,在試婚紗的時候發(fā)現(xiàn)自己被綠了棺亭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡芥吟,死狀恐怖侦铜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钟鸵,我是刑警寧澤钉稍,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站棺耍,受9級特大地震影響贡未,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒙袍,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一俊卤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧害幅,春花似錦消恍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽约啊。三九已至,卻和暖如春佣赖,著一層夾襖步出監(jiān)牢的瞬間恰矩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工憎蛤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留外傅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓俩檬,卻偏偏與公主長得像萎胰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豆胸,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容