Python數(shù)據(jù)分析與應用-從數(shù)據(jù)獲取到可視化(第2版)課件 第8章 文本數(shù)據(jù)分析_第1頁
Python數(shù)據(jù)分析與應用-從數(shù)據(jù)獲取到可視化(第2版)課件 第8章 文本數(shù)據(jù)分析_第2頁
Python數(shù)據(jù)分析與應用-從數(shù)據(jù)獲取到可視化(第2版)課件 第8章 文本數(shù)據(jù)分析_第3頁
Python數(shù)據(jù)分析與應用-從數(shù)據(jù)獲取到可視化(第2版)課件 第8章 文本數(shù)據(jù)分析_第4頁
Python數(shù)據(jù)分析與應用-從數(shù)據(jù)獲取到可視化(第2版)課件 第8章 文本數(shù)據(jù)分析_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章文本數(shù)據(jù)分析《Python數(shù)據(jù)分析與應用:從數(shù)據(jù)獲取到可視化(第2版)》學習目標/Target

了解NLTK與jieba庫,能夠說明NLTK與jieba庫的用途

掌握NLTK語料庫的安裝,能夠在計算機中成功安裝NLTK語料庫

熟悉文本預處理的流程,能夠歸納出文本預處理的基本流程

掌握分詞的方式,能夠通過NLTK與jieba庫對文本進行分詞

掌握詞性標注的方式,能夠通過pos_tag()函數(shù)對英文文本進行分詞標注學習目標/Target

掌握詞形歸一化操作,能夠通過stem模塊實現(xiàn)詞性歸一化的操作

掌握刪除停用詞操作,能夠通過stopwords模塊實現(xiàn)刪除停用詞的操作

熟悉文本情感分析,能夠通過多種方式實現(xiàn)簡單的文本情感分析

熟悉文本相似度,可以結合NLTK與余弦相似度實現(xiàn)簡單的文本相似度分析

熟悉文本分類,可以結合NLTK與樸素貝葉斯算法實現(xiàn)簡單的文本分類分析章節(jié)概述/Summary自然語言處理(NLP)是人工智能領域一個重要方向,在這一方向上文本數(shù)據(jù)占據(jù)著很大的市場,由于文本中可能包含中文、英文等一些語言的內容,所以Python針對不同語言的文本提供了相應的庫進行處理,常見的有用于處理英文文本的NLTK庫,用于處理中文文本的jieba庫。接下來,本章主要圍繞著NLTK和jieba庫介紹文本預處理的基本流程,以及文本數(shù)據(jù)分析的經典應用,包括文本情感分析、文本相似度和文本分類。目錄/Contents01文本數(shù)據(jù)分析的工具02文本預處理03文本情感分析目錄/Contents04文本相似度05文本分類06案例:商品評論分析文本數(shù)據(jù)分析的工具8.18.1.1

認識NLTK與jieba了解NLTK與jieba庫,能夠說出NLTK與jieba庫的用途學習目標8.1.1

認識NLTK與jiebaNLTK全稱為NaturalLanguageToolkit,它是一套基于Python的自然語言處理工具包,可以方便地完成自然語言處理的任務,包括分詞、詞性標注、命名實體識別(NER)及句法分析等。NLTK概念8.1.1

認識NLTK與jiebaNLTK常用模塊語言處理任務模塊功能描述獲取和處理語料庫nltk.corpus語料庫和詞典的標準化接口字符串處理nltk.tokenize,nltk.stem分詞、句子分解、提取主干搭配探究nltk.collocations用于識別搭配工具,查找單詞之間的關聯(lián)關系詞性標識符nltk.tag用于詞性標注的類和接口分類nltk.classify,nltk.clusternltk.classify是用類別標簽標記的接口;nltk.cluster包含了許多聚類算法分塊nltk.chunk在不受限制的文本識別非重疊語言組的類和接口NLTK是免費開源的,它為超過50個語料庫和詞匯資源提供了易于使用的接口,以及一套用于分類、標記化、詞干化、解析和語義推理的模塊。8.1.1

認識NLTK與jiebaNLTK常用模塊語言處理任務模塊功能描述解析nltk.parse對圖表、概率等解析的接口語義解釋nltk.sem,nltk.inference一階邏輯、模型檢驗指標評測nltk.metrics精度、召回率、協(xié)議系數(shù)概率與估計bability計算頻率分布、平滑概率分布應用nltk.app,nltk.chat圖形化的關鍵詞排序、分析器、WordNet查看器、聊天機器人語言學領域的工作nltk.toolbox處理SIL工具箱格式的數(shù)據(jù)NLTK是免費開源的,它為超過50個語料庫和詞匯資源提供了易于使用的接口,以及一套用于分類、標記化、詞干化、解析和語義推理的模塊。8.1.1

