图谱问答-理解query
內(nèi)容來自七月算法nlp課程。
圖譜問題是用戶輸入一句話,系統(tǒng)返回這句話的答案。這里分多種情況。例如根據(jù)實體和關(guān)系查詢尾實體,或者根據(jù)實體查詢關(guān)系,甚至還會出現(xiàn)多跳的情況,不同的情況采用的方法略有不同。
文章目錄
- 1 根據(jù)實體和關(guān)系查詢尾實體
- 1.1 找到實體與關(guān)系
- 1.1.1 AC自動機
- 1.2 實體鏈接
- 1.3 實體消岐
1 根據(jù)實體和關(guān)系查詢尾實體
需要兩個步驟完成:第一步找到實體與關(guān)系;第二步實體鏈接和實體消岐。
1.1 找到實體與關(guān)系
NER的方式很多。可以采用傳統(tǒng)機器學(xué)習(xí)的分類方法,也可以使用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),一般架構(gòu)為encoder+cfr層。
這里重點介紹AC自動機
1.1.1 AC自動機
1、構(gòu)建前綴樹
2、給前綴樹加上fail指針
節(jié)點i的fail指針,如果在第一層,則指向root節(jié)點,其它情況指向其父節(jié)點的fail指針指向的節(jié)點的相同節(jié)點
1.2 實體鏈接
根據(jù)上一步抽取出實體和關(guān)系:例如 一句話“周董的女兒叫什么”。抽取出 周董、女兒。
圖數(shù)據(jù)庫中的實體可能和抽取出來的實體不一致。這個時候就需要實體鏈接。例如庫中可能是周杰倫。這樣第一步就需要找到一個候選實體集合。最好的方法是構(gòu)建實體詞典。用抽取出來的詞在詞典中查詢。
例如詞典中包含 周董、周杰倫、Jay都指向周杰倫這個實體。那抽取出來的“周董”也就可以連接到周杰倫這個實體了。
如果這個時候查出來的實體只有一個那實體鏈接就結(jié)束了。如果查出來是多個,那就需要實體消岐了。
1.3 實體消岐
實體消岐,簡單的可以度最高的那個。這里度可以是這個節(jié)點的熱度或者節(jié)點在圖中的出度和入度之和。當(dāng)然也可以選擇匹配的方法。
老師講的是候選實體與query做相似度計算,我理解的應(yīng)該是候選實體與抽取出來的subject做相似度計算。
經(jīng)過思考證明我的想法是錯誤的。例如query=“周董的女兒”。提取出subject=周董。經(jīng)過實體鏈接之后發(fā)現(xiàn)庫中有2個周董相關(guān)的實體。一個是歌手,一個是某公司領(lǐng)導(dǎo)。這個時候就需要實體消岐。如果拿著subject去與兩個實體的相關(guān)屬性計算相似度是沒有意義的。只能用“周董的女兒”去計算相似度。也許其中一個實體沒有女兒的關(guān)系。那就只能選擇另外一個實體了。而用subject=周董去計算相似度,信息太少了。
所以用于計算文本相似度的應(yīng)該是query。
1、使用孿生網(wǎng)絡(luò),計算相似度
例如模型m1,m2權(quán)重共享參數(shù),query作為m1的輸入,候選實體1作為m2的輸入,分別得到embedding之后,兩個embedding計算相似度,得到一個(0,1)范圍內(nèi)的值。
可以把m1,m2換成bert,使用bert做相似度計算。
也可以采用[CLS]query[SEP]候選實體1[SEP] 這個作為輸入,輸入到bert中。
用來計算相似度的模型
參考老師的博客:https://blog.csdn.net/u012526436/article/details/90179466
重點是ESIM模型。
2、對問題和候選集做embedding,計算余弦相似度
步驟如下:
a 例如選擇模型x ELMo
b 將query輸入到模型x,得到embedding_query
c 將候選實體1輸入到模型x,得到embedding_1
d 計算embedding_query和embedding_1的余弦相似度。
e 計算多個候選實體的余弦相似度,選擇最高的。
哈工大開源的多語言ELMo
https://github.com/HIT-SCIR/ELMoForManyLangs
中文版本的ELMo
https://pan.baidu.com/s/1RNKnj6hgL-2orQ7f38CauA
總結(jié)
以上是生活随笔為你收集整理的图谱问答-理解query的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术的自我修炼
- 下一篇: Depth-first Search深度