<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          基于微博評(píng)論的文本情感分析與關(guān)鍵詞提取的實(shí)戰(zhàn)案例~

          共 3191字,需瀏覽 7分鐘

           ·

          2021-12-29 15:46

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          宣室求賢訪逐臣,賈生才調(diào)更無倫。

          大家好,我是志斌~


          上一篇文章基于Scrapy框架的微博評(píng)論爬蟲實(shí)戰(zhàn),志斌給大家介紹了,如何用Scrapy框架,爬取微博評(píng)論的內(nèi)容,接下來就要對(duì)爬取下來的評(píng)論文本進(jìn)行情感分析。


          在評(píng)論文本情感分析之前,我們需要將語(yǔ)句通過分詞使其成為詞語(yǔ),然后優(yōu)化分詞結(jié)果,去掉無關(guān)的詞語(yǔ)和字符。,以提高文本情感分析的準(zhǔn)確度。


          01

          分詞


          對(duì)中文句子按照其語(yǔ)義進(jìn)行切割的這類操作,被稱為“分詞”。目前的分詞技術(shù)有兩種,一種是從統(tǒng)計(jì)學(xué)的角度進(jìn)行分詞,另一種是從詞庫(kù)的角度基于TF-IDF算法,來對(duì)語(yǔ)句進(jìn)行分詞。


          Python中的Jieba庫(kù)就是利用詞庫(kù)來對(duì)語(yǔ)句進(jìn)行自動(dòng)分詞的,所以志斌就給大家介紹一下如何用Jieba庫(kù)來實(shí)現(xiàn)文本分割。


          01

           分詞原理


          Jieba庫(kù)在安裝時(shí),會(huì)附帶一個(gè)詞庫(kù),這個(gè)詞庫(kù)中包含了日常漢語(yǔ)的詞語(yǔ)和詞性。在分詞時(shí),Jieba庫(kù)會(huì)先基于詞庫(kù)對(duì)文本進(jìn)行匹配,生成文本中的漢字最有可能形成的詞。


          然后將這些詞組成一個(gè)DAG,用動(dòng)態(tài)規(guī)劃算法來查找最大的概率路徑,盡可能不將一個(gè)詞拆成單獨(dú)的漢字。


          最后,再?gòu)脑~庫(kù)中找出基于詞頻的最大切分組合,把這些組合在文本中找出來,進(jìn)而形成一個(gè)一個(gè)的詞語(yǔ)。


          同時(shí)Jieba庫(kù)還使用了HMM模型,用以提高分詞的準(zhǔn)確率,該模型可以對(duì)詞庫(kù)中沒有的詞進(jìn)行分詞。


          02

           分詞方法


          Jieba庫(kù)里有一個(gè)cut函數(shù),它為我們提供了自動(dòng)分詞功能,代碼如下:

          import jieba   # 分詞
          with open('text.txt','r',encoding='utf-8') as f:
          read = f.read()
          word = jieba.cut(read)


          打印一下分詞后的結(jié)果

          我們發(fā)現(xiàn),上面的分詞結(jié)果中,有大量的標(biāo)點(diǎn)符號(hào),和一些與情感表達(dá)無關(guān)的詞語(yǔ),為了避免無關(guān)詞語(yǔ)對(duì)情感分析的影響和加快計(jì)算詞語(yǔ)的情感速度,我們就需要對(duì)分詞的結(jié)果進(jìn)行優(yōu)化。


          02

          優(yōu)化分詞


          我們主要從以下兩個(gè)方面來對(duì)分詞結(jié)果進(jìn)行優(yōu)化:1.移除標(biāo)點(diǎn)符號(hào)和換行符;2.刪除與情感表達(dá)無關(guān)的詞。


          接下來,我將給大家介紹兩種方法來實(shí)現(xiàn)對(duì)分詞進(jìn)行優(yōu)化。


          01

           使用停用詞集


          停用詞設(shè)置是分詞中常用的一種手段,可以提高分割的準(zhǔn)確度,同時(shí)減少硬件成本、時(shí)間成本。網(wǎng)上有許多的停用詞集,我們可以挑一個(gè)進(jìn)行下載。在文末,志斌會(huì)放自己使用的停用詞集鏈接。代碼如下:

          import jieba   # 分詞
          with open('text.txt','r',encoding='utf-8') as f:
          read = f.read()
          with open('停用詞表.txt','r',encoding='utf-8') as f:
          stop_word = f.read()
          word = jieba.cut(read)
          words = []
          for i in list(word):
          if i not in stop_word:
          words.append(i)


          打印一下分詞后的結(jié)果

          我們發(fā)現(xiàn)標(biāo)點(diǎn)符號(hào)和與情感表達(dá)無關(guān)的詞都被過濾掉了。


          02

          根據(jù)詞性提取關(guān)鍵詞


          大家知道,每個(gè)詞語(yǔ)都是有著自己的詞性,我們可以通過Jieba庫(kù)提取出來每個(gè)詞的詞性,然后進(jìn)行篩選,保留你需要的詞語(yǔ),代碼如下:

          import jieba.posseg as psg
          cixing = ()
          words = []
          for i in psg.cut(read):
          cixing = (i.word,i.flag) #詞語(yǔ)和詞性
          words.append(cixing)
          save = ['a'] #挑選詞性
          for i in words:
          if i[1] in save:
          print(i)


          給大家分享一個(gè)漢語(yǔ)詞性表(部分),有更多了解興趣的讀者可以上網(wǎng)搜一下看看。


          我們上面是只保留了形容詞,如果大家想保留更多詞性的詞語(yǔ),就在save列表中進(jìn)行添加即可。


          03

          結(jié)果展示


          分詞結(jié)果優(yōu)化過之后,我們就得到了自己想要的結(jié)果。接下來就是對(duì)這些詞來進(jìn)行詞頻展示和情感分析了。


          01

           高頻詞語(yǔ)展示



          由柱狀圖可知,“頭發(fā)”占據(jù)詞頻最高,有231條,其次是詞語(yǔ)“考研”和“圖書館”,兩個(gè)詞語(yǔ)分別有74條和58條。


          所以我們這條微博的主要關(guān)鍵詞是“頭發(fā)”、“考研”和“圖書館”。


          代碼如下:

          from pyecharts.charts import Bar
          from pyecharts import options as opts
          columns = []
          data = []
          for k,v in dict(Counter(words).most_common(10)).items():
          columns.append(k)
          data.append(v)
          bar = (
          Bar()
          .add_xaxis(columns)
          .add_yaxis("詞頻", data)
          .set_global_opts(title_opts=opts.TitleOpts(title="詞頻top10"))
          )
          bar.render("詞頻.html")


          02

           情感分析


          在之前跟大家介紹過兩種文本情感分析方法,有興趣的讀者可以看看這篇文章推薦一個(gè)強(qiáng)大的自然語(yǔ)言處理庫(kù)—snownlp


          在本文,我使用的是Snownlp庫(kù)來對(duì)文本進(jìn)行情感分析。


          從圖中,我們可以看到,大家的評(píng)論積極態(tài)度的有32%,中等態(tài)度的占60%,消極態(tài)度只占8%,看來大家的心態(tài)還是很平和的。


          代碼如下:

          from snownlp import SnowNLP
          positibe = negtive = middle = 0
          for i in words:
          pingfen = SnowNLP(i)
          if pingfen.sentiments>0.7:
          positibe+=1
          elif pingfen.sentiments<0.3:
          negtive+=1
          else:
          middle+=1


          04

          總結(jié)


          1. 本文詳細(xì)介紹了如何使用Jieba庫(kù)對(duì)文本進(jìn)行分詞,并使用Snownlp庫(kù)配合對(duì)分詞結(jié)果進(jìn)行語(yǔ)義情感分析。

          2. 通過對(duì)用戶評(píng)論的分析,我們可以知道用戶的喜好程度,從而有策略的改進(jìn)。

          3. 本文僅供學(xué)習(xí)參考,不做它用。

          小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级特黄60分钟免费看 | 黑人探花 | 亚洲色道| 好吊无码一区二区三区 | 欧美精品狂野欧美成人 |