我們能在朋友圈看到的許多傳閱多的公衆號文章,通常都是閱讀量達到10萬以上的熱文。即使是討論同樣的事情,爲什麼這些文章能夠被廣泛傳閱從而讓你忍不住點進去?我們不妨用大數據加上AI的方法來分析一下這個問題。
爲了回答這個問題,我們需要介紹一下中文分詞這個AI相關的語言處理技巧。對分析結果更感興趣的讀者可以直接跳到文章後面部分先睹爲快。
AI原理:
漢語裏面的單個漢字在語境中有很多歧義,只有組合成詞語以後,才更加有意義。這個是漢語和英語不一樣的一個地方。3000多個漢字就能組合非常非常多的詞彙,從而幫助我們表達。我們個人閱讀句子時候,會自然而然的把字分成詞語,但是在計算機算法裏面,必須要從新學習這個技巧。
按照從易到難的順序有下面幾種技術來分詞:
- 使用預先準備的詞典,查找詞典,把句子中的詞彙找到
- 使用AI中的HMM算法
- 使用AI中的CRF算法
- 使用AI中的RNN/LSTM等深度學習算法
詞典的方法比較好理解。假如我們預先收集了所有的中文詞彙,那麼對於任何一個新的句子,我們要做的就是把句子的各種詞的組合拿到詞典裏面去驗證,如果正好在詞典裏面找到了這個詞,那說明測試的詞彙是正確的。 這個方法的運用難點在於計算的效率。如果每次拿到一個新的疑似詞彙,都和詞典的詞挨個比較,那麼是相當花費時間的。計算機學科裏面講求算法的時間複雜度。簡單來說,如果循環一次數據能搞定的事情,就絕對不會循環兩次。因此詞典應該實現做好索引,從而使得尋找某個詞時候,我們能夠用一次查找(幾乎)的時間就準確回答出這個詞到底在不在詞典裏面。
假設我們要對 "李白不是我。”這個句子進行分詞,找到其中的所有詞彙,使用詞典找詞彙的算法步驟如下。
- 假設詞典裏面的詞的最長長度爲M, 那麼從句子的最開始,數M個漢字出來,拿到詞典裏面去比對,看看這個詞是否存在。
- 如果該詞存在,那麼記錄下來。同時從第M+1個漢字開始重複上述過程。
- 如果該詞不存在,從句子最開始數M-1個漢字出來,重新去詞典裏面比較。
- 如果M減小到1以後(即句子的第一個字),那顯然該字只能單獨成詞。這個時候我們把這個單詞記錄下來。然後從句子的第二字開始重複上述過程。
- 重複以上過程,直到整個句子分析完成。
以上面的句子爲例,當我們比較長度爲2個字的詞時候,我們應該找到“李白”這個詞。然後,我們從“不”開始,能找到“不是”第二個詞。最後我們會找到“我”這個詞。
其餘的分詞方法爲AI相關算法。一般來說,AI算法需要大量的標籤,即大量經過人工加註標籤的句子。瞭解AI算法訓練過程的人可能會覺的頭疼。這麼多詞語意味着成千上萬的標籤,AI算法對上萬的標籤進行分類。其實分詞的標註技巧在於,並不要求算法直接學會辨別出各種各樣的詞彙,而是隻需要學會在句子中判斷哪裏是一個的詞的開始(B),詞的中間(I),次的結尾(E),和單獨成詞 (S)四種情況。這樣就把問題大大簡化爲4中學習情況。比如下面的表示:
句子: 李太白不是我。
標籤: B I E B E S
有了無數這樣人工標註好的句子,就可以讓機器學習算法去自動學習了。一旦學好,對於新的句子,算法可以判斷每個字屬於詞首,詞中,詞尾等性質,自然我們也就分好了詞。所有B和E中間的字都屬於一個詞。
HMM (Hidden Markov Chain) 隱藏馬科夫鏈條算法,是一種機器學習算法。對於判斷句子中每個詞的性質特別合適。其原理是假設每一個字都有n個不同隱藏(未知)的狀態,並且有可以測量的表現形式,這個表現形式只依賴這個字的隱藏狀態和前面一些字的隱藏狀態(最簡單的情況,只依賴於當前這個字和前面一個字的隱藏狀態)。對於分詞應用而言,HMM的隱藏狀態就是B,I,E,S中的一種,表現形式就是我們看到的是哪個漢字。HMM的訓練非常簡單,維特比(Viterbi)算法可以快速給出答案。
CRF(Conditional Random Field) 算法和HMM最大的區別在於,HMM有條件獨立的假設,並且當前的節點只依賴於之前的節點。而CRM去掉這些假設,並且可以考慮更多的特徵組合,包括後面的節點信息,因而效果通常更好。
深度學習中的循環神經網絡結構(如RNN, 或者LSTM)在特徵組合上更加靈活,預測效果會更上一層樓。
分析結果:
這些熱文的第一個特點是文章內容有趣。怎麼纔能有趣呢? 看讀者一般喜歡什麼主題。比如說60%的讀者喜歡娛樂相關內容,那麼跟你也基本上有60%的可能性會點擊娛樂性相關的文章。
如上圖所示,前10大主題依次是:(1)社會話題,(2)時事話題,(3)國際話題,(4)健康話題(5)情感話題,(6)財經話題,(7)文化話題,(8)娛樂話題,(9)體育話題,(10)教育話題。其中“社會”和“時事”兩個主題加起來佔比接近50%。這樣10大主題比例是否接近你的閱讀習慣呢?
2.
這些文章的第二個特點是引人注目的標題。爲了達到最大化吸引讀者點擊的目的,公衆號的作者們,絕對是付出了“兩句三年得,一吟淚雙流”的艱辛努力。
閱讀這些熱文的標題,首先讓人印象深刻的是標點符號的運用。經過簡單統計,筆者發現居然有一半左右的熱文標題用了感嘆號! 另外接近20%的人喜歡用問號。 插一句,筆者自我檢查發現,感嘆號用的不多,不過問號好像常用。看來筆者的風格還不是最俗(熱)。
感嘆號 ! |
50% 使用比例 |
問號 ? |
20% 使用比例 |
第二,我們看看這些熱文的標題字數多少,是否有規律可循。
標題的長度分佈如下圖, 從下圖可以看出,一般標題的長度在20個字左右。看來取標題不能太長,也不能太短。不過20個字來說,感覺還是偏長的。看來,標題裏面要把事情講的恰到好處,既不能拖沓也不能透露太多,字數的把握是個技巧。從分佈來看,有的文章標題超過了60個字!
第三,我們運用中文分詞的技術,來看看這些標題都用了哪些耳熟能詳的詞彙?
我們感興趣的是哪些有意思的詞彙出現熱文標題裏面呢? 答案是一些副詞和形容詞等詞彙。常見的詞彙,排名靠前的一些例子如下:
什麼 |
最新 |
這些 |
我們 |
這樣 |
爲什麼 |
剛剛 |
如何 |
今天 |
網友 |
真的 |
一定 |
終於 |
到底 |
緊急 |
注意 |
搞笑 |
突然 |
好消息 |
突發 |