用機器學習打造聊天機械人 六 原理篇

2022-08-05 03:03:15 字數 2773 閱讀 4987

本文是用機器學習打造聊天機械人系列的第六篇,主要介紹**中用到的相關演算法的原理。了解演算法原理,可以讓我們知道程式背後都做了些什麼,為什麼有時候會出現錯誤以及什麼場景下選擇哪種演算法會更合適。

word2vec 基於分布式表徵(dristributed representation)的 思想,相比於 one hot 可以用更低維數的向量表示詞彙。 有乙個有趣的研究表明,用詞向量表示我們的詞時,我們可以發 現:king - man + woman = queen。

word2vec 實現了 cbow 和 skip-gram 兩個神經網路 模型,skyaae 在訓練詞向量的時候就是使用的 cbow 模型。

cbow(continuous bag-of-words,連續詞袋)的核心思想是可 以用乙個詞的周圍的詞來**這個詞。該模型的訓練輸入是某乙個特 徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的乙個詞的 詞向量。 比如這段話:「...an efficient method for 【learning】 high quality distributed vector...」,我們要** learning,則 可以選取上下文大小為 4,也就是我們需要輸出的詞向量,上下文對 應的詞有 8 個,前後各 4 個,這 8 個詞是我們模型的輸入。由於 cbow 使用的是詞袋模型,因此這 8 個詞都是平等的,也就是不考慮他們和 我們關注的詞之間的距離大小,只要在我們上下文之內即可。與 cbow 相對應的是 skip-gram 模型,核心思想是可以用當前詞去**該詞的 周圍的詞。

可以看出,當word2vec模型訓練好了之後,詞的向量表徵也就確定了,以後再次使用的時候,輸入乙個詞,模型就給你那個確定的向量。所以我們表示乙個句子的時候,需要先分詞,然後分別取出詞的向量,然後通過一些方式將這些向量融合在一起來表示整個句子,比如累加後除以分詞列表的長度。

隨機事件的其中一種情況,比如電影領域問答中的意圖分類可能包括:閒聊,評分,上映時間,演員等,把使用者問問題看成是隨機事件,則使用者問評分的問題就是隨機事件的其中一種情況。

x

泛指與隨機事件相關的因素,這裡做為概率的條件。

p(c|x)

條件 x 下,c 出現的概率。比如 p(「評分」|「功夫這部電影評分怎麼樣?」)就是表示問題「功夫這部電影評分怎麼樣?」的意圖是「評分」的概率。

p(x|c)

知出現 c 情況的條件下,條件 x 出現的概率,後驗概率,可以根據歷史資料計算得出。

p(c)

不考慮相關因素,c 出現的概率。

p(x)

不考慮相關因素,x 出現的概率。

由推導過程可以得到

p(c|x) = p(c)p(x|c)/p(x)

假設我們有電影領域問題和所屬意圖分類的資料集,那麼p(c(i))=c(i)出現的次數/所有情況出現的總次數,(例如:c(i)可能是『評分』意圖或者『上映時間』意圖);

根據特徵條件獨立假設的樸素思想可以得出如下式子:

p(x|c) = πp(xi|c) (1<=i<=d),d 為屬性的個數

至此得到樸素貝葉斯的具體公式:(這裡的 c 就是 c(i))

利用該公式進行分類的思想就是計算所有的 p(c(i)|x),然後取值(概率)最大的 c(i)做為所屬分類。用公式表達如下:

h 是基於樸素貝葉斯演算法訓練出來的 hypothesis(假設),它的值就是貝葉斯分類器對於給定的 x 因素下,最可能出現的情況c。y 是 c 的取值集合。這裡去掉了 p(x)是因為它和 c 的概率沒有關係,不影響取最大的 c。

樸素貝葉斯直觀上理解,就是和樣本屬性以及樣本類別的出現頻率有關,利用已有的樣本屬性和樣本類別計算出的各個概率,來代入新的樣本的算式中算出屬於各類別的概率,取出概率最大的做為新樣本的類別。

所以為了計算準確,要滿足如下幾個條件:

• 各類別下的訓練樣本數量盡可能均衡

• 各訓練樣本的屬性取值要覆蓋所有可能的屬性的值

• 引入拉普拉斯修正進行平滑處理。

dc表示訓練集 d 中第 c 類樣本組成的集合,外加兩條豎線 表示集合的元素數量;

dc,xi表示 dc 中第 i 個特徵上取值為 xi 的樣本組成的集 合。

為避免出現某一維特徵的值 xi 沒在訓練樣本中與 c 類別同時出 現過,導致後驗概率為 0 的情況,會做一些平滑處理:

k表示總的類別數;

ni表示第 i 個特徵可能的取值的數量。

ok,本篇就這麼多內容啦~,感謝閱讀o(∩_∩)o。

用機器學習打造聊天機械人 三 設計篇

本文是用機器學習打造聊天機械人系列的第三篇,通過閱讀本文你將對聊天機械人的實現有乙個大致的思路。我們的聊天機械人將具備什麼樣的特性?開源聊天機械人框架chatterbot簡介 本專案基於chatterbot0.8.7來開發,但不僅於此。讓我們先對chatterbot做乙個簡單的了解。什麼是chatt...

聊天機械人

我你好!小愛同學 小愛你好,很高興認識你!charset utf 8 css document 休息一會 sleep 1 獲取 使用者傳送的 訊息 可選 後端 對於 使用者發過來的 時候 是否 使用 可選 根據 傳送 過來的 訊息 返回 不同的內容 messagelist array 床前明月光,有...

機械人聊天軟體c C 聊天機械人

例項簡介 c 聊天機械人 例項截圖 核心 3181078聊天機械人 原始碼必讀.pdf 聊天機械人 1.ico 聊天機械人 1.ico form1.designer.cs form1.cs form1.resx program.cs properties assemblyinfo.cs resour...