欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python編程使用NLTK進(jìn)行自然語(yǔ)言處理詳解

 更新時(shí)間:2017年11月16日 09:16:23   作者:白馬負(fù)金羈  
這篇文章主要介紹了Python編程使用NLTK進(jìn)行自然語(yǔ)言處理詳解,涉及了nltk和開(kāi)發(fā)環(huán)境的簡(jiǎn)單介紹,以及SentencesSegment,SentencesSegment等內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。

自然語(yǔ)言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。自然語(yǔ)言工具箱(NLTK,NaturalLanguageToolkit)是一個(gè)基于Python語(yǔ)言的類庫(kù),它也是當(dāng)前最為流行的自然語(yǔ)言編程與開(kāi)發(fā)工具。在進(jìn)行自然語(yǔ)言處理研究和應(yīng)用時(shí),恰當(dāng)利用NLTK中提供的函數(shù)可以大幅度地提高效率。本文就將通過(guò)一些實(shí)例來(lái)向讀者介紹NLTK的使用。

NLTK

NaturalLanguageToolkit,自然語(yǔ)言處理工具包,在NLP領(lǐng)域中,最常使用的一個(gè)Python庫(kù)。

NLTK是一個(gè)開(kāi)源的項(xiàng)目,包含:Python模塊,數(shù)據(jù)集和教程,用于NLP的研究和開(kāi)發(fā)  。
NLTK由Steven Bird和Edward Loper在賓夕法尼亞大學(xué)計(jì)算機(jī)和信息科學(xué)系開(kāi)發(fā)。
NLTK包括圖形演示和示例數(shù)據(jù)。其提供的教程解釋了工具包支持的語(yǔ)言處理任務(wù)背后的基本概念。

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

當(dāng)然,當(dāng)你完成這一步時(shí),其實(shí)還不夠。因?yàn)镹LTK是由許多許多的包來(lái)構(gòu)成的,此時(shí)運(yùn)行Python,并輸入下面的指令(當(dāng)然,第一條指令還是要導(dǎo)入NLTK包)

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

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

既然你已經(jīng)安裝成功,我們來(lái)小試牛刀一下。當(dāng)然本文涉及的主要任務(wù)都是自然語(yǔ)言處理中最常用,最基礎(chǔ)的pre-processing過(guò)程,結(jié)合機(jī)器學(xué)習(xí)的高級(jí)應(yīng)用我們會(huì)在后續(xù)文章中再進(jìn)行介紹。

1、SentencesSegment(分句)

也就是說(shuō)我們手頭有一段文本,我們希望把它分成一個(gè)一個(gè)的句子。此時(shí)可以使用NLTK中的punktsentencesegmenter。來(lái)看示例代碼

>>> 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(分詞)

接下來(lái)我們要把每個(gè)句話再切割成逐個(gè)單詞。最簡(jiǎn)單的方法是使用NLTK包中的WordPuncttokenizer。來(lái)看示例代碼

>>> 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', '?'] 

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

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

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

>>> 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) 

我們預(yù)期得到輸出應(yīng)該是這樣的

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

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

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

會(huì)出現(xiàn)這樣的問(wèn)題是由于nltk.internals.compile_regexp_to_noncapturing()在V3.1版本的NLTK中已經(jīng)被拋棄(盡管在更早的版本中它仍然可以運(yùn)行),為此我們把之前定義的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 
      """ 

再次執(zhí)行前面的語(yǔ)句,便會(huì)得到

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

以上便是我們對(duì)NLTK這個(gè)自然語(yǔ)言處理工具包的初步探索,日后主頁(yè)君將結(jié)合機(jī)器學(xué)習(xí)中的方法再來(lái)探討一些更為深入的應(yīng)用。最后,我想說(shuō)Python 自然語(yǔ)言處理仍然是當(dāng)前非常值得推薦的一本講述利用NLTK和Python進(jìn)行自然語(yǔ)言處理技術(shù)的非常值得推薦的書籍。

總結(jié)

以上就是本文關(guān)于Python編程使用NLTK進(jìn)行自然語(yǔ)言處理詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

python中requests庫(kù)session對(duì)象的妙用詳解

13個(gè)最常用的Python深度學(xué)習(xí)庫(kù)介紹

python爬蟲(chóng)系列Selenium定向爬取虎撲籃球圖片詳解

如有不足之處,歡迎留言指出。

相關(guān)文章

  • 簡(jiǎn)單了解python 郵件模塊的使用方法

    簡(jiǎn)單了解python 郵件模塊的使用方法

    這篇文章主要介紹了簡(jiǎn)單了解python 郵件模塊的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • flask重啟后端口被占用的問(wèn)題解決(非kill)

    flask重啟后端口被占用的問(wèn)題解決(非kill)

    本文主要介紹了flask重啟后端口被占用的問(wèn)題解決(非kill),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例

    Python設(shè)計(jì)模式之觀察者模式簡(jiǎn)單示例

    這篇文章主要介紹了Python設(shè)計(jì)模式之觀察者模式,簡(jiǎn)單描述了觀察者模式的概念、原理,并結(jié)合實(shí)例形式分析了Python觀察者模式的相關(guān)定義與使用技巧,需要的朋友可以參考下
    2018-01-01
  • python爬蟲(chóng)看看虎牙女主播中誰(shuí)最“頂”步驟詳解

    python爬蟲(chóng)看看虎牙女主播中誰(shuí)最“頂”步驟詳解

    這篇文章主要介紹了python爬蟲(chóng)看看虎牙女主播中誰(shuí)最“頂”,本文分步驟通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Python實(shí)現(xiàn)JavaBeans流程詳解

    Python實(shí)現(xiàn)JavaBeans流程詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)JavaBeans流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-01-01
  • Python自動(dòng)化辦公之讀取Excel數(shù)據(jù)的實(shí)現(xiàn)

    Python自動(dòng)化辦公之讀取Excel數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Python實(shí)現(xiàn)Excel數(shù)據(jù)的讀取,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)(二)

    python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)(二)

    這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)第二篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Python爬取YY評(píng)級(jí)分?jǐn)?shù)并保存數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析

    Python爬取YY評(píng)級(jí)分?jǐn)?shù)并保存數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python爬取YY評(píng)級(jí)分?jǐn)?shù)并保存數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python 常用的異步框架匯總整理

    python 常用的異步框架匯總整理

    自從python3推出關(guān)于異步編程的新語(yǔ)法之后,關(guān)于異步web框架也是如雨后春筍一般爆發(fā),關(guān)于 異步框架的性能也日漸激烈。今天就整理關(guān)于 python 的異步框架。
    2021-06-06
  • Python+ChatGPT實(shí)現(xiàn)5分鐘快速上手編程

    Python+ChatGPT實(shí)現(xiàn)5分鐘快速上手編程

    最近一段時(shí)間chatGPT火爆出圈!無(wú)論是在互聯(lián)網(wǎng)行業(yè),還是其他各行業(yè)都賺足了話題。俗話說(shuō):“外行看笑話,內(nèi)行看門道”,今天從chatGPT個(gè)人體驗(yàn)感受以及如何用的角度來(lái)分享一下
    2023-02-02

最新評(píng)論