認識NLTK與jiebajieba概念jieba庫用于實現(xiàn)中文分詞的功能,中文分詞指的是將中文語句或語段拆成若干漢語詞匯。我是一個學生學生我是一個學生我是一個8.1.1

認識NLTK與jiebajieba特點1.支持三種分詞模式3.支持繁體分詞2.支持自定義詞典4.MIT授權協(xié)議精確模式:會將文本中的句子最精準地切分。全模式:會將文本中的所有可以成詞的詞語全部掃描出來。搜索引擎模式:在精確模式的基礎上對長詞進行再次切分。8.1.2

安裝jieba和NLTK語料庫掌握NLTK語料庫的安裝,能夠在計算機中成功安裝NLTK語料庫學習目標8.1.2

安裝jieba和NLTK語料庫如果希望使用NLTK和jieba庫處理文本數(shù)據(jù),則需要在當前的開發(fā)環(huán)境中安裝這兩個庫。由于Anaconda工具中默認已經自動安裝了NLTK,所以這里我們只需要在Anaconda命令行工具中安裝jieba庫。安裝jieba>>>pip

install

jieba……Installingcollectedpackages:jiebaSuccessfullyinstalledjieba-0.42.18.1.2

安裝jieba和NLTK語料庫安裝完以后,在命令行工具中進入Python環(huán)境,然后輸入導入jieba庫的語句測試是否安裝成功。安裝jieba>>>import

jieba8.1.2

安裝jieba和NLTK語料庫NLTK庫中附帶了許多語料庫(指經科學取樣和加工的大規(guī)模電子文本庫)、玩具語法、訓練模型等,Anaconda工具中雖然已經自動安裝了NLTK庫,但是并沒有安裝語料庫。安裝NLTK語料庫importnltknltk.download()8.1.2

安裝jieba和NLTK語料庫安裝NLTK語料庫集合語料庫模型所有包下載數(shù)據(jù)包的目錄8.1.2

安裝jieba和NLTK語料庫安裝NLTK語料庫將下載目錄更改為C:\nltk_data。

8.1.2

安裝jieba和NLTK語料庫安裝NLTK語料庫1.下載所有選項2.下載部分選項

8.1.2

安裝jieba和NLTK語料庫安裝NLTK語料庫在使用NLTKDownloader下載數(shù)據(jù)包時,可能會因為網絡受限而出現(xiàn)下載失敗的問題,此時大家可以采用手動安裝的方式解決,解決思路是,首先到NLTK官網找到數(shù)據(jù)包列表,然后根據(jù)自己需求下載數(shù)據(jù)包,并將下載后的數(shù)據(jù)包解壓后放到C:\nltk_data目錄下。8.1.2

安裝jieba和NLTK語料庫驗證NLTK語料庫下載完成以后,我們可以輸入導入語料庫brown的語句測試語料庫是否下載成功。fromnltk.corpusimportbrownbrown.words()

8.1.2

安裝jieba和NLTK語料庫驗證NLTK語料庫還可以通過categories()函數(shù)查看brown中包含的類別。brown.categories()'brown中一共有{}個句子'.format(len(brown.sents()))'brown中一共有{}個單詞'.format(len(brown.words()))還可以查看brown語料庫中包含的單詞或句子的總個數(shù)。文本預處理8.28.2.1

基本流程熟悉文本預處理的流程,能夠歸納出文本預處理的基本流程學習目標8.2.1

基本流程文本數(shù)據(jù)不能直接被用來分析,它里面可能會包含一些對數(shù)據(jù)分析沒有任何參考意義的內容,為此我們在分析之前需要對文本數(shù)據(jù)進行一系列的預處理操作,包括分詞、詞形統(tǒng)一化、刪除停用詞等,這樣可以提升文本數(shù)據(jù)的質量。8.2.1

基本流程基本流程8.2.1

基本流程基本流程1.

分詞文本分詞是預處理過程中必不可少的一個操作,它可以分為兩步,第一步是構造詞典,第二步是分詞算法的操作。構造詞典比較流行的實現(xiàn)方式是雙數(shù)組的trie樹。分詞算法常見的主要有正向最大匹配、反向最大匹配、雙向最大匹配、語言模型方法、最短路徑算法等。8.2.1

基本流程基本流程2.

