基於百度LAC2.0的詞雲圖生成——各大分詞工具實戰比較

2020-12-17 百度NLP

1.前言

詞法分析是自然語言處理的基本工具,主要包括分詞、詞性標註和實體識別等功能。目前各類詞法分析工具大行其道,有免費開源的,也有商業收費的;有高校研發的,也有企業開發的;有支持Java的,也有支持Python的,甚至還有支持安卓平臺的。不久前百度帶來了LAC2.0版本,據說做了很多改進,我們通過實戰來體驗一下。

2.百度LAC2.0介紹

根據百度官方消息,LAC全稱Lexical Analysis of Chinese,是百度NLP(自然語言處理部)研發的一款詞法分析工具,可實現中文分詞、詞性標註、專名識別等功能。

百度方面宣稱,LAC在分詞、詞性、專名識別的整體準確率超過90%,以專名識別為例,其效果要比同類詞法分析工具提升10%以上。

目前,百度已經發布了LAC2.0版本,之前的1.0版本我也寫過一篇博文加以探討,彼時的1.0版本還是融合在paddlehub中的一個模型,詳見利用百度超大規模預訓練模型進行分詞 一文。在2.0版本中LAC已經成為了獨立模塊,可以直接通過pip 安裝。

使用起來也非常方便

結果如下

結合官方給出的對照表進行轉換,可以得到如下詞性

3.與其他分詞工具速度對比

在本文中,我們主要選取了結巴分詞、foolnltk和THULAC三個工具來和百度的LAC2.0進行比較。

需要注意的是,foolnltk對TensorFlow的版本有要求,推薦使用TensorFlow==1.14.0。

我大致用自己的電腦各跑幾百條數據看下速度,這裡我從微博上拿到了700+條,用各個工具進行分詞標註詞性。懶得多次測試了,可能有偶然性,僅供參考。

可以看到LAC 2.0在處理時的速度非常快,而THULAC的數據比較反常,也可能是我測試的問題(以後可以分析一下這個問題)。實際上THULAC還有fast_cut快速分詞功能,但是現實找不到so文件,懶得解決了,能用就行。

在本段落中我們僅比較了不同工具之間的啟動速度和處理速度。至於效果,有很多開源的測試集,很容易找到這些工具的測試結果。我就不再囉嗦啦。

然而僅僅看測試結果,而不去實際應用,就會有準確而不具體的問題。為了更直觀的比較四種工具的效果,我們以詞雲圖為例,觀察通過四種工具對同一文章生成的詞雲圖,比較其分詞和標註的效果。

4.生成詞雲圖

生成詞雲圖非常簡單,只需要用到第三方工具WordCloud即可,可以通過pip 安裝。

然後生成詞雲對象並設置參數

需要特別注意的是,如果要生成中文詞雲圖,必須手動指定字體路徑(相對)。這裡我們選用阿里巴巴普惠體,主要是免費,用得起,良心過得去。

另外還需注意,如果是在某些沒有GUI的linux伺服器上生成詞雲圖,還需要安裝PyQt4,否則會報錯。我總以為PyQt4是一個python的包,但其實不是的,而是一個系統工具,通過yum安裝即可。

然後就可以生成詞雲圖啦!

這裡的texts是一個以空格為分隔符的詞表字符串,可以通過分詞工具獲得。

5.效果展示

這裡我們選用的是《2020年政府工作報告》來生成詞雲圖。並同時在頁面上展示4個工具分詞生成的詞雲圖。並支持查看單一詞性詞雲圖。

連結為fgb2019.top:5001/index

通過詞雲圖我們可以直觀的看到不同的工具的區別。

對於名詞和動詞,四款工具分詞都很不錯,看不出明顯的差別,而對於地名和機構名,差異比較明顯。LAC2.0和結巴明顯能識別出較多機構名,其他兩個工具稍稍遜色。地名方面LAC2.0表現也不錯。

地名方面,LAC2.0和THULAC表現較好,而jieba和foolnltk明顯出現較多錯誤(見紅框標註)

而機構方面,foolnltk和THULAC幾乎僅能識別出黨中央、國務院等機構,LAC2.0和jieba識別出了較多機構,也各有一些錯誤。但就識別正確的詞而言,LAC2.0效果較好,比如LAC2.0能夠識別出二十國集團,而jieba認為是「十國集團」。

6.總結

總的來說,百度的LAC2.0在各方面性能上算得上優秀,尤其是在地名和機構名的識別上。實際上LAC2.0對人名識別也比較準確,本文沒有具體測試。

到這裡,細心的讀者應該已經發現了,我用的埠是5001埠,這說明我很可能用的是Flask框架,同時5000埠被佔用。如果這樣想,那你可能在第五層,但其實我就是更喜歡5001,5000上什麼也沒有,所以我也只是在第二層。

本文作者:雷帥

公眾號:16上財計算機小可愛

