上一篇說到 Text Mining 一個很重要的基礎就是能夠每天持許產生新的關鍵字, 這系統才能夠使用, 但這句話說起來說不定比唱得還要好聽, 因為雖然這是第一步, 只是也是最困難的第一步.
而沒想到過了約一年, 這問題在某次看朋友在玩一個遊戲之後獲得靈感, 想說就用這演算法來作整併關鍵字吧, 當時覺得這只是一個非常簡單的小技巧, 只是打算用在一些場合, 但沒想到最後實作出來, 有效性及有用性比預期的高, 就大量普遍使用後, 變成最核心的工具了.
當作完這系統後, 就很高興的在部落格寫篇文章, 說有時候一些小小的創意說不定可以發輝大大的用途, 這就是一個很簡單的例子...
這演算法是沒甚麼, 就是以關鍵字的字數與次數為基準, 字數小的次數多的可以吃掉字數多的中有字數少的子字串的關鍵字, 然後這字數小的關鍵字就把被吃掉的關鍵字次數加進來, 然後有機會下次吃掉更多的關鍵字, 而一直做做很多次 (Recursive) 後, 就出來了.
這個是用在異中取同的觀點, 畢竟越多字往往代表含意越多也越精確, 但若每個概念都這樣區分, 就會有太多重覆的多餘資訊產生, 然後定義出關鍵字後, 我們就可以算關鍵字之間的 Relation 關係, 此時一個最簡單可以實用的語意網路 Semantic Web 就可以用了.
事實上用這方法, 的確是沒有用任何語法分析, 甚至連最基礎的拆解字都沒去用, 把這種整併的觀念套用在這會產生相同觀念的關鍵字, 而我們在做 Text Mining 最重要的就是把觀念給萃取出來不是嗎?
在這個演算法定義後, 接下來的問題是: "要餵進去甚麼樣的資料?"
因為這個方法與其說是 Data Mining 的 Data Mining 還不如說像是 Data Correction 的一環, 把不必要的資訊排除在外, 而前提就是這些資料的文字, 有那些是不必要或多餘的, 這就有點像是我們把文章內容下標一樣, 只是這工作交給 "工人智慧" 的 "群體行為" 來決斷, 不是由專家來編輯.
畢竟用人來看是最準的, 但人不太可能每天去看這幾十萬到幾百萬筆資料然後歸納今天有那些關鍵字須要登錄或產生, 而用這工具就可以做簡單的分析與歸納, 而目前這系統最後還是要用人工去做勾選與分類.
目前這系統每天產生 15~30 個關鍵字, 已經快有 2 萬個關鍵字在 8 個主要分類與 25 個次要分類中, 有興趣的可以來找我一起玩阿... :)