:::

揭露文字資料的量化數值!文字探勘分析器 / A Text Analyzer for Text Mining

image

這是我為了文字探勘所做的小工具。一般來說文字資料是一種非結構的質性資料,但其實還是可以透過一些簡單的計算來得知它的量化數值,這樣就能讓不同的文字資料之間的比較有了客觀的基準。這個文字探勘分析器提供了基本的敘述統計指標計算功能,包括文字長度、不同字詞的數量、文字變化程度的熵(entropy)跟辛普森指數(Simposon's Index),還有以句子、對話句為單位的分析,最後還能將N字詞的頻率分析結果繪製成文字雲


文字探勘分析器 / Text Analyzer

分析功能說明 / Tutorial

image

文字探勘分析器的處理很簡單,先在「Paste Text here」的文字框輸入文本。左上角是文本分析的細節設定,可以先使用預設值。接著按下「START」並稍作等待,下面就會出現分析結果了。

image

這樣就可以取得分析結果。


文字探勘設定 / Configuration

文字探勘的設定:

  • Segment Length 單詞長度:計算N字詞的N,1表示是單字詞、2表示是雙字詞。
  • Remove Punctuations 刪除標點符號:將會刪除的標點符號,以正規表示法設定。
  • Remove Numbers 移除數字:將會刪除阿拉伯數字(只限於半形數字)。
  • Remove English 移除英文:將會刪除英文字(只限於半形英文)。
  • Function Words 虛字:虛字列表,用空格分隔不同虛詞。
  • Sentence Punctuations 句子的標點符號:分隔句子的標點符號。

對話分析:

  • Prefix 對話句開頭的符號
  • Suffix 對話句結尾的符號
  • Question 問句包含的符號
  • Exclamation 驚歎句包含的符號
  • Discourse Punctuations 分隔對話句子的標點符號:。,、;:?!「」

文字雲設定:

  • Only Display Top Frequency 文字雲僅顯示出現頻率前N名的詞彙
  • Weight Factor 文字雲中的文字大小
  • Canvas Size 文字雲繪圖範圍

結果分析:文本統計 / Result: Document Statistics

文本統計 / Document Statistics

image

  • Text Length 文字的長度:文字總長度,不計算空格跟標點符號
  • Different Words 不同的文字:N字詞的種類
  • Entropy 亂度:不均度指標,越大表示字彙種類越多
  • Simpson's Index 辛普森指標:不均度指標,越小表示字彙種類越多
  • Sentence Count 句子的計算:句子數量
  • Sentence Length Average 句子長度的平均數:句子平均長度
  • Sentence Length Variance 句子長度的變異數:句子長度變異數。數字越大表示句子長度分佈差異越大
  • Function Word Count 使用虛詞數量:虛字出現頻率
  • Function Word Proportion 虛詞比例:虛字出現比例,算法是(虛字出現頻率/文字總長度)
  • Discourse Count 對話次數
  • Discourse Length Average 對話次數平均長度
  • Discourse Length Variance 對話次數變異數
句子長度的次數分配表 / Sentences Length Distribution

image

  • Sentence Count 句子數量
  • Sentence Length Average 句子平均長度
  • Sentence Length Variance 句子長度變異數。數字越大表示句子長度分佈差異越大
N字詞的次數分配表 / N-Length Words Distribution

image

  • Different Words 字詞的種類:N字詞的種類
  • Entropy 亂度:不均度指標,越大表示字彙種類越多
  • Simpson's Index 辛普森指標:不均度指標,越大表示字彙種類越多
  • N-Length Words Distribution N字詞的次數分配表
虛字分佈 / Function Words Distribution

image

  • Function Word Count 使用虛詞數量:虛字出現頻率
    • Function Word Proportion 虛詞比例:虛字出現比例,算法是(虛字出現頻率/文字總長度)
    • Function Words Distribution 虛字的次數分配表

    結果分析:語句分析 / Result: Discourse Analysis

    整體分析 / Total Discourse

    image

    • Discourse Count 對話次數
    • Discourse Length Average 對話次數平均長度
    • Discourse Length Variance 對話次數變異數
    • Discourse Total Length 對話次數總長度
    • Discourse Proportion 對話次數比例
    一般對話 / Normal Discourse

    image

    • Normal Discourse Count 一般對話次數
    • Normal Discourse Length Average 一般對話次數平均長度
    • Normal Discourse Length Variance 一般對話次數變異數
    • Normal Discourse Total Length 一般對話次數總長度
    • Normal Discourse Proportion 一般對話次數比例
    • 一般對話的次數分配表
    疑問句 / Question Discourse

    image

    • Question Discourse Count 疑問對話次數
    • Question Discourse Length Average 疑問對話次數平均長度
    • Question Discourse Length Variance 疑問對話次數變異數
    • Question Discourse Total Length 疑問對話次數總長度
    • Question Discourse Proportion 疑問對話次數比例
    • 疑問句的次數分配表
    驚歎句 / Exclamation Discourse

    image

    • Exclamation Discourse Count 驚歎句次數
    • Exclamation Discourse Length Average 驚歎句次數平均長度
    • Exclamation Discourse Length Variance 驚歎句次數變異數
    • Exclamation Discourse Total Length 驚歎句次數總長度
    • Exclamation Discourse Proportion 驚歎句次數比例
    • 驚歎句的次數分配表
    句子前的文字 / Neighbor Before

    image

    句子前出現文字的次數分配表,例如「楊過道」出現了兩次。

    句子後的文字 / Neighbor After

    image

    句子後出現文字的次數分配表。


    結果分析:文字雲 / Result: Word Cloud

    image

    最下面還有文字雲的顯示。因為「蟀」這個字在文章中出現了22字,所以這個字就出現在文字雲中心,而且特別的大。


    資料複製 / Data Copy

    image

    為了方便大家取得資料做後續的分析,每個結果表格右上角都有「TABLE」跟「VALUE」的複製按鈕。前者按了之後就會複製下面的整個表格,後者只會複製值的部分。

    image

    這樣就可以方便你複製後貼到試算表工具進行後續的分析。


    結語 / In closing

    其實要做文本分析,不見得需要用到R或Python。簡單的這個JavaScript小程式,就可以將非結構化的文字量化成這麼多的數值指標了,非常有趣。

    這個工具僅是為了我個人分析需求而撰寫,所以看起來有點亂 (順便練習使用Sementic UI)。雖然有想過要不要結合Chart.js直接繪製圖表,但其實它更適合把結果複製到試算表來整理,在試算表中畫圖表也比較容易。所以我使用clipboard.js做了許多的複製按鈕,方便大家整理資料。

    image

    如果不確定每個功能是做什麼用的,請把滑鼠放到「i」圖示上,就會顯示該功能的解釋。

    其實這個功能是在去年年底我在進行一個分析時,為了方便合作者使用所做的一個工具,結果過了快一年,到現在才整理出來供大家使用。希望這個文字探勘的小工具可以幫助大家更容易解讀文本。


    這篇文字探勘分析器寫到這裡就告一段落了。不知道這是不是你心目中的文字探勘呢?還是你對文字探勘有其他看法呢?我很想知道你對於這篇文章的看法,如果可以的話,歡迎在下面留言處與我分享你的想法,或是在AddThis分享工具按讚、分享我的文章到Facebook等社群媒體。感謝你的耐心閱讀,讓我們下次見囉。

    總共7 則留言 ( 我要發問 , 隱藏留言 顯示留言 )

    1. 本篇的熵(Entropy)指標跟辛普森指標(Simpson's Index)參考自以下論文:

      何立行、余清祥、鄭文惠(2014)。從文言到白話:《 新青年》 雜誌語言變化統計研究。東亞觀念史集刊,7,427–454。

      Entropy的公式為 https://lh3.googleusercontent.com/-QdHV6Pr3RpU/WgmRNLCHEXI/AAAAAAADjow/wfy8SxntUIcL4AwqCyTbtYnsEmNgpvSQACHMYCw/s0/entropy.png
      Simpson's Index的公式為 https://lh3.googleusercontent.com/-ccrkkpOTjTk/WgmRhogG9yI/AAAAAAADjo0/9w0VoOvQCk4yCzsA-5FLUJQwfuJonhcgACHMYCw/s0/simpson%2Bindex.gif

      回覆刪除
    2. 我修正了文字雲的尺寸計算方式,現在不管文字內容是如何,出來的文字雲尺寸應該都不會太小或太大。就像這樣:
      http://3.bp.blogspot.com/-zPxFH0ATUOo/XEA4_7wZc0I/AAAAAAAD_sQ/MwqK0XkKt4c0P3q984ccFEBiXXqKYZE3gCK4BGAYYCw/s1600/%25E6%2596%2587%25E5%25AD%2597%25E9%259B%25B2.png

      回覆刪除
    3. 最近有人詢問這個工具的一些問題,我整理一下也在這裡回覆。

      1. 關於授權

      如果要以此論文發表的話,是可以提到我這個工具,並不必特地詢問我的授權。

      2. 關於資料處理量上限

      這套工具能夠處理的資料量不會很大。
      雖然沒有實際上測試過,但我猜應該10MB以上就會跑不動。

      3. 關於線下版本開發

      目前沒有這個計劃。

      因為這隻程式的功能非常簡單,理論上大學修過程式設計的學生應該都寫得出來。
      建議研究者可以先用少量資料用用看,透過這個工具來瞭解自己分析的需求,再去請人一起合作開發線下版本。

      如果對於輸入文本到跑出分析結果之間的處理流程有問題,歡迎提問。

      回覆刪除
    4. 很厲害,感謝您的分享

      回覆刪除