詞形歸一化詞形歸一化包括詞干提取和詞形還原,它們的目的都是為了減少單詞曲折變化的形式,將派生詞轉化為基本形式?;谟⑽恼Z法的要求,英文文本中經常會用到單詞的不同形態(tài),例如,一般現(xiàn)在時的單詞do、現(xiàn)在進行時的doing等,另外也有大量意義相近的同源詞,比如able、unable、disability。如果希望只輸入一個詞,就能夠返回它所有的同源詞文檔,那么這樣的搜索是非常有用的。am,are,is—be

cars,

car's,

cars'—car

8.2.1

基本流程基本流程3.

刪除停用詞停用詞是指在信息檢索中,為節(jié)省存儲空間和提高搜索效率,在處理文本之前或之后會自動過濾掉的某些字或詞。刪除停用詞是非常有必要的,主要是因為文本中的每個單詞或字并不是都能夠表明文本的特征,比如“的”、“是”、“這”、“啊”等,這些詞應該從文本中刪除。我們可以在網上下載一份中文或英文的停用詞表作為刪除停用詞的參考。8.2.2

分詞掌握分詞的方式,能夠通過NLTK與jieba庫對文本進行分詞學習目標8.2.2

分詞分詞是指將由連續(xù)詞或字組成的語句,按照一定的規(guī)則劃分成獨立詞語的過程。概念英文的句子以空格為分界符,可以指定空格為分詞的標記。中文的句子只是字、句和段有明顯的分界符,唯獨詞沒有一個形式上的分界符。中英文文本區(qū)別8.2.2

分詞英文文本分詞為了幫助用戶快速地實現(xiàn)英文文本分詞的效果,NLTK中提供了word_tokenize()函數(shù),該函數(shù)以空格或標點符號為分隔符對英文文本進行分詞,并返回分詞后的單詞列表。sentence='Pythonisastructuredandpowerful'

'object-orientedprogramminglanguage.'words=nltk.word_tokenize(sentence)words※注意,我們在使用NLTK進行分詞操作時需要先確保當前的環(huán)境中已經下載了punkt分詞模型,否則word_tokenize()函數(shù)是無法使用的。8.2.2

分詞中文文本分詞jieba是國內使用人數(shù)最多的中文分詞工具,它基于中文分詞的原理,將中文語句或段落拆成若干漢語詞匯。如果想要使用jieba模塊進行分詞,則可以通過cut()

函數(shù)進行劃分。cut(self,sentence,cut_all=False,HMM=True,use_paddle=False)sentence:需要分詞的字符串。cut_all:用來控制是否采用全模式。HMM:用來控制是否使用HMM模型。8.2.2

分詞中文文本分詞jieba是國內使用人數(shù)最多的中文分詞工具,它基于中文分詞的原理,將中文語句或段落拆成若干漢語詞匯。如果想要使用jieba模塊進行分詞,則可以通過cut()

函數(shù)進行劃分。importjiebasentence='傳智專修學院推出顛覆式辦學模式'terms_list=jieba.cut(sentence,cut_all=True)print('【全模式】:'+'/'.join(terms_list))terms_list=jieba.cut(sentence,cut_all=False)print('【精確模式】:'+'/'.join(terms_list))采用全模式進行分詞采用精確模式進行分詞8.2.3

詞性標注掌握詞性標注的方式,能夠通過pos_tag()函數(shù)對英文文本進行分詞標注學習目標8.2.3

詞性標注詞性是對詞語分類的一種方式?,F(xiàn)代漢語詞匯大致可以分為名詞、動詞、形容詞、數(shù)詞、量詞、代詞、介詞、副詞、連詞、感嘆詞、助詞和擬聲詞這12種。英文詞匯可以分為名詞、形容詞、動詞、代詞、數(shù)詞、副詞、介詞、連詞、冠詞和感嘆詞這10種。詞性概念8.2.3

詞性標注詞性標注,又稱詞類標注,是指為分詞結果中的每個單詞標注一個正確的詞性,也就是說確定每個單詞是名詞、動詞、形容詞或其它詞性的過程。詞性標注概念Iloveitcast人稱代詞動詞名詞8.2.3

詞性標注通用詞性標注集標簽描述示例JJ形容詞special,high,goodRB副詞quickly,simply,hardlyCC條件連詞and,orDT限定詞the,aMD情態(tài)動詞could,shouldNN單數(shù)名詞home,time,yearNNS復數(shù)名詞birds,dogs,flowersNNP專有名詞單數(shù)Africa,April,WashingtonCD基本數(shù)量詞twenty-one,second,19978.2.3

詞性標注通用詞性標注集標簽描述示例PRP人稱代詞I,you,he,shePRP$所有格代詞my,your,his,herIN介詞on,of,at,by,underTO不定詞howto,whattodoUH感嘆詞ah,ha,wow,ohVB動詞原型see,listen,speak,runVBD動詞過去時did,told,madeVBG動名詞going,working,makingVBN動詞過去分詞given,taken,begunWDTWH限定詞which,whatever8.2.3

