在機(jī)器人圍棋大勝李世石、柯潔之后尖淘,人工智能越來越火,智能問答也是人工智能中必不可少的一環(huán)著觉。智能問答一般用于解決企業(yè)客服村生、智能資訊等應(yīng)用場景,實(shí)現(xiàn)的方式多種多樣饼丘,包括簡單的規(guī)則實(shí)現(xiàn)趁桃,也可以基于檢索實(shí)現(xiàn),還可以通過encoder-decoder框架生成肄鸽,本文通過幾種常見的問答技術(shù)卫病,概要介紹了達(dá)觀數(shù)據(jù)智能問答相關(guān)原理研究。
1.基于規(guī)則的智能問答
基于規(guī)則的智能問答通常是預(yù)先設(shè)置了一系列的問答規(guī)則典徘,在用戶輸入一個(gè)問題時(shí)蟀苛,去規(guī)則庫里匹配,看是否滿足某項(xiàng)規(guī)則逮诲,如果滿足了就返回該規(guī)則對應(yīng)的結(jié)果帜平。如規(guī)則庫里設(shè)置“*你好*”->“你好坝母妗!”罕模,那么用戶在輸入“你好”時(shí)评腺,機(jī)器人會(huì)自動(dòng)返回“你好啊淑掌!”蒿讥。如果規(guī)則庫非常龐大,達(dá)到了海量的級別庫抛腕,則可對規(guī)則建立倒排索引芋绸,在用戶新輸入一個(gè)問題時(shí),先去倒排索引中查找命中的規(guī)則集合担敌,再通過這個(gè)集合中的規(guī)則進(jìn)行匹配返回摔敛。
使用規(guī)則庫的智能問答優(yōu)點(diǎn)是簡單方便,準(zhǔn)確率也較高全封;缺點(diǎn)是規(guī)則庫要經(jīng)常維護(hù)擴(kuò)展马昙,而且覆蓋的范圍小,不能對新出現(xiàn)的問題進(jìn)行回答刹悴。
2.基于檢索的智能問答
基于檢索的智能問答很像一個(gè)搜索引擎行楞,但又和搜索引擎不同,相比搜索引擎而言土匀,智能問答更側(cè)重于用戶意圖和語義的理解子房。它基于歷史的問答語料庫構(gòu)建索引,索引信息包括問題就轧、答案证杭、問題特征、答案特征等妒御。用戶問問題時(shí)解愤,會(huì)將問題到索引庫中匹配,首先進(jìn)行關(guān)鍵字和語義的粗排檢索乎莉,召回大量可能符合答案的問答對送讲;然后通過語義和其他更豐富的算法進(jìn)行精排計(jì)算,返回最好的一個(gè)或幾個(gè)結(jié)果梦鉴。
1.1?粗排策略
粗排策略跟一般的搜索引擎非常類似李茫,主要基于的技術(shù)包括粗細(xì)粒度分詞、詞重要性計(jì)算肥橙、核心詞識別魄宏、命名實(shí)體識別、語義歸一等相關(guān)技術(shù)存筏,主要是為了在粗排階段盡可能地把相關(guān)問題進(jìn)行召回宠互。
1)?詞重要性計(jì)算:通過計(jì)算重要性味榛,越能表示問題的詞匯權(quán)重越高,在召回時(shí)命中這些詞匯的候選集越有可能被召回予跌。如:“靠譜的英語培訓(xùn)機(jī)構(gòu)有哪些搏色?”,在這個(gè)問題中券册,“英語”频轿、“培訓(xùn)”、“機(jī)構(gòu)”是高權(quán)重的詞烁焙,“靠譜”是較高權(quán)重的詞航邢,“哪些”是較低權(quán)重的詞;因此越符合“英語培訓(xùn)機(jī)構(gòu)”的答案越有可能被召回骄蝇。
2)?核心詞識別:核心詞就是候選集中必須相關(guān)的詞膳殷。如“北京住宿多少錢?”
九火,核心詞是“北京”赚窃、“住宿”,如果候選集中沒有這兩個(gè)相關(guān)的詞岔激,如“上海住宿多少錢勒极?”,“北京吃飯多少錢”鹦倚,都是不符合問題需求的河质。
3)?命名實(shí)體識別:通過命名實(shí)體識別冀惭,能協(xié)助識別出問題答案中的核心詞震叙,也可以對核心專有名詞進(jìn)行重要性加權(quán),輔助搜索引擎提升召回效果散休。
4)?語義歸一也是擴(kuò)大召回的重要手段媒楼,同一個(gè)問題可能有很多種問法,不同的問法如果答案不同戚丸,或者召回的結(jié)果數(shù)目不同划址,就會(huì)很讓人煩惱了,比如“劉德華生日是哪天限府?”夺颤、“劉德華出生在哪一天?”胁勺,如果不作語義歸一的話世澜,有可能某一個(gè)問題都不會(huì)召回結(jié)果。
1.2?精排策略
通過粗排署穗,搜索引擎已經(jīng)返回了一大批可能相關(guān)的結(jié)果寥裂,比如500個(gè)嵌洼,如何從這500個(gè)問題中找到最符合問題的一個(gè)或者幾個(gè),非撤馇。考驗(yàn)算法精度麻养。一般基于檢索的問答系統(tǒng)都會(huì)通過語義或者深度學(xué)習(xí)的方法尋找最匹配的答案。
1)?????? 基于句子相似度的算法
基于句子相似度的算法有很多種诺舔,效果比較好的有基于word2vec的句子相似度計(jì)算和基于sentence2vec的句子相似度計(jì)算鳖昌。基于word2vec計(jì)算兩個(gè)句子的相似度低飒,就是以詞向量的角度計(jì)算第一個(gè)句子轉(zhuǎn)換到第一個(gè)句子的代價(jià):
詞向量有個(gè)有趣的特性遗遵,通過兩個(gè)詞向量的減法能夠計(jì)算出兩個(gè)詞的差異,這些差異性可以應(yīng)用到語義表達(dá)中逸嘀。如:vec(Berlin) – vec(Germany) = vec(Paris) – vec(France)车要;通過這個(gè)特性能夠用用來計(jì)算句子的相似度。假設(shè)兩個(gè)詞xi, xj之間的距離為
崭倘,這可以認(rèn)為是xi轉(zhuǎn)換到xj的代價(jià)翼岁。可以將句子用詞袋模型
表示司光,模型中某個(gè)詞i的權(quán)重為
琅坡,其中ci是詞i在該句子中出現(xiàn)的次數(shù)。設(shè)置
為一個(gè)轉(zhuǎn)換矩陣残家,Tij表示句子d中詞i有多少權(quán)重轉(zhuǎn)換成句子d’中的詞j榆俺,如果要將句子d完全轉(zhuǎn)換成句子d’,所花費(fèi)的代價(jià)計(jì)算如下:
如果用Xd表示句子中的詞向量通過權(quán)重di進(jìn)行加權(quán)平均的句向量坞淮,可以推導(dǎo)出茴晋,句子轉(zhuǎn)換代價(jià)的下限是兩個(gè)句向量的歐式距離。
一般這個(gè)下限表示兩個(gè)短句子相似的程度已經(jīng)足夠了回窘,如果需要通過完全最優(yōu)化的方法計(jì)算
的值诺擅,可以通過EMDsolver算法計(jì)算。
2)?????? 基于深度學(xué)習(xí)計(jì)算問答匹配程度
基于句向量的距離計(jì)算句子相似度啡直,可以cover大部分的case烁涌,但在句子表面相似,但含義完全不同的情況下就會(huì)出現(xiàn)一些問題酒觅,比如“我喜歡冰淇淋”和“我不喜歡冰淇淋”撮执,分詞為“我”,“不”舷丹,“喜歡”抒钱,“冰淇淋”,兩個(gè)句子的相似度是很高的,僅一字“不”字不同继效,導(dǎo)致兩個(gè)句子意思完全相反症杏。要處理這種情況,需要使用深度模型抓住句子的局部特征進(jìn)行語義識別瑞信。
如圖所示厉颤,Q是用戶的問題,D是返回的各個(gè)答案凡简。對于某一個(gè)問答句子逼友,首先將它映射到500k大小的BOW向量TermVector里。因?yàn)門ermVector是稀疏矩陣秤涩,可以使用WordHashing或者其他Embedding的方法將其映射到30k大小的詞向量空間里帜乞。接下來的l1, l2,l3層就是傳統(tǒng)的MLP網(wǎng)絡(luò),通過神經(jīng)網(wǎng)絡(luò)得到query和document的語義向量筐眷。計(jì)算出(D黎烈,Q)的cosinesimilarity后,用softmax做歸一化得到的概率值是整個(gè)模型的最終輸出匀谣,該值作為監(jiān)督信號進(jìn)行有監(jiān)督訓(xùn)練照棋。模型通過挖掘搜索點(diǎn)擊日志構(gòu)造的query和對應(yīng)的正負(fù)document樣本(點(diǎn)擊/不點(diǎn)擊),輸入DSSM進(jìn)行訓(xùn)練武翎。
3)?????? 基于卷積神經(jīng)網(wǎng)絡(luò)計(jì)算問答匹配程度
句子中的每個(gè)詞烈炭,單獨(dú)來看有單獨(dú)的某個(gè)意思,結(jié)合上下文時(shí)可能意思不同宝恶;比如“Microsoftoffice”和“I satin the office”符隙,這兩句話里的office意思就完全不一樣。通過基于卷積神經(jīng)網(wǎng)絡(luò)的隱語義模型垫毙,我們能夠捕捉到這類上下文信息霹疫。
如圖所示,先通過滑窗構(gòu)造出query或document中的一系列n-gramterms露久,比如圖中是Word-n-gramlayer中的trigram更米;然后通過word-hashing或者embedding將trigramterms表示為90k的向量欺栗;通過卷積向量Convolutionmatrix Wc對每個(gè)letter-trigram向量作卷積毫痕,可以得到300維的卷積層Convolutionallayer;最后通過max-pooling取每個(gè)維度在Convolutionallayer中的最大值迟几,作為文本的隱語義向量消请。模型也是通過挖掘搜索日志進(jìn)行有監(jiān)督訓(xùn)練。
通過卷積神經(jīng)網(wǎng)絡(luò)类腮,能得到句子中最重要的信息臊泰。如下面一些句子,高亮的部分是卷積神經(jīng)識別的核心詞蚜枢,它們是在300維的Max-pooling層向量里的5個(gè)最大神經(jīng)元激活值缸逃,回溯找到原始句子中的詞組针饥。
microsoftoffice excelcould allow remotecode execution
welcome to theapartment office
4)?????? 基于主題模型計(jì)算問答匹配程度
短文本一般詞語比較稀疏,如果直接通過共現(xiàn)詞進(jìn)行匹配需频,效果可能會(huì)不理想丁眼。華為諾亞方舟實(shí)驗(yàn)室針對短文本匹配問題,提出一個(gè)DeepMatch的神經(jīng)網(wǎng)絡(luò)語義匹配模型昭殉,通過(Q, A)語料訓(xùn)練LDA主題模型苞七,得到其topicwords,這些主題詞用來檢測兩個(gè)文本是否有語義相關(guān)挪丢。該模型還通過訓(xùn)練不同“分辨率”的主題模型蹂风,得到不同抽象層級的語義匹配(“分辨率”即指定topic個(gè)數(shù),高分辨率模型的topicwords通常更加具體乾蓬,低分辨率的topicwords通常更加抽象)惠啄。在高分辨率層級無共現(xiàn)關(guān)系的文本,可能在低分辨率存在更抽象的語義關(guān)聯(lián)任内。DeepMatch模型借助主題模型反映詞的共現(xiàn)關(guān)系礁阁,可以避免短文本詞稀疏帶來的問題,并且能得到不同的抽象層級的語義相關(guān)性族奢。
如圖所示姥闭,綠色和紫色塊分別表示在同一個(gè)分辨率下不同的主題在X和Y文本中命中的主題詞塊,與上一層分辨率(p-layerII)的主題的關(guān)聯(lián)通過是否與上一層的主題詞塊有重疊得到越走。如此通過多層的主題棚品,能夠構(gòu)建出神經(jīng)網(wǎng)絡(luò),并使用有監(jiān)督的方式對相關(guān)權(quán)重進(jìn)行訓(xùn)練廊敌。
2.?基于產(chǎn)生式的智能問答
基于產(chǎn)生式的智能問答系統(tǒng)铜跑,主要是通過seq2seq的方式,通過一個(gè)翻譯模型的方式進(jìn)行智能回答骡澈,其中問題是翻譯模型的原語言锅纺,答案是翻譯模型的目標(biāo)語言。Seq2seq模型包含兩個(gè)RNN肋殴,一個(gè)是Encoder囤锉,一個(gè)是Decoder。Encoder將一個(gè)句子作為輸入序列护锤,每一個(gè)時(shí)間片處理一個(gè)字符官地。Decoder通過Encoder生成的上下文向量,使用時(shí)間序列生成翻譯(回答)內(nèi)容烙懦。
在Encoder中驱入,每一個(gè)隱藏的狀態(tài)影響到下一個(gè)隱藏狀態(tài),并且最后一個(gè)隱藏狀態(tài)可以被認(rèn)為是序列的總結(jié)信息。最后這個(gè)狀態(tài)代表了序列的意圖亏较,也就是序列的上下文莺褒。通過上下文信息,Decoder會(huì)生成另一個(gè)結(jié)果序列雪情,每一個(gè)時(shí)間片段癣朗,根據(jù)上下文和之前生成的字符,Decoder都會(huì)生成一個(gè)翻譯字符旺罢。
這個(gè)模型有一些不足:首先是這個(gè)模型不能處理變長的字符序列旷余,而一般的翻譯模型和問答模型中的序列長度都是不定的。另外一個(gè)是僅通過一個(gè)context變量扁达,并不足以完全表示輸入序列的信息正卧。在序列變得很長之后,大量的信息會(huì)被丟棄跪解,因此需要多個(gè)context變量及注意力機(jī)制進(jìn)行處理炉旷。
2.1?Padding
通過Padding方式,可以將問答字符串固定為定長的序列叉讥,比如使用如下幾個(gè)序列進(jìn)行Padding:
EOS?: 序列的結(jié)束
PAD?: Padding字符
GO?: 開始Decode的字符
UNK?: 不存在字典中的字符
對于問答對:
Q?: 你過得怎樣窘行?
A?: 過得很好。
通過padding將生成固定的如下字符串:
Q?:?[?PAD, PAD, PAD,PAD, “图仓?”, “樣”, “怎”, “得”, “過”, “你”?]
A?:?[?GO, “過”, “得”, “很”, “好”, “罐盔。”, PAD,EOS, PAD, PAD?]
2.2?注意力機(jī)制
Seq2Seq的一個(gè)限制是輸入序列的所有信息只能編碼到一個(gè)定長的數(shù)組context里救崔,如果輸入序列變長的話惶看,我們很容易會(huì)丟失信息,因此Seq2Seq模型對長輸入序列效果很差六孵。通過引入一個(gè)注意力機(jī)制纬黎,可以讓Decoder在翻譯(回答)時(shí)按權(quán)重選擇性地提取輸入的各個(gè)隱層變量進(jìn)行計(jì)算,這樣就能在產(chǎn)生輸出時(shí)考慮到輸入的關(guān)鍵信息了劫窒。
如圖中本今,每個(gè)輸入的狀態(tài)yi除了與前一個(gè)狀態(tài)yi-1,輸入的隱藏狀態(tài)si有關(guān)之外主巍,還與注意力向量ci有關(guān)冠息。
這里的注意力向量不再是單獨(dú)的一個(gè)c,而是對于每一個(gè)輸入yi都有對應(yīng)的ci煤禽,它的計(jì)算方式如下:
eij是一個(gè)對準(zhǔn)模型铐达,它計(jì)算了位置為i的輸入和位置為j的輸出之間關(guān)系的比重。它通過輸出的隱藏狀態(tài)si– 1(用來計(jì)算si及輸出狀態(tài)yi)和輸入序列的第j個(gè)隱藏變量hj計(jì)算而得檬果。
通過將問答對以翻譯模型進(jìn)行訓(xùn)練(問題作為原語言,答案作為目標(biāo)語言),在新來一個(gè)問題時(shí)选脊,可以在沒有任何歷史相似問題的情況下得到較接近的答案杭抠。然而因?yàn)槟壳暗姆g模型還不夠成熟,經(jīng)常翻譯出莫名奇妙的答案恳啥,讓人摸不著頭腦偏灿,如下所示:
你好->你好
很高興認(rèn)識你->我也是
你是誰->我是說,我們是朋友
我們是朋友嗎->不是
我們?yōu)槭裁床皇桥笥?>我們不知道钝的,我們都不知道你們在哪里
達(dá)觀數(shù)據(jù)很厲害->我們知道
通過產(chǎn)生式的翻譯模型翁垂,即使基于大量的語料訓(xùn)練,很有可能效果還是不夠理想硝桩,因此經(jīng)常作為基于規(guī)則和檢索的問答系統(tǒng)的輔助方式沿猜。
3.?小結(jié)
本文介紹了智能問答技術(shù)的相關(guān)原理,講述了實(shí)現(xiàn)智能問答的一般方法碗脊。借助于深度學(xué)習(xí)技術(shù)啼肩,智能問答效果比傳統(tǒng)機(jī)器學(xué)習(xí)提升20%左右。達(dá)觀數(shù)據(jù)擁有多年的自然語言處理技術(shù)積累衙伶,并且緊跟行業(yè)潮流祈坠,在文本語義、信息檢索矢劲、智能問答方面不斷深耕赦拘,助力各個(gè)企業(yè)享受大數(shù)據(jù)技術(shù)的成果。
申請?jiān)囉眠_(dá)觀產(chǎn)品:https://data.datagrand.com/signup/#/experience?source=online
關(guān)注“達(dá)觀數(shù)據(jù)”公眾號芬沉,獲取更多干貨知識另绩。