03-2 自然語言處理工具包NLTK_第1頁
03-2 自然語言處理工具包NLTK_第2頁
03-2 自然語言處理工具包NLTK_第3頁
03-2 自然語言處理工具包NLTK_第4頁
03-2 自然語言處理工具包NLTK_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

語料庫基礎Python自然語言處理第三章CONTENT目錄

01語料庫基礎03獲取語料庫02自然語言處理工具包NLTK04綜合案例:走進紅樓夢課前回顧語料庫的基礎自然語言處理工具包NLTK02NLTK簡介安裝NLTK使用NLTKStanfordNLPNLTK簡介

NLTK(NaturallanguageToolkit):自然語言工具包,Python編程語言實現的統計自然語言處理工具。

NLTK由StevenBird和EdwardLoper在賓夕法尼亞大學計算機和信息科學系開發。在NLP領域中,NLTK是最常使用的一個Python庫,其收集的大量公開數據集提供了全面易用的接口,涵蓋了分詞、詞性標注、命名實體識別、句法分析等各項NLP領域的功能,廣泛應用在經驗語言學、認知科學、人工智能、信息檢索和機器學習。NLTK簡介語言處理任務與相應NLTK模塊以及功能描述如右表所示:自然語言處理工具包NLTK02NLTK簡介安裝NLTK使用NLTKStanfordNLP安裝NLTK步驟一:查看Python版本,打開一個終端,輸入命令:python,獲取當前系統安裝的python版本信息,如下圖所示:安裝NLTK步驟二:根據Python版本,在官網找到合適的安裝介質進行下載安裝,或者在命令行窗口直接輸入命令:pipinstallnltk或pip--default-timeout=100installnltk(命令中添加--default-timeout=100可以改善安裝超時問題)進行自動安裝。步驟三:此步驟主要是通過將域名更換為IP地址解決Github鏈接無法訪問的問題。使用命令sudovi/etc/hosts修改系統IP映射文件,在hosts文件最后添加一條IP映射信息,內容為:199.232.68.133,添加好后保存退出。安裝NLTK步驟四:執行“importnltk”和“nltk.download()”命令下載NLTK數據包,運行成功后彈出NLTKDownloader,選中book,根據實際情況修改下載路徑如:/home/ubuntu/nltk_data(book包含了數據案例和內置函數),如下圖所示:

安裝NLTK步驟五:環境變量配置,在/etc/profile文件最后添加命令:exportPATH=$PATH:/home/ubuntu/nltk_data,保存退出后,使用命令source/etc/profile讓配置生效。步驟六:打開Python解釋器輸入代碼“fromnltk.bookimport*”,出現以下內容則表示安裝成功。

自然語言處理工具包NLTK02NLTK簡介安裝NLTK使用NLTKStanfordNLPNLTK加載book模塊將book模塊導入,操作如圖所示:輸入命令

fromnltk.bookimport*出現以下內容,說明環境已經裝好了輸入text1,顯示如圖內容常用統計函數常用統計函數常用統計函數的使用方法和運行結果如下所示:函數concordance

在text1一文中檢索“American”,可使用concordance函數處理,它不僅可以展示全文所有“American”出現的地方及其上下文,也可以以對齊方式打印出來,便于對比分析。輸入代碼“text1.concordance('America')”,執行結果首先顯示總共出現12次,緊接著以對齊方式展示全文所有出現“American”出現的地方及其上下文,運行效果如下所示:函數similar

在text1中檢索與‘very’相似的上下文,可使用similar函數進行處理,輸入代碼“text1.similar('very')”即可,運行效果如下所示:函數common_contexts當需要搜索共用多個詞匯的上下文,而不是檢索某個單詞時,可使用common_contexts函數處理,可輸入代碼mon_contexts(['a','very']),運行效果如下所示:函數dispersion_plot判斷詞在文本中的位置,從開頭算起有多少次出現,可以用離散圖表示,每一列代表一個單詞,每一行代表一個文本。使用代碼:text1.dispersion_plot([“The”,“Moby”,“Dick”,“America”])運行效果如圖所示:函數FreqDist()對文本中詞匯分布進行統計時,可以使用使用函數FreqDist進行處理,實現代碼:fdist1=FreqDist(text1),通過統計結果可以發現詞匯的分布情況,運行結果如下所示:還可以指定查詢某個詞的使用頻率,如查看“the”的使用頻率,實現代碼為:fdist1['the'],運行結果如下所示:函數FreqDist()還可以查看指定個數常用詞的累積頻率圖,實現代碼:fdist1.plot(50,cumulative=True),查看text1中50個常用詞的累積頻率圖,運行結果如圖所示:NLTK頻率分布類中定義的函數

