問答機械人介紹1

2021-10-19 17:58:51 字數 1829 閱讀 6487

知道問答機械人是什麼

知道問答機械人實現的邏輯

在前面的課程中,我們已經對問答機械人介紹過,這裡的問答機械人是我們在分類之後,對特定問題進行回答的一種機械人。至於回答的問題的型別,取決於我們的語料。

當前我們需要實現的問答機械人是乙個回答程式語言(比如python是什麼python難麼等)相關問題的機械人

主要實現邏輯:從現有的問答對中,選擇出和問題最相似的問題,並且獲取其相似度(乙個數值),如果相似度大於閾值,則返回這個最相似的問題對應的答案

問答機械人的實現可以大致分為三步步驟:

對問題的處理

對答案進行的機器學習召回

對召回的結果進行排序

對問題的處理過程中,我們可以考慮以下問題:

對問題進行基礎的清洗,去除特殊符號等

問題主語的識別,判斷問題中是否包含特定的主語,比如python等,提取出來之後,方便後續對問題進行過濾。

獲取問題的詞向量,可以考慮使用詞頻,tdidf等值,方便召回的時候使用

召回:可以理解為是乙個海選的操作,就是從現有的問答對中選擇可能相似的前k個問題。

為什麼要進行召回?

主要目的是為了後續進行排序的時候,減少需要計算的資料量,比如有10萬個問答對,直接通過深度學習肯定是可以獲取所有的相似度,但是速度慢。

所以考慮使用機器學習的方法進行一次海選

那麼,如何實現召回呢?

前面我們介紹,召回就是選擇前k個最相似的問題,所以召回的實現就是想辦法通過機器學習的手段計算器相似度。

可以思考的方法:

使用詞袋模型,獲取詞頻矩陣,計算相似度

使用tfidf,獲取tdidf的矩陣,計算相似度

上述的方法理論上都可行,知識當候選計算的詞語數量太多的時候,需要挨個計算相似度,非常耗時。

所以可以考慮以下兩點:

通過前面獲取的主語,對問題進行過濾

使用聚類的方法,對資料先聚類,再計算某幾個類別中的相似度,而不用去計算全部。

不管是詞頻,還是tdidf,獲取的結果肯定是沒有考慮文字順序的,效果不一定是最好的,那麼此時,應該如何讓最後召回的效果更好呢?

排序過程,使用了召回的結果作為輸入,同時輸出的是最相似的那乙個。

整個過程使用深度學習實現。深度學習雖然訓練的速度慢,但是整體效果肯定比機器學習好(機器學習受限於特徵工程,資料量等因素,沒有辦法深入的學會不同問題之間的內在相似度),所以通過自建的模型,獲取最後的相似度。

使用深度學習的模型這樣乙個黑匣子,在訓練資料足夠多的時候,能夠學習到使用者的各種不同輸入的問題,當我們把目標值(相似的問題)給定的情況下,讓模型自己去找到這些訓練資料目標值和特徵值之間相似的表示方法。

那麼此時,有以下兩個問題:

使用什麼資料,來訓練模型,最後返回模型的相似度

模型該如何構建

模型可以有兩個輸入,輸出為乙個數值,兩個輸入的處理方法肯定是一樣的。這種網路結構我們經常把它稱作孿生神經網路。

很明顯,我們隊輸入的資料需要進行編碼的操作,比如word embedding + lstm/gru/bigru等

兩個編碼之後的結果,我們可以進行組合,然後通過乙個多層的神經網路,輸出乙個數字,把這個數值定義為我們的相似度。

當然我們的深層的神經網路在最開始的時候也並不是計算的相似度,但是我們的訓練資料的目標值是相似度,在n多次的訓練之後,確定了輸入和輸出的表示方法之後,那麼最後的模型輸出就是相似度了。

前面我們介紹了問答機械人的實現的大致思路,那麼接下來,我們就來一步步的實現它

智慧型問答機械人概述

處理邏輯 query 中控邏輯 response 指特定條件下提供資訊或服務的機械人。任務型機械人核心模組主要包括三部分 自然語言理解模組 language understanding 對話管理模組 dialog management 自然語言生成模組 natural language genera...

botpress搭建智慧型問答機械人

如果是公司內部網路,需配置node的http 如果出現python語法錯誤,如下 d develop environment botpress12.6 node modules sqlite3 if not defined npm config node gyp node d program fil...

2017 04 19 特種機械人 獵豹機械人介紹

仿生機械人 獵豹機械人 說起機械人,可能由於受名詞中 人 字的影響,大部分人腦海裡出現的可能要麼是憨態可掬 動作靈活的小nao機械人,要麼是彬彬有禮 動作規範的asimo機械人,亦或是電影 人工智慧 裡有著和人一模一樣的外表的大衛。其實,這些機械人都屬於仿人機械人,這些機械人是模仿人的形態和行為而被...