国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python編程使用NLTK進行自然語言處理詳解

2020-01-04 16:21:49
字體:
來源:轉載
供稿:網友

python/284903.html">python/292044.html">自然語言處理是計算機科學領域與人工智能領域中的一個重要方向。自然語言工具箱(NLTK,NaturalLanguageToolkit)是一個基于Python語言的類庫,它也是當前最為流行的自然語言編程與開發工具。在進行自然語言處理研究和應用時,恰當利用NLTK中提供的函數可以大幅度地提高效率。本文就將通過一些實例來向讀者介紹NLTK的使用。

NLTK

NaturalLanguageToolkit,自然語言處理工具包,在NLP領域中,最常使用的一個Python庫。

NLTK是一個開源的項目,包含:Python模塊,數據集和教程,用于NLP的研究和開發  。
NLTK由Steven Bird和Edward Loper在賓夕法尼亞大學計算機和信息科學系開發。
NLTK包括圖形演示和示例數據。其提供的教程解釋了工具包支持的語言處理任務背后的基本概念。

開發環境:我所使用的Python版本是最新的3.5.1,NLTK版本是3.2。Python的安裝不在本文的討論范圍內,我們略去不表。你可以從NLTK的官網上http://www.nltk.org/獲得最新版本的NLTK。Anyway,使用pip指令來完成NLTK包的下載和安裝無疑是最簡便的方法。

當然,當你完成這一步時,其實還不夠。因為NLTK是由許多許多的包來構成的,此時運行Python,并輸入下面的指令(當然,第一條指令還是要導入NLTK包)

>>> import nltk >>> nltk.download() 

然后,Python Launcher會彈出下面這個界面,建議你選擇安裝所有的Packages,以免去日后一而再、再而三的進行安裝,也為你的后續開發提供一個穩定的環境。某些包的Status顯示“out of date”,你可以不必理會,它基本不影響你的使用與開發。

python,自然語言處理,自然語言處理庫,nltk,python3,用python自然語言處理

既然你已經安裝成功,我們來小試牛刀一下。當然本文涉及的主要任務都是自然語言處理中最常用,最基礎的pre-processing過程,結合機器學習的高級應用我們會在后續文章中再進行介紹。

1、SentencesSegment(分句)

也就是說我們手頭有一段文本,我們希望把它分成一個一個的句子。此時可以使用NLTK中的punktsentencesegmenter。來看示例代碼

>>> sent_tokenizer = nltk.data.load('tokenizers/punkt/english.pickle') >>> paragraph = "The first time I heard that song was in Hawaii on radio.  ... I was just a kid, and loved it very much! What a fantastic song!" >>> sentences = sent_tokenizer.tokenize(paragraph) >>> sentences ['The first time I heard that song was in Hawaii on radio.',   'I was just a kid, and loved it very much!',   'What a fantastic song!'] 

由此,我們便把一段話成功分句了。

2、SentencesSegment(分詞)

接下來我們要把每個句話再切割成逐個單詞。最簡單的方法是使用NLTK包中的WordPuncttokenizer。來看示例代碼

>>> from nltk.tokenize import WordPunctTokenizer >>> sentence = "Are you old enough to remember Michael Jackson attending  ... the Grammys with Brooke Shields and Webster sat on his lap during the show?" >>> words = WordPunctTokenizer().tokenize(sentence) >>> words ['Are', 'you', 'old', 'enough', 'to', 'remember', 'Michael', 'Jackson', 'attending',  'the', 'Grammys', 'with', 'Brooke', 'Shields', 'and', 'Webster', 'sat', 'on', 'his',  'lap', 'during', 'the', 'show', '?'] 

我們的分詞任務仍然完成的很好。除了WordPunct tokenizer之外,NLTK中還提供有另外三個分詞方法,
TreebankWordTokenizer,PunktWordTokenizer和WhitespaceTokenizer,而且他們的用法與WordPunct tokenizer也類似。然而,顯然我們并不滿足于此。對于比較復雜的詞型,WordPunct tokenizer往往并不勝任。此時我們需要借助正則表達式的強大能力來完成分詞任務,此時我所使用的函數是regexp_tokenize()。來看下面這段話

>>> text = 'That U.S.A. poster-print costs $12.40...' 

目前市面上可以參考的在Python下進行自然語言處理的書籍是由Steven Bird、Ewan Klein、Edward Loper編寫的Python 自然語言處理。但是該書的編寫時間距今已有近十年的時間,由于軟件包更新等語言,在新環境下進行開發時,書中的某些代碼并不能很正常的運行。最后,我們舉一個書中代碼out of date的例子(對上面這就話進行分詞),并給出相應的解決辦法。首先來看書中的一段節錄

>>> text = 'That U.S.A. poster-print costs $12.40...' >>> pattern = r'''''(?x)  # set flag to allow verbose regexps ...   ([A-Z]/.)+    # abbreviations, e.g. U.S.A. ...  | /w+(-/w+)*    # words with optional internal hyphens ...  | /$?/d+(/./d+)?%? # currency and percentages, e.g. $12.40, 82% ...  | /././.      # ellipsis ...  | [][.,;"'?():-_`] # these are separate tokens; includes ], [ ... ''' >>> nltk.regexp_tokenize(text, pattern) 

我們預期得到輸出應該是這樣的

['That', 'U.S.A.', 'poster-print', 'costs', '$12.40', '...'] 

但是我們實際得到的輸出卻是這樣的(注意我們所使用的NLTK版本)

[('', '', ''),  ('A.', '', ''),  ('', '-print', ''),  ('', '', ''),  ('', '', '.40'),  ('', '', '')] 

會出現這樣的問題是由于nltk.internals.compile_regexp_to_noncapturing()在V3.1版本的NLTK中已經被拋棄(盡管在更早的版本中它仍然可以運行),為此我們把之前定義的pattern稍作修改

pattern = r"""(?x)          # set flag to allow verbose regexps        (?:[A-Z]/.)+      # abbreviations, e.g. U.S.A.        |/d+(?:/./d+)?%?    # numbers, incl. currency and percentages        |/w+(?:[-']/w+)*    # words w/ optional internal hyphens/apostrophe        |/././.        # ellipsis        |(?:[.,;"'?():-_`])  # special characters with meanings       """ 

再次執行前面的語句,便會得到

>>> nltk.regexp_tokenize(text, pattern) ['That', 'U.S.A.', 'poster-print', 'costs', '12.40', '...'] 

以上便是我們對NLTK這個自然語言處理工具包的初步探索,日后主頁君將結合機器學習中的方法再來探討一些更為深入的應用。最后,我想說Python 自然語言處理仍然是當前非常值得推薦的一本講述利用NLTK和Python進行自然語言處理技術的非常值得推薦的書籍。

總結

以上就是本文關于Python編程使用NLTK進行自然語言處理詳解的全部內容,希望對大家有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武定县| 曲靖市| 长治县| 浦城县| 拉萨市| 恩平市| 普陀区| 阿拉善左旗| 治多县| 隆化县| 双柏县| 苏尼特右旗| 山阴县| 宣恩县| 昌宁县| 什邡市| 隆子县| 渭源县| 灵台县| 尼木县| 祁门县| 静安区| 灵武市| 益阳市| 十堰市| 资兴市| 新津县| 新竹市| 邹平县| 奈曼旗| 略阳县| 深圳市| 南岸区| 广汉市| 怀集县| 铜陵市| 尼勒克县| 宁蒗| 都昌县| 大新县| 辽宁省|