图谱问答-理解query
內容來自七月算法nlp課程。
圖譜問題是用戶輸入一句話,系統返回這句話的答案。這里分多種情況。例如根據實體和關系查詢尾實體,或者根據實體查詢關系,甚至還會出現多跳的情況,不同的情況采用的方法略有不同。
文章目錄
- 1 根據實體和關系查詢尾實體
- 1.1 找到實體與關系
- 1.1.1 AC自動機
- 1.2 實體鏈接
- 1.3 實體消岐
1 根據實體和關系查詢尾實體
需要兩個步驟完成:第一步找到實體與關系;第二步實體鏈接和實體消岐。
1.1 找到實體與關系
NER的方式很多??梢圆捎脗鹘y機器學習的分類方法,也可以使用深度學習神經網絡,一般架構為encoder+cfr層。
這里重點介紹AC自動機
1.1.1 AC自動機
1、構建前綴樹
2、給前綴樹加上fail指針
節點i的fail指針,如果在第一層,則指向root節點,其它情況指向其父節點的fail指針指向的節點的相同節點
1.2 實體鏈接
根據上一步抽取出實體和關系:例如 一句話“周董的女兒叫什么”。抽取出 周董、女兒。
圖數據庫中的實體可能和抽取出來的實體不一致。這個時候就需要實體鏈接。例如庫中可能是周杰倫。這樣第一步就需要找到一個候選實體集合。最好的方法是構建實體詞典。用抽取出來的詞在詞典中查詢。
例如詞典中包含 周董、周杰倫、Jay都指向周杰倫這個實體。那抽取出來的“周董”也就可以連接到周杰倫這個實體了。
如果這個時候查出來的實體只有一個那實體鏈接就結束了。如果查出來是多個,那就需要實體消岐了。
1.3 實體消岐
實體消岐,簡單的可以度最高的那個。這里度可以是這個節點的熱度或者節點在圖中的出度和入度之和。當然也可以選擇匹配的方法。
老師講的是候選實體與query做相似度計算,我理解的應該是候選實體與抽取出來的subject做相似度計算。
經過思考證明我的想法是錯誤的。例如query=“周董的女兒”。提取出subject=周董。經過實體鏈接之后發現庫中有2個周董相關的實體。一個是歌手,一個是某公司領導。這個時候就需要實體消岐。如果拿著subject去與兩個實體的相關屬性計算相似度是沒有意義的。只能用“周董的女兒”去計算相似度。也許其中一個實體沒有女兒的關系。那就只能選擇另外一個實體了。而用subject=周董去計算相似度,信息太少了。
所以用于計算文本相似度的應該是query。
1、使用孿生網絡,計算相似度
例如模型m1,m2權重共享參數,query作為m1的輸入,候選實體1作為m2的輸入,分別得到embedding之后,兩個embedding計算相似度,得到一個(0,1)范圍內的值。
可以把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
總結
以上是生活随笔為你收集整理的图谱问答-理解query的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术的自我修炼
- 下一篇: C++打印ASCLL码表