【DBpedia Spotlight】知识图谱实体链接/抽取文本实体

修改论文模型时需要对DBpedia进行实体链接,官方的DBpedia Spotlight就非常好用,特此记录。
 
 

1 Docker

由于DBpedia Spotlight需要部署到服务器中,官方Github使用的是Docker,这里我们需要先下载。(注意不支持MacBook M1)

【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第1张图片

一直点默认安装即可,不过安装完成后可能碰到WLS2不一致的问题,官方也给出了解决方法。按照里面说的去下载Ubuntu就行。

在成功安装完Docker后,选择Images(镜像),可以从里面找到ubuntu
【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第2张图片

 
 

2 DBpedia Spotlight

DBpedia Spotlight可以把我们输入的文本中的实体抽取出来,将其对应到知识图谱DBpedia。官方提供了一个示例网站:https:/demo.dbpedia-spotlight.org
【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第3张图片

下面在Windows的Docker中部署DBpedia Spotlight服务:

1、先去DBpedia仓库下载对应语言的模型,我常用英文,这里下载的英文模型。

【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第4张图片

2、在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 en

【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第5张图片

3、Windows打开命令行窗口(先按win+R,输入cmd,再回车),运行刚刚的Docker命令行,由于我已经运行工,这里就不再运行了。

4、如果运行成功,那么Docker里会有对应的镜像,然后点击旁边的RUN,就可以得到对应的容器,运行该容器,然后编写相应代码。
【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第6张图片

【DBpedia Spotlight】知识图谱实体链接/抽取文本实体_第7张图片

 
 

3 实体抽取

下列代码需要先按前面的方法把Docker运行起来后才能生效。该代码的效果和前面提到的网址功能一样,可以将输入的文本text里和知识图谱DBpedia中对应的实体关联,以字典形式返回。

import json
import re
import requests

DBPEDIA_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 response
        else []
    )

你可能感兴趣的:(学术,DBpedia,实体抽取,NEL,命名实体链接,Spotlight,1024程序员节)