詞性標注詞性標注方式在NLTK中,如果希望給單詞標注詞性,則需要確保當前環(huán)境中已經下載了averaged_perceptron_tagger模塊,下載完后可以通過pos_tag()函數(shù)進行標注。words=nltk.word_tokenize('Pythonisastructuredandpowerfulobject-orientedprogramminglanguage.')nltk.pos_tag(words)8.2.4

詞形歸一化掌握詞形歸一化操作,能夠通過nltk.stem模塊實現(xiàn)詞形歸一化操作學習目標8.2.4

詞形歸一化在英文中,一個單詞常常是另一個單詞的變種,比如looking是look這個單詞的一般進行式,looked為一般過去式,這些都會影響語料庫學習的準確度。一般在信息檢索和文本挖掘時,需要對一個詞的不同形態(tài)進行規(guī)范化,以提高文本處理的效率。8.2.4

詞形歸一化分類詞干提取是指刪除不影響詞性的詞綴(包括前綴、后綴、中綴、環(huán)綴),得到單詞詞干的過程。與詞干提取相關,不同的是能夠捕捉基于詞根的規(guī)范單詞形式。詞形還原(lemmatization)詞干提?。╯temming)8.2.4

詞形歸一化詞干提取nltk.stem模塊中提供了多種詞干提取器,目前最受歡迎的就是波特詞干提取器,它是基于波特詞干算法來提取詞干的,這些算法都集中在PorterStemmer類中。fromnltk.stem.porterimportPorterStemmerporter_stem=PorterStemmer()porter_stem.stem('watched')porter_stem.stem('watching')1.

基于波特詞干提取器提取詞干8.2.4

詞形歸一化蘭卡斯特詞干提取器是一個迭代提取器,它具有超過120條規(guī)則說明如何刪除或替換詞綴以獲得詞干。蘭卡斯特詞干提取器基于蘭卡斯特詞干算法,這些算法都封裝在LancasterStemmer類中。fromnltk.stem.lancasterimportLancasterStemmerlancaster_stem=LancasterStemmer()lancaster_stem.stem('jumped')lancaster_stem.stem('jumping')詞干提取2.

基于蘭卡斯特提取器提取詞干8.2.4

詞形歸一化NLTK還支持其它的詞干器,比如SnowballStemmer,這個詞干器除了支持英文以外,還支持其他13種語言。fromnltk.stemimportSnowballStemmersnowball_stem=SnowballStemmer('english')snowball_stem.stem('listened')snowball_stem.stem('listening')必須接收一個表示語言的字符串詞干提取3.

基于其他提取器提取詞干8.2.4

詞形歸一化詞形還原詞形還原的過程與詞干提取非常相似,就是去除詞綴以獲得單詞的基本形式,不過,這個基本形式稱為根詞,而不是詞干。根詞始終存在于詞典中,詞干不一定是標準的單詞,它可能不存在于詞典中。※NLTK庫中使用WordNetLemmatizer類封裝的功能獲得根詞,使用前需要確保已經下載了wordnet語料庫。8.2.4

詞形歸一化詞形還原WordNetLemmatizer類提供了一個lemmatize()方法,該方法通過比對wordnet語料庫,并采用遞歸技術刪除詞綴,直至在詞匯網絡中找到匹配項,最終返回輸入詞的基本形式。如果沒有找到匹配項,則直接返回輸入詞,不做任何變化。fromnltk.stemimportWordNetLemmatizerwordnet_lem=WordNetLemmatizer()wordnet_lem.lemmatize('books')wordnet_lem.lemmatize('went')

wordnet_lem.lemmatize('did')1.

不指定詞性8.2.4

詞形歸一化詞形還原在通過lemmatize()方法進行詞形還原時,可以將表示詞性的字符串傳入pos參數(shù)。wordnet_lem.lemmatize('went',pos='v')2.

指定詞性wordnet_lem.lemmatize('did',pos='v')8.2.5

刪除停用詞掌握刪除停用詞操作,能夠通過stopwords模塊實現(xiàn)刪除停用詞的操作學習目標8.2.5

刪除停用詞停用詞是指在信息檢索中,為節(jié)省存儲空間和提高搜索效率,在處理自然語言文本之前或之后會自動過濾掉某些沒有具體意義的字或詞,這些字或詞即被稱為停用詞。停用詞概念8.2.5

