每月彙整: 2019 年 5 月

2019 年臺北市立大學 Python 資料視覺化

課程資源

學生作品

2018 年全國夏季學院資料科學程式設計

課程資源

學生作品集

EHR Genotypes Extraction

http://140.112.30.198:8000/

相關新聞:英國、冰島都在搶基因「身體密碼」,台灣的進展到哪裡?

「基因篩檢幾萬塊的費用,並不是所有病人都願意付。」台大醫院基因學部暨小兒部主治醫師胡務亮,同時也是「台大醫神——精準醫療人工智慧輔助決策系統」的成員之一,他認為,醫師的價值在於基因比對後的分析與判斷,但光是前期的基因樣本取得,其實很有難度,因此只能透過計畫補助費,幫患者免費嘗試。

斷詞 & 詞頻 Cutting word & term frequency

文本分析的目的是要從文章中擷取我們想要的資訊,而第一步我們需要把有意義的詞(term)挑出來。

斷詞

詞(term)是最小有意義的語言單位,文本分析的第一步就是斷詞,然後再做其他進一步的分析,如文字雲、情緒分析等等。如果是英文的文本,可以很簡單的用空格把每個 term 分開:

但是如果是中文,斷詞就是一門很大的學問了。像是「乒乓球拍賣完了」可能會被斷成 「乒乓/球拍/賣/完/了」或是 「乒乓球/拍賣/完/了」,這稱為中文斷詞的歧異性,兩種斷法都是合法的。幸好已經有很成熟的中文斷詞套件可以用,而且斷出來的結果也很棒,像是 jieba(如果是 R 可以用 jiebaR 這個套件):

有了這個工具,給我們任意文章,我們都可以把文章變成斷好的詞:

隨便上網找一篇新聞,其中 \n 是換行字元

其中我們發現有很多我們不想要的東西,這邊可以暫時忽略不管。

詞頻

接下來我們要從這些已經斷好的詞,獲得一些有關文本的資訊。最直覺的事情就是「哪些詞是重要的詞」?這個問題可能可以透過統計每個字出現的次數來獲得解答:

Counter 可以快速幫我們統計一個 list 裡面的 element 出現的次數

恩…最好排序一下

我們可以發現,出現最多次的是標點符號、的、\n 等等不重要的東西。

這是直接從斷詞結果算次數的缺點,因為一篇文章中最常出現的前幾個「詞」通常不是那篇文章要提到的重點,而是一些「所有中文文章都會用到的東西」,像是你、我、的…或是標點符號。

不過至少我們可以花點時間往下看,就會發現「韓國瑜」、 「發大財」這種可以代表這篇文章的重點的詞。

Note: 標題是寫詞頻 term frequency,所以大家也可以把 count 出來的出現次數除以總詞數,反正兩者在只有一篇文章的情況下代表的是一樣的事情。

參考文章

TF-IDF

TF-IDF 是文字探勘中很重要的觀念,可以從某個領域的文本中挑出重要的字。

TF 就是前面提到的詞頻 Term Frequency,在文本分析中,我們會關心哪些詞彙在這些文本是重要的,例如我們爬了某段時期的新聞,我們可能會想知道這些新聞都在關心什麼字,很直覺的想法就是把所有文章斷詞,然後統計詞頻。

但是如果只以詞頻作為判斷依據,會發現有些不重要的字,像是我、的、一、要、…跑到很前面,這些字之所以出現頻率很高,是因為這些是所謂的「日常生活」的用字,我們不希望這些字輩我們 count 成重要的字,所以出現了 IDF 的概念。

IDF 是 Inverse Document Frequency 的縮寫,概念就是某一個字出現在越多文本中,它的 IDF 值就會越低。例如現在有 10 篇新聞,每篇都有出現「我」這個字,所以他的 IDF 值就會很低;相對的,如果只有其中兩篇出現「資料分析」這個詞,它的 IDF 值就會很高,可以參考這個公式:

|D|是所有文本數量
|{j : t_i ∈d_j}|表示這個字出現在幾篇文本中

而 TFIDF 值就是 TF 乘上 IDF,每個詞在每篇文本都有各自的 TFIDF 值,可以看出那個詞在那篇文本中是不是一個重要的詞。

TF-IDF

TF-IDF in R / Python

補充資料