知乎李大海:如何用AI技術打造智能社區( 三 )


下面我從技術的角度簡單去講講我們的瓦力機器人怎么做的 。 這邊以答非所問作為例子來簡單的講一講 。 我們最早解決這個問題的時候采用的是隨機森林的模型 。 什么是隨機森林呢?簡單的來講 , 隨機森林就是用隨機的機制去產生很多分類數組成的森林 。 它的分類數就是把這個樣本放到每個數里去分類 。 舉個例子 , 就是知乎來討論一個問題 , 知乎的寵物是狗還是狐 。 這樣就讓每個樹自己投票 。 在完成這個模型以后 , 我們取得了還不錯的一個效果 , 它的準確率能夠達到97% , 是一個非常高的準確率 。 但是有兩個問題 , 第一個 , 它的召回率不高 , 只有58% , 不到60% 。 這個召回率意味著什么呢 , 意味著我們會錯過壞人 , 就把一些答非所問的回答放到線上去了 。 這樣的話這樣的回答給用戶帶來不好的體驗 , 所以召回率是我們很在意的東西 。 另外 , 這個模型會用到用戶的行為統計特征 , 也就是說 , 就是需要去看有多少用戶對這個進行了點擊回答或者點擊舉報的特征 。 這個特征有什么問題 , 用了這個特征 , 如果對一個新的回答做分類判斷是不是答非所問的時候必須放到線上觀察一段時間 , 看看線上對它的點擊量反對或者舉報 。 這就出問題了 , 因為它上線了 。 如果真的是一個答非所問的話 , 看到這個回答的用戶他的體驗其實就已經受到了傷害 , 這個時間差是存在的 。 我們就開發了一個模型 , 這個模型是基于卵生模型的思路 , 這個思路是去提升網絡結構的表達能力 。 同時對特征進行選取的時候也做了很多仔細的考慮 , 去避免使用前面所說的用戶行為的統計特征 。 最后的結果是這樣 , 我們在召回率上有了一個非常大的提升 , 從60%提升到80% 。 同時任何一個回答只要發出來 , 很快就能夠被分類 。 是還是不是一個答非所問 。 當然它也有缺點 , 它的準確率下降了 , 但是在這個場景我們可以結合其他的業務策略來彌補這個差距 。 所以最后我們就把新的模型上線了 , 去替代了老的模型 。
我們算法團隊在這個月發表了三篇文章 , 在知乎專欄上比較詳細的闡述了知乎在瓦力機器人的工作 , 其中包括了這部分的工作 。 大家感興趣的話可以上知乎專欄看一看 。
我這里還想再跟大家同步一下 , 知乎在陰陽怪氣這個領域的識別的一些實踐 。 這個工作還沒有做完 , 但是我特別想跟大家同步 , 因為這是一個非常難的問題 , 也非常有意思 。 陰陽怪氣就是反諷 。 我們處理的思路 , 首先還是要基于深層語義理解 , 也就是語義分析這個工作 。 但是這個是不夠的 。 因為從我們的實踐來看 , 往往一句話 , 同一句話如果是兩個好朋友之間發生的話 , 它有可能是插科打諢 , 打情罵俏 。 但是如果是兩個陌生人之間一定是有敵意或者不友善的 。 所以基于這樣的思考我們會從兩個方向去綜合判斷 。 反諷這個問題之所以要跟大家分享 , 是因為它是情感分析領域的前沿問題 , 它很難 。 因為反諷是一種完全正面的詞語去表達負面的意思 , 是一個很高級的修辭手法 , 機器人很難明白的 。 像謝爾頓作為物理學家 , 他的智商在全人類排名前10 , 他也常常聽不懂別人對他的諷刺 。
在訓練中我們會把內容本身的特征盡可能的feed到模型中去 , 包括像文本特征 , 一些數值特征 , 還有像反諷詞表 , 以及一些表現符特征等等 。 但是不會把用戶統計特征放進去 , 這個理由和前面是一樣的 。 我們使用的網絡拓撲模型使用的CNN和LSTL的結合 。 最關鍵的其實是最后一部分 , 我們在分類層是用知乎層大量一致的語料產生標準數據 , 這就是我前面講的用戶行為 。 舉個例子 , 簡單的說 , 如果一個評論有很多好的用戶 , 他們都進行了反對 , 可能我們認為這就是一個負向的 。 如果另外一個評論有很多用戶點了贊同 , 它可能就是正向的 。 基于這個我們可以構建大量的一個標注數據 。 這樣一個方案我們現在還在開發過程中 , 有結果后我們會發布到知乎專欄上 , 大家也可以關注一下 。 當然這個問題比較難 , 可能我們還要解決很多細節問題 , 時間可能會比較久 。 但是沒有關系 , 我們相信知乎通過這種龐大的高質量用戶行為的學習和分析 , 一定在語義和用戶關系這兩個層面上一個更深的建模和理解 。 能夠像在反諷前沿領域的突破 , 任何一個突破對中文互聯網 , 甚至全球互聯網討論環境中都應該有非常正面的作用 。

推薦閱讀