最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

NLTK

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

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

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

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

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

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

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

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往往并不勝任。此時我們需要借助正則表達式的強大能力來完成分詞任務,此時我所使用的函數(shù)是regexp_tokenize()。來看下面這段話

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

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

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

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

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

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

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

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

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

總結

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

python中requests庫session對象的妙用詳解

13個最常用的Python深度學習庫介紹

python爬蟲系列Selenium定向爬取虎撲籃球圖片詳解

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

相關文章

  • python實現(xiàn)對象列表根據(jù)某個屬性排序的方法詳解

    python實現(xiàn)對象列表根據(jù)某個屬性排序的方法詳解

    這篇文章主要介紹了python實現(xiàn)對象列表根據(jù)某個屬性排序的方法,結合具體實例形式詳細分析了Python對象列表遍歷、排序的兩種常見操作技巧,需要的朋友可以參考下
    2019-06-06
  • Python密碼學仿射密碼及攻擊單字母密碼教程

    Python密碼學仿射密碼及攻擊單字母密碼教程

    這篇文章主要為大家介紹了Python密碼學仿射及攻擊單字母密碼教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • PyTorch中permute的基本用法示例

    PyTorch中permute的基本用法示例

    pytorch中的permute就像是numpy中的transpose()函數(shù)一樣,根據(jù)指定的維度進行轉置,下面這篇文章主要給大家介紹了關于PyTorch中permute的基本用法,需要的朋友可以參考下
    2022-04-04
  • CentOS中使用virtualenv搭建python3環(huán)境

    CentOS中使用virtualenv搭建python3環(huán)境

    virtualenv可以搭建虛擬且獨立的python環(huán)境,可以使每個項目環(huán)境與其他項目獨立開來,保持環(huán)境的干凈,解決包沖突問題。下面我們來詳細探討下centos中如何來搭建。
    2015-06-06
  • python2.7實現(xiàn)復制大量文件及文件夾資料

    python2.7實現(xiàn)復制大量文件及文件夾資料

    這篇文章主要為大家詳細介紹了python2.7實現(xiàn)復制大量文件及文件夾資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • python實現(xiàn)希爾密碼加密的示例代碼

    python實現(xiàn)希爾密碼加密的示例代碼

    本文主要介紹了python實現(xiàn)希爾密碼加密,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 如何使用Python保存PPT中的形狀為圖像文件

    如何使用Python保存PPT中的形狀為圖像文件

    將PowerPoint演示文稿中的形狀(幻燈片中的內(nèi)容元素,包括文本框、圖形、圖片、圖表等)保存為圖片是方便內(nèi)容跨平臺分享和再利用的有效手段,本文將演示如何使用Python保存PowerPoint演示文稿中的形狀為圖像文件,需要的朋友可以參考下
    2024-10-10
  • Python考拉茲猜想輸出序列代碼實踐

    Python考拉茲猜想輸出序列代碼實踐

    這篇文章主要介紹了Python考拉茲猜想輸出序列代碼實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python實現(xiàn)批量視頻分幀、保存視頻幀

    python實現(xiàn)批量視頻分幀、保存視頻幀

    這篇文章主要為大家詳細介紹了python實現(xiàn)批量視頻分幀、保存視頻幀,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • pytorch 實現(xiàn)在預訓練模型的 input上增減通道

    pytorch 實現(xiàn)在預訓練模型的 input上增減通道

    今天小編就為大家分享一篇pytorch 實現(xiàn)在預訓練模型的 input上增減通道,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論

同心县| 西充县| 平潭县| 永年县| 克什克腾旗| 黎平县| 沛县| 紫金县| 新沂市| 英德市| 肃北| 永春县| 洞头县| 介休市| 威信县| 乌什县| 鄂尔多斯市| 永吉县| 南陵县| 明溪县| 荃湾区| 故城县| 静安区| 和田县| 沾化县| 武城县| 濉溪县| 华亭县| 岫岩| 怀安县| 嘉黎县| 曲水县| 大宁县| 巨野县| 康定县| 朝阳区| 奉节县| 肇东市| 北京市| 公主岭市| 阜康市|