隨着認知智能走進了人們的視野,知識圖譜的重要性便日漸凸顯。在今年的天然語言處理頂會 ACL 2020 上,天然語言知識圖譜領域發生了巨大的革新。ACL 做爲 NLP 領域的頂級學術會議,無疑可以很好地呈現該領域的研究風向。
本文做者Michael Galkin(計算機科學家,主要研究方向爲知識圖譜)從問答系統、知識圖譜嵌入、天然語言生成、人工智能對話系統、信息提取等方面總結了 ACL 2020 上知識圖譜最新工做。 AI 科技評論將這份總結編譯以下:ACL 2020 徹底採起了在線會議的模式。想要舉辦這麼龐大的在線活動,讓來自多個時區的參會者共同參與其中,並展現超過 700 篇論文是十分困難的。不過在全部講者、參會者、組織者的努力下,這屆大會得以圓滿進行。那麼與 ACL 2019 相比,知識圖譜和天然語言處理領域發生了大的變化嗎?答案是確定的!咱們將今年該領域的進展歸納爲:java
知識圖譜展示了更好地揭示其它非結構化數據中的高階相關性的能力。web
1算法
在該任務中,研究者們面向 SPARQL 的知識圖譜或 SQL 數據庫這樣的結構化數據源提出了問題。在今年的 ACL 大會上,咱們能夠看到愈來愈多考慮複雜(也被稱爲多跳)問題的工做。舉例而言,Saxena 等人的論文「Improving Multi-hop Question Answering over Knowledge Graphs using Knowledge Base Embeddings」在研究複雜知識圖譜問答任務時,將知識圖譜嵌入與問題嵌入向量耦合在它們的 EmbedKGQA 系統中。_論文地址:https://www.aclweb.org/anthol...,做者經過一些算法(本文做者選用了論文「Complex Embeddings for Simple Link Prediction 」中提出的算法)對底層知識圖譜進行嵌入,從而使每一個實體與關係與一個特定的向量相關聯。在某些狀況下,做者凍結這些向量,或者根據知識圖譜的規模持續調優。其次,做者使用 RoBERTA 模型對輸入進行編碼(最後一層中爲 [CLS] ),並通過 4 個全鏈接層處理,咱們但願經過這種方式將問題投影到複雜的空間中。而關鍵的部分在於評分函數,其中做者採用知識圖譜嵌入的框架,而且構建了一個(頭實體,問題,候選實體)三元組。這裏的評分函數與 ComplEx 算法使用的同樣,頭實體是問題的主實體,問題被當作三元組中的關係,候選實體要麼是小型知識圖譜中的所有實體,要麼是頭實體周圍 2 跳之內的子圖(當須要剪枝時)。這確實與典型的用於訓練知識圖譜嵌入的「1-N」評分機制相相似。經過計算並閾值化問題嵌入 h_q 和每一個關係嵌入 h_r 之間的點積(h_q,h_r),能夠進一步對候選空間進行剪枝。在 MetaQA 和 WebQuestionsSP 上進行的實驗中,做者探索了一種特定的場景:隨機刪除 50% 的邊構造一個不完整的知識圖譜,從而使系統必須學會推理出這些缺失的連接。在知識圖譜完整的場景下,EmbedKGQA 與 PullNet 性能至關(在 3 跳問題上性能稍優),在 Hits@1 的絕對得分上比不使用額外的文本加強知識圖譜的基線高出 10-40%。即便如此,研究 EmbedKGQA 如何處理須要聚合或具備多個具體實體的問題,仍是頗有趣的。數據庫
· 認知智能是計算機科學的一個分支科學,是智能科學發展的高級階段,它以人類認知體系爲基礎,以模仿人類核心能力爲目標,以信息的理解、存儲、應用爲研究方向,以感知信息的深度理解和天然語言信息的深度理解爲突破口,以跨學科理論體系爲指導,從而造成的新一代理論、技術及應用系統的技術科學。 認知智能的核心研究範疇包括:1.宇宙、信息、大腦三者關係;2.人類大腦結構、功能、機制;3.哲學體系、文科體系、理科體系;4.認知融通、智慧融通、雙腦(人腦和電腦)融通等核心體系。 認知智能四步走:1.認知宇宙世界。支撐理論體系有三體(宇宙、信息、大腦)論、易道論、存在論、本體論、認知論、融智學、HNC 等理論體系;2.清楚人腦結構、功能、機制。支撐學科有腦科學、心理學、邏輯學、情感學、生物學、化學等學科。3.清楚信息內涵規律規則。支撐學科有符號學、語言學、認知語言學、形式語言學等學科。4.系統落地能力。支撐學科有計算機科學、數學等學科。api
接口申請官網地址:www.citec.top 服務器
· 微信
接口地址(例子): 框架
· 函數
http://a239p06512.zicp.vip/We...="+apikey+"&msg="+msg+"&ip="+ip 性能
·
用戶端消息內容。
·
String msg ="你在幹嗎呀?";
·
apikey參數。這個apikey就是網站上申請的APIKEY
·
apikey ="";
·
//客戶端ip,最終用戶端的惟一標識(能夠是用戶端的IP,或者手機設備號,或者微信號或者,qq號碼等能證實身份的惟一標識就能夠)
·
String ip ="";
·
//這裏必定要encode轉換編碼。轉成GBK。
·
msg = URLEncoder.encode(msg, "GBK");
·
三個參數所有小寫
·
msg參數就是傳輸過去的對話內容。
·
msg參數要編碼成gbk,否則會亂碼。
·
接口具體代碼:
·
package ai.nlp.jiekou.test;
·
import java.io.ByteArrayOutputStream;
·
import java.io.IOException;
·
import java.io.InputStream;
·
import java.io.UnsupportedEncodingException;
·
import java.net.HttpURLConnection;
·
import java.net.URL;
·
import java.net.URLEncoder;
·
import ai.nlp.util.changliang.ChangLiangZi;
·
public class ApiTest {
·
/**
·
* Get請求,得到返回數據
·
* @param urlStr
·
* @return
·
*/
·
private static String opUrl(String urlStr)
·
{
·
URL url = null;
·
HttpURLConnection conn = null;
·
InputStream is = null;
·
ByteArrayOutputStream baos = null;
·
try
·
{
·
url = new URL(urlStr);
·
conn = (HttpURLConnection) url.openConnection();
·
conn.setReadTimeout(5 * 10000);
·
conn.setConnectTimeout(5 * 10000);
·
conn.setRequestMethod("POST");
·
if (conn.getResponseCode() == 200)
·
{
·
is = conn.getInputStream();
·
baos = new ByteArrayOutputStream();
·
int len = -1;
·
byte[] buf = new byte[128];
·
while ((len = is.read(buf)) != -1)
·
{
·
baos.write(buf, 0, len);
·
}
·
baos.flush();
·
String result = baos.toString();
·
return result;
·
} else
·
{
·
throw new Exception("服務器鏈接錯誤!");
·
}
·
} catch (Exception e)
·
{
·
e.printStackTrace();
·
} finally
·
{
·
try
·
{
·
if (is != null)
·
is.close();
·
} catch (IOException e)
·
{
·
e.printStackTrace();
·
}
·
try
·
{
·
if (baos != null)
·
baos.close();
·
} catch (IOException e)
·
{
·
e.printStackTrace();
·
}
·
conn.disconnect();
·
}
·
return ChangLiangZi.WU;
·
}
·
public static void main(String args []){
·
//三個參數所有小寫
·
//msg參數就是傳輸過去的對話內容。
·
//msg參數要編碼成gbk,否則會亂碼。
·
String msg ="你在幹嗎呀?";
·
//apikey參數。
·
String apikey ="UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV";
·
//客戶端ip,最終用戶端的惟一標識(能夠是用戶端的IP,或者手機設備號,或者微信號或者,qq號碼等能證實身份的惟一標識就能夠)
·
String ip ="127.0.0.1";
·
//這裏必定要encode轉換編碼。轉成GBK。
·
try
·
{
·
msg = URLEncoder.encode(msg, "GBK");
·
} catch (UnsupportedEncodingException e)
·
{
·
e.printStackTrace();
·
}
·
System.out.println(opUrl("http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip));
·
}
·
}
·