Python文本分析:從入門到放棄
前面說了小愛同學(xué)已經(jīng)初步學(xué)會(huì)了分詞和畫詞云圖,但是在這個(gè)過程中他還是遇見了一些問題的。其中最主要的兩個(gè)問題是:正則表達(dá)式和同義詞處理。
正則表達(dá)式是要把文本中一些不規(guī)范的字符去除掉,普通字符串處理函數(shù)處理起來很麻煩,正則表達(dá)式就很方便,但小愛完全不懂這個(gè)。
同義詞處理。當(dāng)分詞結(jié)果中出現(xiàn)了“市民”和“居民”二詞時(shí),我們肯定知道這其實(shí)表達(dá)的就是一個(gè)意思,我們需要將二者合并成一個(gè)詞語(yǔ)。
正則表達(dá)式雖然不懂,但網(wǎng)上隨便學(xué)下還是暫時(shí)能滿足需求的。真正讓小愛苦惱的是同義詞處理。
任務(wù)(Task)
人為判斷同義詞很簡(jiǎn)單,但用程序來判斷就不簡(jiǎn)單了。小愛想到了兩種方式:制作一個(gè)同義詞庫(kù);計(jì)算所有詞語(yǔ)的相似度,將相似度高于閾值的詞語(yǔ)作為同義詞。
- 同義詞庫(kù)。在網(wǎng)上百度一番,只發(fā)現(xiàn)了一個(gè)哈工大的同義詞庫(kù),滿心歡喜地點(diǎn)進(jìn)去一看,發(fā)現(xiàn)頁(yè)面已經(jīng)不存在了,真是欲哭無(wú)淚!小愛心想,要不自己制作一個(gè)同義詞庫(kù)?再仔細(xì)一思考其中工作量,算了,還是打消念頭吧,這種方式行不通。
- 相似度計(jì)算。小愛查詢到Python中的synonyms庫(kù)提供了計(jì)算兩個(gè)詞語(yǔ)相似度的方法,結(jié)果還較為靠譜,于是就準(zhǔn)備采用此種方式了。
行動(dòng)(Action)
在找了一篇幾百字的文章進(jìn)行測(cè)試之后,小愛發(fā)現(xiàn)這種方式行得通。于是就正式開始運(yùn)用于公司的文本數(shù)據(jù)了。這時(shí),新的問題又出現(xiàn)了。
公司的客戶反饋數(shù)據(jù)有數(shù)十上百萬(wàn)條,分詞后的詞語(yǔ)集合在去除停用詞之后也有幾萬(wàn)個(gè),小愛的代碼在計(jì)算相似度的時(shí)候卡住了。這個(gè)時(shí)候小愛才醒悟過來:樣本數(shù)據(jù)分詞的詞語(yǔ)量少,計(jì)算量自然少,但隨著詞語(yǔ)數(shù)量的增加,計(jì)算量也是呈指數(shù)增長(zhǎng)的。
算了,這種方式小愛也放棄了。
小愛繼續(xù)百度查詢,發(fā)現(xiàn)了Word2vec庫(kù)可以通過大量訓(xùn)練文本來計(jì)算詞語(yǔ)的相似度。但小愛把所有的文本數(shù)據(jù)進(jìn)行訓(xùn)練之后發(fā)現(xiàn)相似度結(jié)果是非常的不靠譜,想必該庫(kù)所需要的訓(xùn)練樣本是非常之大。
于是,這種方式小愛也放棄了。
結(jié)果(Result)
小愛在查詢文本分析(雖然還只是最簡(jiǎn)單的詞頻統(tǒng)計(jì))相關(guān)資料時(shí)發(fā)現(xiàn),NLP方向遠(yuǎn)不是一朝一夕就可以有產(chǎn)出的,雖然以前也看過《數(shù)學(xué)之美》,略微了解一些,但對(duì)于志向在于機(jī)器學(xué)習(xí)的小愛來說,這ROI太不值了。
就這樣,小愛不打算繼續(xù)專研文本這一塊了,妥妥地驗(yàn)證了一回從入門到放棄之路啊!