NLTK頻率分布類中定義的常用函數如表所示:詞匯比較運算

詞匯比較運算常用的函數如表所示(注意:s代表字符串):自然語言處理工具包NLTK02NLTK簡介安裝NLTK使用NLTKStanfordNLPStanfordNLP簡介StanfordNLP:由斯坦福大學的NLP世界知名研究小組開發,由Java實現的NLP開源工具包,對NLP領域的各類問題提供了解決辦法。2004年,在NLTK中加上了對StanfordNLP工具包的支持,通過調用外部的jar文件來使用StanfordNLP工具包的功能,這樣一來就變得更為方便好用。現在的NLTK中,通過封裝提供了StanfordNLP中的以下幾個功能:分詞:StanfordTokenizer。詞性標注:StanfordPOSTagger。命名實體識別:StanfordNERTagger。句法分析:StanfordParser。依存句法分析:StanfordDependencyParser。StanfordNLP安裝本課程安裝環境及版本說明:Python3.6.4NLTK3.5Java1.8.0_201StanfordNLP安裝步驟一:stanfordNLTK安裝包stanfordNLTK.zip下載(下載鏈接:/s/1L4gvbWX4G8H7qMaNc71W6g提取碼:zryy),該鏈接包含所有需要的包和相關文件。StanfordNLP各功能工具包在NLTK中所依賴相關文件如下:分詞依賴:stanford-segmenter.jar、slf4j-api.jar、data文件夾相關子文件。命名實體識別依賴:stanford-ner.jar。詞性標注依賴:models、stanford-postagger.jar。句法分析依賴:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers。依存語法分析依賴:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers。StanfordNLP安裝步驟二:NLTK工具包nltk-develop.zip下載(下載鏈接:/s/1xy3CUFNb5MW5kVWtMo1vmg提取碼:zryy)該工具包提供StandfordNLP接口。步驟三:將stanfordNLTK和NLTK安裝包解壓后,復制文件夾到Python安裝主路徑下(本書Python安裝目錄為:/usr/local/bin/python3),然后進入NLTK解壓文件夾下通過pythonsetup.pyinstall命令安裝即可(安裝路徑注意根據實際情況進行修改)。StanfordNLP應用在StanfordNLP簡介中了解到StanfordNLP中有幾個主要功能分別是分詞、詞性標注、命名實體識別、句法分析、依存句法分析等,接下來對如何應用這五個常用功能進行詳細的說明。StanfordNLP應用(1)分詞分詞功能簡單可以理解為將一段完整的語料進行詞語的分割功能,例如:使用StanfordSegmenter進行中文分詞:將“我中午要去北京飯店,下午去中山公園,晚上回亞運村。”語句進行詞語的分割,實現代碼如下所示:fromnltk.tokenize.stanford_segmenterimportStanfordSegmentersegmenter=StanfordSegmenter(path_to_jar=r"/usr/local/bin/python3/stanfordNLTK/stanford-segmenter.jar",path_to_slf4j=r"/usr/local/bin/python3/stanfordNLTK/slf4j-api.jar",path_to_sihan_corpora_dict=r"/usr/local/bin/python3/stanfordNLTK/data",path_to_model=r"/usr/local/bin/python3/stanfordNLTK/data/pku.gz",path_to_dict=r"/usr/local/bin/python3/stanfordNLTK/data/dict-chris6.ser.gz")str="我中午要去北京飯店,下午去中山公園,晚上回亞運村。"result=segmenter.segment(str)print(result)運行結果為:我中午要去北京飯店,下午去中山公園,晚上回亞運村。StanfordNLP應用(2)詞性標注詞性標注(part-of-speechtagging),又稱為詞類標注或者簡稱標注,是指為分詞結果中的每個單詞標注一個正確的詞性的程序,也即確定每個詞是名詞、動詞、形容詞或者其他詞性的過程,接下來使用StanfordPOSTagger進行中文詞性標注。同樣對“我中午要去北京飯店,下午去中山公園,晚上回亞運村。\r\n”中的名詞進行詞性標注,實現代碼如下:fromnltk.tagimportStanfordPOSTaggerchi_tagger=StanfordPOSTagger(model_filename=r'/usr/local/bin/python3/stanfordNLTK/models/chinese-distsim.tagger',path_to_jar=r'/usr/local/bin/python3/stanfordNLTK/stanford-postagger.jar')result='我中午要去北京飯店,下午去中山公園,晚上回亞運村。\r\n’print(chi_tagger.tag(result.split()))運行結果為:[('','我#PN'),('','中午#NT'),('','要#VV'),('','去#VV'),('','北京#NR'),('','飯店#NN'),('',',#PU'),('','下午#NT'),('','去#VV'),('','中山#NR'),('','公園#NN'),('',',#PU'),('','晚上#NT'),('','回#VV'),('','亞運村#NR'),('','。#PU’)]StanfordNLP應用(3)命名實體識別命名實體識別(NamedEntityRecognition,簡稱NER),又稱作"專名識別",是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等,接下來使用StanfordNERTagger進行中文命名實體識別。同樣對“我中午要去北京飯店,下午去中山公園,晚上回亞運村。\r\n”中的名詞進行識別,實現代碼如下:fromnltk.tagimportStanfordNERTaggerchi_tagger=StanfordNERTagger(model_filename=r'/usr/local/bin/python3/stanfordNLTK/classifiers/chinese.misc.distsim.crf.ser.gz',path_to_jar=r'/usr/local/bin/python3/stanfordNLTK/stanford-ner.jar')result="我中午要去北京飯店,下午去中山公園,晚上回亞運村。\r\n"forword,taginchi_tagger.tag(result.split()):print(word,tag)StanfordNLP應用運行結果如下:StanfordNLP應用(4)句法分析句法分析在分析單個詞的詞性的基礎上,嘗試分析詞與詞之間的關系,并用這種關系來表示句子的結構。實際上,句法結構可以分為兩種,一種是短語結構,另一種是依存結構。前者按句子順序來提取句法結構,后者則按詞與詞之間的句法關系來提取句子結構。這里說的句法分析得到的是短語結構。進行中文的句法分析,需要指定中文的模型,可用的中文模型有以下幾種,分別是:'edu/stanford/nlp/models/lexparser/chinesePCFG.ser.gz''edu/stanford/nlp/models/lexparser/chineseFactored.ser.gz''edu/stanford/nlp/models/lexparser/xinhuaPCFG.ser.gz''edu/stanford/nlp/models/lexparser/xinhuaFactored.ser.gz''edu/stanford/nlp/models/lexparser/xinhuaFactoredSegmenting.ser.gz'StanfordNLP應用其中factored包含詞匯化信息,PCFG是更快更小的模板,xinhua據說是根據大陸的《新華日報》訓練的語料,而chinese同時包含香港和臺灣的語料,xinhuaFactoredSegmenting.ser.gz可以對未分詞的句子進行句法解析。以下句法分析的代碼中用的是chinesePCFG.ser.gz,使用StanfordParser進行中文句法分析,對“語料庫以電子計算機為載體承載語言知識的基礎資源,但并不等于語言知識。”進行句法分析,實現代碼如下:fromnltk.parse.stanfordimportStanfordParserchi_parser=StanfordParser(r"/usr/local/bin/python3/stanfordNLTK/stanford-parser.jar",r"/usr/local/bin/python3/stanfordNLTK/stanford-parser-3.6.0-models.jar",r"/usr/local/bin/python3/stanfordNLTK/classifiers/chinesePCFG.ser.gz")sent=u'語料庫以電子計算機為載體承載語言知識的基礎資源,但并不等于語言知識。'print(list(chi_parser.parse(sent.split())))StanfordNLP應用注意:StanfordParser的初始化參數中所需要使用的文件都在StanfordNLTK安裝包中,編寫代碼時,路徑需根據實際情況進行修改。運行結果如下:StanfordNLP應

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論