03-2 自然語(yǔ)言處理工具包NLTK_第1頁(yè)
03-2 自然語(yǔ)言處理工具包NLTK_第2頁(yè)
03-2 自然語(yǔ)言處理工具包NLTK_第3頁(yè)
03-2 自然語(yǔ)言處理工具包NLTK_第4頁(yè)
03-2 自然語(yǔ)言處理工具包NLTK_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

語(yǔ)料庫(kù)基礎(chǔ)Python自然語(yǔ)言處理第三章CONTENT目錄

01語(yǔ)料庫(kù)基礎(chǔ)03獲取語(yǔ)料庫(kù)02自然語(yǔ)言處理工具包NLTK04綜合案例:走進(jìn)紅樓夢(mèng)課前回顧語(yǔ)料庫(kù)的基礎(chǔ)自然語(yǔ)言處理工具包NLTK02NLTK簡(jiǎn)介安裝NLTK使用NLTKStanfordNLPNLTK簡(jiǎn)介

NLTK(NaturallanguageToolkit):自然語(yǔ)言工具包,Python編程語(yǔ)言實(shí)現(xiàn)的統(tǒng)計(jì)自然語(yǔ)言處理工具。

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

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

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

fromnltk.bookimport*出現(xiàn)以下內(nèi)容,說(shuō)明環(huán)境已經(jīng)裝好了輸入text1,顯示如圖內(nèi)容常用統(tǒng)計(jì)函數(shù)常用統(tǒng)計(jì)函數(shù)常用統(tǒng)計(jì)函數(shù)的使用方法和運(yùn)行結(jié)果如下所示:函數(shù)concordance

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論