揭露文字資料的量化數值!文字探勘分析器 / A Text Analyzer for Text Mining
這是我為了文字探勘所做的小工具。一般來說文字資料是一種非結構的質性資料,但其實還是可以透過一些簡單的計算來得知它的量化數值,這樣就能讓不同的文字資料之間的比較有了客觀的基準。這個文字探勘分析器提供了基本的敘述統計指標計算功能,包括文字長度、不同字詞的數量、文字變化程度的熵(entropy)跟辛普森指數(Simposon's Index),還有以句子、對話句為單位的分析,最後還能將N字詞的頻率分析結果繪製成文字雲。
文字探勘分析器 / Text Analyzer
分析功能說明 / Tutorial
文字探勘分析器的處理很簡單,先在「Paste Text here」的文字框輸入文本。左上角是文本分析的細節設定,可以先使用預設值。接著按下「START」並稍作等待,下面就會出現分析結果了。
這樣就可以取得分析結果。
文字探勘設定 / 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
- 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
- Sentence Count 句子數量
- Sentence Length Average 句子平均長度
- Sentence Length Variance 句子長度變異數。數字越大表示句子長度分佈差異越大
N字詞的次數分配表 / N-Length Words Distribution
- Different Words 字詞的種類:N字詞的種類
- Entropy 亂度:不均度指標,越大表示字彙種類越多
- Simpson's Index 辛普森指標:不均度指標,越大表示字彙種類越多
- N-Length Words Distribution N字詞的次數分配表
虛字分佈 / Function Words Distribution
- Function Word Count 使用虛詞數量:虛字出現頻率
- Function Word Proportion 虛詞比例:虛字出現比例,算法是(虛字出現頻率/文字總長度)
- Function Words Distribution 虛字的次數分配表
結果分析:語句分析 / Result: Discourse Analysis
整體分析 / Total Discourse
- Discourse Count 對話次數
- Discourse Length Average 對話次數平均長度
- Discourse Length Variance 對話次數變異數
- Discourse Total Length 對話次數總長度
- Discourse Proportion 對話次數比例
一般對話 / Normal Discourse
- Normal Discourse Count 一般對話次數
- Normal Discourse Length Average 一般對話次數平均長度
- Normal Discourse Length Variance 一般對話次數變異數
- Normal Discourse Total Length 一般對話次數總長度
- Normal Discourse Proportion 一般對話次數比例
- 一般對話的次數分配表
疑問句 / Question Discourse
- Question Discourse Count 疑問對話次數
- Question Discourse Length Average 疑問對話次數平均長度
- Question Discourse Length Variance 疑問對話次數變異數
- Question Discourse Total Length 疑問對話次數總長度
- Question Discourse Proportion 疑問對話次數比例
- 疑問句的次數分配表
驚歎句 / Exclamation Discourse
- Exclamation Discourse Count 驚歎句次數
- Exclamation Discourse Length Average 驚歎句次數平均長度
- Exclamation Discourse Length Variance 驚歎句次數變異數
- Exclamation Discourse Total Length 驚歎句次數總長度
- Exclamation Discourse Proportion 驚歎句次數比例
- 驚歎句的次數分配表
句子前的文字 / Neighbor Before
句子前出現文字的次數分配表,例如「楊過道」出現了兩次。
句子後的文字 / Neighbor After
句子後出現文字的次數分配表。
結果分析:文字雲 / Result: Word Cloud
最下面還有文字雲的顯示。因為「蟀」這個字在文章中出現了22字,所以這個字就出現在文字雲中心,而且特別的大。
資料複製 / Data Copy
為了方便大家取得資料做後續的分析,每個結果表格右上角都有「TABLE」跟「VALUE」的複製按鈕。前者按了之後就會複製下面的整個表格,後者只會複製值的部分。
這樣就可以方便你複製後貼到試算表工具進行後續的分析。
結語 / In closing
其實要做文本分析,不見得需要用到R或Python。簡單的這個JavaScript小程式,就可以將非結構化的文字量化成這麼多的數值指標了,非常有趣。
這個工具僅是為了我個人分析需求而撰寫,所以看起來有點亂 (順便練習使用Sementic UI)。雖然有想過要不要結合Chart.js直接繪製圖表,但其實它更適合把結果複製到試算表來整理,在試算表中畫圖表也比較容易。所以我使用clipboard.js做了許多的複製按鈕,方便大家整理資料。
如果不確定每個功能是做什麼用的,請把滑鼠放到「i」圖示上,就會顯示該功能的解釋。
其實這個功能是在去年年底我在進行一個分析時,為了方便合作者使用所做的一個工具,結果過了快一年,到現在才整理出來供大家使用。希望這個文字探勘的小工具可以幫助大家更容易解讀文本。
這篇文字探勘分析器寫到這裡就告一段落了。不知道這是不是你心目中的文字探勘呢?還是你對文字探勘有其他看法呢?我很想知道你對於這篇文章的看法,如果可以的話,歡迎在下面留言處與我分享你的想法,或是在AddThis分享工具按讚、分享我的文章到Facebook等社群媒體。感謝你的耐心閱讀,讓我們下次見囉。
本篇的熵(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
我修正了文字雲的尺寸計算方式,現在不管文字內容是如何,出來的文字雲尺寸應該都不會太小或太大。就像這樣:
回覆刪除http://3.bp.blogspot.com/-zPxFH0ATUOo/XEA4_7wZc0I/AAAAAAAD_sQ/MwqK0XkKt4c0P3q984ccFEBiXXqKYZE3gCK4BGAYYCw/s1600/%25E6%2596%2587%25E5%25AD%2597%25E9%259B%25B2.png
最近有人詢問這個工具的一些問題,我整理一下也在這裡回覆。
回覆刪除1. 關於授權
如果要以此論文發表的話,是可以提到我這個工具,並不必特地詢問我的授權。
2. 關於資料處理量上限
這套工具能夠處理的資料量不會很大。
雖然沒有實際上測試過,但我猜應該10MB以上就會跑不動。
3. 關於線下版本開發
目前沒有這個計劃。
因為這隻程式的功能非常簡單,理論上大學修過程式設計的學生應該都寫得出來。
建議研究者可以先用少量資料用用看,透過這個工具來瞭解自己分析的需求,再去請人一起合作開發線下版本。
如果對於輸入文本到跑出分析結果之間的處理流程有問題,歡迎提問。
布丁大大太厲害惹!!QAQ
回覆刪除哦哦!
刪除有幫上忙就好~
很厲害,感謝您的分享
回覆刪除有幫上忙就好,感謝您
刪除