相關焦點

  • 分詞工具哪家強?中文詞法分析工具LAC測評來啦
    By    Charlotte77前言:本文轉載自AINLP,是對百度深度學習中文詞法分析工具的詳細體驗和測評,大家可以對比一下其他的工具分詞效果,文末可以關注AINLP體驗各種不同分詞工具的效果~            關鍵詞
  • 百度深度學習中文詞法分析工具LAC試用之旅
    之前在調研中文分詞和詞性標註相關工具的時候就發現了百度的深度學習中文詞法分析工具:baidu/lac(https://github.com/baidu
  • 百度詞法分析工具 LAC 全面升級,2.0 版在線極速體驗
    關於中文詞法分析(中文分詞、詞性標註、命名實體識別)相關的工具,我們在之前已經多次提到過百度LAC,除了在易用性上稍弱外,其他方面,特別在專名識別的橫向對比中還是很亮眼的。LAC全稱Lexical Analysis of Chinese,是百度自然語言處理部研發的一款聯合的詞法分析工具,實現中文分詞、詞性標註、專名識別等功能。
  • 我知道你不知道,百度開源詞法LAC 2.0幫你更懂中文
    百度NLP權威發布,可能是最好用的中文詞法分析工具——LAC 2.0閃亮登場!與LAC 1.0相比,LAC 2.0在性能與效果上有明顯提升,且支持多種開發語言,一鍵安裝調用,更加快速便捷。開源地址見下方評論區!
  • 用Wordcloud生成指定形狀的詞雲圖
    在生成詞雲圖之前,首先要做一些準備工作1.安裝結巴分詞庫結巴分詞還有很多比較複雜的操作,具體的可以去官網查看,我就不再過多的贅述了。下面我們正式開始詞雲的製作。=mask,background_color='scale=,font_path="/usr/share/fonts/bb5828/逐浪雅宋體.otf").generate(text)image_produce = wordcloud.to_image()wordcloud.to_file("new_wordcloud.jpg")image_produce.show()註:若想要生成圖片樣式的詞雲圖
  • Python閱讀"黨的十九大報告"生成詞雲圖和統計詞頻數
    下面分享Python閱讀《黨的十九大報告》生成詞雲圖和統計詞頻數的方法。推薦使用wheel方法安裝詞雲庫wordcloud,為此小派撰寫了百度經驗《Python學習與使用:wheel安裝詞雲庫wordcloud》,下面是該經驗的地址:https://jingyan.baidu.com/article/d169e18617359b436711d842.html準備工作完成後,開始撰寫代碼,首先導入所需要的庫及函數,然後利用jieba進行分詞和獲取高頻詞彙
  • Python模塊Wordcloud,手把手教你生成詞雲圖
    wordcloud是Python擴展庫中一種將詞語用圖片表達出來的一種形式,通過詞雲生成的圖片,我們可以更加直觀的看出某篇文章的故事梗概。首先貼出一張詞雲圖(以哈利波特小說為例):在生成詞雲圖之前,首先要做一些準備工作1.安裝結巴分詞庫pip install jiebaPython中的分詞模塊有很多
  • 怎麼用Python畫出好看的詞雲圖?
    前期準備上面的這種圖叫做詞雲圖,主要用途是將文本數據中出現頻率較高的關鍵詞以可視化的形式展現出來,使人一眼就可以領略文本數據的主要表達意思。詞雲圖中,詞的大小代表了其詞頻,越大的字代表其出現頻率更高。那生成一張詞雲圖的主要步驟有哪些?過程中又需要用到哪些Python庫呢?首先需要一份待分析的文本數據,由於文本數據都是一段一段的,所以第一步要將這些句子或者段落劃分成詞,這個過程稱之為分詞,需要用到Python中的分詞庫jieba。
  • 平面設計中有趣的詞雲圖如何設計
    大家通過搜尋引擎搜索詞雲時,有沒有發現搜索出來的詞雲圖都非常的醜!一方面醜在配色、另一方面不夠精緻!與傳統詞雲相比呢,這種形式的詞雲更加直觀,各個詞之間的對比可以更加明顯。而且,這也比較靈活,多個詞雲圖還能放在一起進行比較。4.方塊詞雲同樣,我們也可以將字放在方塊裡,通過方塊的大小來對應詞頻的變化。
  • 不會製作詞雲圖?我來教你
    、輿情分析等場景下,還可以直接嵌入到PPT報告、數據分析類產品、可視化大屏中,是對文本數據價值變現的一種手段;製作門檻低:製作詞雲圖的難度不高,沒有數據處理技術背景的人也能做出有效的詞雲圖來。四個缺點區分度不足:詞雲圖對詞彙的表達採取的「抓大放小」的處理方式,對於詞頻相差較大的詞彙有較好的區分度,但對於顏色相近、出現頻率差不多的詞彙的區分效果不是很好;輸出無統一標準:受制於分詞技術、算法、詞庫質量等因素,不同的人對於同一文本數據,採取不同的詞雲圖生成方式和圖案,得到的詞雲圖可能會有較大差異,有時候可能出現一些亂碼,影響詞雲圖的輸出效果
  • 詞雲--基於Python庫wordcloud生成
    在生成詞雲的時候,Wordcloud默認是按照空格或者標點作為分割符來對目標文本進行分詞處理。若是英文文本可直接調用,若是中文文本,則需要按照前面介紹jieba分詞的那邊文章先對文本進行分詞處理然後用空格拼接,再調用wordcloud庫函數。
  • 使用Python分析屈原《離騷》中高頻詞並生成詞雲圖
    今天,我們主要對這位偉大人物的一部巨著《離騷》進行分析,利用Python中WordCloud庫生成該部巨著中常用詞的詞雲圖,來進一步了解這位偉大人物。本文關鍵對《離騷》內容進行分析,分析思路很簡單,主要是以下幾個步驟:【第一步】獲取《離騷》原文並對原文數據進行清洗【第二步】對《離騷》原文進行分詞統計【第三步】對《離騷》中多頻詞出現次數進行詞雲展示【第四步】簡要分析詞雲結果現在我們分步驟逐個擊破……【第一步】獲取《離騷》原文並對原文數據進行清洗
  • 拿來就用能的Python詞雲圖代碼|wordcloud生成詞雲詳解
    詞雲也叫文字雲,是一種可視化的結果呈現,常用在爬蟲數據分析中,原理就是統計文本中高頻出現的詞,過濾掉某些幹擾詞,將結果生成一張圖片,直觀的獲取數據的重點信息。今天,我們就來學習一下Python生成詞雲的常用庫「wordcloud」。
  • 未明學院:技能帖|詞雲圖前置——jieba分詞
    在自然語言處理過程中,為了能更好地處理句子,往往需要把句子拆開分成一個一個的詞語,以便更好地分析句子的特性,這個過程叫分詞。怎麼分詞?利用jieba中文分詞組件。三種jieba切詞模式介紹jieba切詞有三種模式的選擇,分別為全模式,精準模式,搜尋引擎模式。
  • 利用python畫出詞雲圖
    本文將介紹如何利用python中相應的模塊畫出詞雲圖。首先給出效果圖:其中詞雲圖中的詞彙是對手機簡訊中的垃圾簡訊的統計,字體越大表示在垃圾簡訊中出現的頻次越高。下面給出具體的步驟。數據清洗首先我們選出1000條正常數據和垃圾數據(因為數據比較多,為了簡化運行,我們選出2000條簡訊),代碼為:其中,sample函數是隨機的挑選樣本。
  • 不會做詞雲圖?一分鐘教會你用手機做漂亮的詞雲圖
    什麼是詞雲圖我們經常會在網上看到這樣一種圖片:由多種顏色的文詞拼成的圖案,比如下面這張用關鍵詞「IP位址」拼成的IP字母圖案,不僅形象而且能夠突出想要表達的主要內容,非常實用,這就叫詞雲圖!那麼詞雲圖怎麼做呢?猴哥今天來告訴大家如何用手機做出各種圖案的詞雲圖。
  • 數據科學 | Python酷炫詞雲圖原來可以這麼玩
    WordCloud配合matplotlib,在默認參數設置下生成一張簡單的詞雲圖:from wordcloud import WordCloudimport matplotlib.pyplot as plt%matplotlib inline'''從文本中生成詞雲圖'''wordcloud = WordCloud
  • 3分鐘做出炫酷詞雲圖,數據分析都能用
    在瀏覽公眾號文章的時候,會發現一些比較炫酷的插圖,是通過文字組合而成的,這就是詞雲圖。詞雲圖常常用在數據分析方面,出現在PPT中的概率也很高,用來統計重要詞頻。在做文章、標題、留言等要素的分析時,也可以利用詞雲圖對出現的重點詞彙進行分析提取,歸納總結,一目了然。
  • 探索小米開源分詞MiNLP基於深度學習的分詞工作
    MiNLP-Tokenizer中文分詞工具經過不斷優化和實戰打磨,已於2020年11月正式對外開源。MiNLP團隊計劃在2021年Q2完成所有詞法工具(詞性標註和命名實體識別)的開源,從2021年Q3開始,MiNLP團隊將逐步開源句法分析和部分語義分析工具,和開發者一起打造功能強大、效果領先的NLP平臺。內部的兩套分詞方案都是基於深度學習的分詞方案。
  • 用詞雲圖看Sustainability期刊熱門題目
    在之前的推文《用詞雲圖看2020社科基金課題~》中,我們已經介紹了詞雲圖的相關用法,並結合jieba分詞來繪製詞雲圖,由於jieba只針對中文進行分詞操作,本期當中,我們要在上周發布的推文《在Sustainability上發文最多的原來是這些高校》基礎上,利用nltk庫對論文題目進行分詞操作,並用詞雲圖直觀地了解Sustainability上發表論文的熱門課題,同時對詞雲圖的一些具體用法進行介紹。