刪除停用詞停用詞處理方式停用詞的存在直接增加了文本的特征難度,提高了文本數(shù)據(jù)分析過程中的成本,如果直接用包含大量停用詞的文本作為分析對象,則還有可能會導致數(shù)據(jù)分析的結果存在較大偏差,通常在處理過程中會將它們從文本中刪除?!鶎τ谥形牡耐S迷~表,可以參考中文停用詞庫、哈工大停用詞表、百度停用詞列表?!鶎τ谄渌Z言的停用詞表,可以到Ranks

NL官網進行了解。8.2.5

刪除停用詞實現(xiàn)方式刪除停用詞常用的方法有詞表匹配法、詞頻閾值法和權重閾值法,NLTK庫所采用的就是詞表匹配法,它里面有一個標準的停用詞列表,在使用之前要確保已經下載了stopwords語料庫,并且用import語句導入stopwords模塊。fromnltk.corpusimportstopwordssentence='Pythonisastructuredandpowerfulobject-orientedprogramminglanguage.'words=nltk.word_tokenize(sentence)stop_words=stopwords.words('english')remain_words=[]forwordinwords:ifwordnotinstop_words:remain_words.append(word)remain_words文本情感分析8.38.3

文本情感分析熟悉文本情感分析,能夠通過多種方式實現(xiàn)簡單的文本情感分析學習目標8.3

文本情感分析文本情感分析,又稱為傾向性分析和意見挖掘,是指對帶有情感色彩的主觀性文本進行分析、處理、歸納和推理的過程。概念情感分析可以細分為情感極性分析、情感程度分析和主客觀分析等,其中情感極性分析主要是對文本進行褒義、貶義、中性的判斷。分類8.3

文本情感分析情感極性分析的兩種方法基于情感詞典的情感分析基于機器學習的情感分析8.3

文本情感分析基于情感詞典的情感分析最簡單的情感極性分析的方法是情感字典,它主要通過制定一系列的情感詞典和規(guī)則,對文本進行段落拆解、句法分析,并計算情感值,最終將情感值作為文本的情感傾向依據(jù)。1對文本進行分詞操作,從中找出正向情感詞、負向情感詞、否定詞以及程度副詞。2如果情感詞前面有否定詞,則將情感詞的情感權值乘以-1;如果有程度副詞,就乘以程度值。3將所有得分加起來,得分大于0的歸于正向,小于0的歸于負向。8.3

文本情感分析基于情感詞典的情感分析這款藍牙耳機的款式比較好看,操作也比較簡單,不過音質真的太爛了,耳塞戴著也不舒服。好看簡單爛舒服+1+1-1+11.

找出正向情感詞、負向情感詞、否定詞以及程度副詞8.3

文本情感分析基于情感詞典的情感分析這款藍牙耳機的款式比較好看,操作也比較簡單,不過音質真的太爛了,耳塞戴著也不舒服。比較好看比較簡單太爛不舒服+1*2+1*2-1*4+1*-12.

組合情感詞與否定詞或程度副詞8.3

文本情感分析基于情感詞典的情感分析這款藍牙耳機的款式比較好看,操作也比較簡單,不過音質真的太爛了,耳塞戴著也不舒服。比較好看比較簡單太爛不舒服+1*2+1*2-1*4+1*-1情感分值-13.

根據(jù)分值判斷情感歸于正向或負向+1*2+1*2-1*4+1*-1=商品評價屬于一條差評8.3

文本情感分析基于情感詞典的情感分析基于情感詞典的情感分析雖然簡單粗暴,但是非常實用,不過一旦遇到一些新詞或者特殊詞,就無法識別出來,擴展性非常不好。8.3

文本情感分析基于機器學習的情感分析基于機器學習的情感分析是先將目標文本中的情感分為正、負兩類,或者是根據(jù)不同的情感程度劃分為1~5,然后對訓練文本進行人工標注,進行有監(jiān)督的機器學習過程。8.3

文本情感分析基于機器學習的情感分析樸素貝葉斯是經典的機有監(jiān)督的機器學習算法之一,也是為數(shù)不多的基于概率論的分類算法,它的思想是:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個概率最大就認為此待分類項屬于哪個類別。8.3

文本情感分析基于機器學習的情感分析nltk.classify是用類別標簽標記的模塊,它內置的NaiveBayesClassifier類封裝了樸素貝葉斯分類算法的功能,該類中有一個類方法train(),用于根據(jù)訓練集來訓練模型。train(cls,labeled_featuresets,estimator=ELEProbDist)上述方法中,labeled_featuresets參數(shù)表示分類的特征集列表。文本相似度8.48.4

文本相似度熟悉文本相似度,可以結合

溫馨提示

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

評論

0/150

提交評論