針對data的處理我們稱為data cleansing, data mining;那針對文字的處理,想當然爾,就是text cleansing, text mining,只不過大家通常比較熟悉【文字探勘(text mining)】這個專有名詞,也稱為文字採礦。
事實上,文字雲的製作,就是把目標單字和出現次數給計算出來,次數越多,雲就越大朵,這在前兩天的文章已經提到過了。但是,對於中文而言,要做到【目標單字】這件事情,實在是困難重重。
「難道英文很容易處理嗎?」
「Is it good to drink?」
英文簡單多了啊!
因為英文每句話、每個單字之間都有空格,等於英文已經利用【空格:' '
】幫你把單字給萃取出來了。但中文並不是!舉例中文這句話【難道英文很容易處理嗎?】,含問號總共11個字,沒有任何的標記;但英文這句話【Is it good to drink?】已經用了4個空格,幫你把5個不同的單字給區分開來了。
對於系統來說,如果你取的是長度為2的中文字,縱使我們清掉了問號,系統仍會認為以下這9個字都是你想找的目標單字:難道、道英、英文、文很、很容、容易、易處、處理、理嗎。而我們知道,裡面大概只有:難道、英文、容易、處理,這4個才是我們認知的單字。
如果是長度為3的中文字,系統會認為以下這8個字都是你想找的目標單字:難道英、道英文、英文很、文很容、很容易、容易處、易處理、處理嗎。我們認知的單字就更少了,了不起只有:很容易、易處理,這2個。
而這也是中文相較於英文,更多的一道麻煩的門檻。
你有沒有想過,為什麼我們學習中文的人類,可以這麼快的判斷出那4個和那2個,才是我們認知的單字?為什麼我們的大腦對於判斷這件事情,是那麼的易如反掌?
上圖截自3Blue1Brown在談神經網路的影片,在Day19我談機器學習的文章也有出現過。
透過上述,其實我們發現了某種「學習」的可能性。
舉例來說,一篇文章內,
可能會一直出現「英文」、「處理」,
但總不可能一直出現「道英」、「文很」吧?
所以我們還是可以透過這方式去執行,針對一句話,甚至一篇文章,逐字逐字數去列出所有可能被判斷的單字,剛開始當然也包括「道英」、「文很」這種肯定不是單字的內容,然後去計算次數......
從第1個字開始,往後連續取2個字,當成第一筆資料;
從第2個字開始,往後連續取2個字,當成第二筆資料;
從第3個字開始,往後連續取2個字,當成第三筆資料;
......
從倒數第2個字開始,往後連續取2個字,當作第n筆資料;
然後!
從第1個字開始,往後連續取3個字;
從第2個字開始,往後連續取3個字;
從第3個字開始,往後連續取3個字;
......
從倒數第3個字開始,往後連續取3個字;
接著取4個字、取5個字......
如何?迴圈的感覺是不是來了?
雖然中文處理的過程比較艱辛,但我們還是可以善用原本的標點符號,畢竟這是中文文章內,唯一幫我們將字和字給區分開的標籤。
因此我們可以仿造前兩天處理英文文章的第一步,先將標點符號都替換成空格。然而直到第五步,英文跑完空格,所有英文單字就已經出來,中文的差別在於,跑完空格,只是把中文每一句給拆開來而已,拆開之後,還必須跑「從第1個字開始,往後連續取2個字…」的內迴圈。
「既然如此,還需要拆開嗎?為什麼不直接把標點符號去掉,讓所有句子連在一起?」
拆開的好處在於,讓迴圈批次處理的量增加,我們拿上面這句話當例子,如果不拆開,對於取字串長度為2的迴圈,必須針對「既然如此還需要拆開嗎為什麼不直接把標點符號去掉讓所有句子連在一起」這32個字,一次只跑這1筆資料並跑滿31次;但如果有拆開,
既然如此(4字)
還需要拆開嗎(6字)
為什麼不直接把標點符號去掉(13字)
讓所有句子連在一起(9字)
迴圈等於可以一次處理4筆資料,最多也只需要跑12次(最大值),所以可以說是效率上的考量。
- 對原始資料初步清洗
- 把要分送到不同位置的中文句子給切開
- 把要收納資料的倉庫給建立起來
- 建置【外迴圈控制項】
- 建置【外迴圈方程】並執行
截至上述,都與英文文字雲的前5步驟一模一樣。只是英文文字雲已經把單字切完,而中文才只是把一條中間沒有標點符號的句子收進倉庫而已,切單字的工作,才正要開始進行......
- 建置【內迴圈方程】將用到的SQL query
- 建置【內迴圈方程】
- 製作中文文字雲底階資料
上面最後3個步驟,也類似SQL迴圈實作 -3.關聯分析的處理工廠1提到的最後3個步驟,明後天,我會把完整處理中文文字雲的SQL給放上,分別是外迴圈和內迴圈的先後執行過程。
上一篇:
SQL迴圈實作 -7.英文文字雲的處理工廠2
下一篇:
SQL迴圈實作 -9.中文文字雲的處理工廠2
有請小財神大大:
請教,為什麼上圖中,會有跳篇的狀況...,從系統目錄裡看是正常排序,但這篇文章顯然會跳過文章9,直接跳去文章10。(因為發現文章9的瀏覽數偏低,不符比例,停在這篇看時發現了這樣的問題。)
懇請賜教,感謝感謝!