【DBpedia Spotlight】对知识图谱DBpedia进行实体链接/抽取文本实体
修改論文模型時需要對知識圖譜DBpedia進行實體鏈接,官方的DBpedia Spotlight就非常好用,特此記錄。
?
上次的記錄博客給師弟看了依然有疑問,更新下再寫詳細點~
之后會再寫一個從零開始構建自己的知識圖譜并通過RGCN獲取實體嵌入的博客。
?
1 Docker
由于DBpedia Spotlight需要部署到服務器中,官方使用的是Docker,這里我們需要先下載Docker。(提供一個我使用的Docker版本)
一直點默認安裝即可,不過安裝完成后可能碰到WLS2不一致的問題,官方也給出了解決方法。按照里面說的去下載Ubuntu就行。
在成功安裝完Docker后,選擇Images(鏡像),可以從里面找到ubuntu。
?
?
2 DBpedia Spotlight
DBpedia Spotlight可以把我們輸入的文本中的實體抽取出來,將其對應到知識圖譜DBpedia。官方提供了一個示例網站。
?
下面在Windows的Docker中部署DBpedia Spotlight服務:
1、在DBpedia Spotlight的github上找到對應的Docker命令行代碼,如果要抽取英文文本的實體就找英文模型代碼。英文模型代碼如下:
docker run -tid --restart unless-stopped --name dbpedia-spotlight.en --mount source=spotlight-model,target=/opt/spotlight -p 2222:80 dbpedia/dbpedia-spotlight spotlight.sh en2、Windows打開命令行窗口(先按win+R,輸入cmd,再回車),運行剛剛的Docker命令行。
3、如果運行成功,那么Docker里會有對應的鏡像,然后點擊旁邊的RUN就可以得到對應的容器,接著再運行這個容器。
3 實體抽取
下列代碼需要先按前面的方法把Docker運行起來后才能生效。該代碼的效果和前面提到的網址功能一樣,可以將輸入的文本text里和知識圖譜DBpedia中對應的實體進行關聯。這段代碼實現的功能是,我們傳入一段文本,該函數這段文本里的DBpedia的實體。confidence是置信度,值越高提取文本里的實體越準確,但是可能實體數量也會變少,就和前面那個示例網站一樣。
import requestsDBPEDIA_SPOTLIGHT_ADDR = "http://localhost:2222/rest/annotate"def _text2entities(text, confidence):headers = {"Accept": "application/json"}data = {"text": text, "confidence": confidence}response = requests.get(url=DBPEDIA_SPOTLIGHT_ADDR, params=data, headers=headers)response = response.json()return ([f"<{x['@URI']}>" for x in response["Resources"]]if "Resources" in responseelse [])if __name__ == '__main__':print(_text2entities('My favorite star is Leonardo!', 0.5))結果如下:
總結
以上是生活随笔為你收集整理的【DBpedia Spotlight】对知识图谱DBpedia进行实体链接/抽取文本实体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记一次解决联想笔记本冬天卡顿反应慢的方法
- 下一篇: 魔兽世界335服务端架设对外网开放的步骤