前言
本文大多数内容均copy于关系抽取数据集 NYT-10 SemEval2010
一、NYT-10是什么?
NYT-10数据发布于Riedel et al, 2010这篇论文中,其文本来源于纽约时报New York Times所标注的语料,命名实体是通过 Stanford NER 工具并结合 Freebase 知识库进行标注的。命名实体对之间的关系是链接和参考外部的Freebase知识库中的关系,结合远监督方法所得到的。
二、数据下载
1.OpenNRE
数据可直接从这一链接中进行下载:https://github.com/thunlp/OpenNRE/tree/master/benchmark
以其中的download_nyt10.sh为例其内容如下:
mkdir nyt10
wget -P nyt10 https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_rel2id.json
wget -P nyt10 https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_train.txt
wget -P nyt10 https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_test.txt
我的步骤如下:
- 首先需要先安装wget。(使用直接百度得到的安装方法即可。)
- 在需要下载的目标文件下打开cmd。(或者打开cmd然后移动到目标文件下都一样。)
- 将上述4条命令改成如下:
mkdir nyt10
wget --no-check-certificate -P nyt10 https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_rel2id.json
wget --no-check-certificate -P nyt10 https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_train.txt
wget --no-check-certificate -P nyt10 https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_test.txt
如果不修改会报错,报错内容如下。(我的是windows系统。)
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = D:\wget\GnuWin32/etc/wgetrc
--2021-09-25 23:26:05-- https://thunlp.oss-cn-qingdao.aliyuncs.com/opennre/benchmark/nyt10/nyt10_rel2id.json
正在解析主机 thunlp.oss-cn-qingdao.aliyuncs.com... 119.167.128.167, 119.167.128.167
Connecting to thunlp.oss-cn-qingdao.aliyuncs.com|119.167.128.167|:443... 已连接。
ERROR: cannot verify thunlp.oss-cn-qingdao.aliyuncs.com's certificate, issued by `/C=BE/O=GlobalSign nv-sa/CN=GlobalSign Organization Validation CA - SHA256 - G2':
Unable to locally verify the issuer's authority.
ERROR: certificate common name `*.oss-cn-beijing.aliyuncs.com' doesn't match requested host name `thunlp.oss-cn-qingdao.aliyuncs.com'.
To connect to thunlp.oss-cn-qingdao.aliyuncs.com insecurely, use `--no-check-certificate'.
无法建立 SSL 连接。
- 依次运行上述4条命令。(直接运行shell脚本应该也可以,不过我不会。【@_@|||】)
通过这一方法下载会得到总计170+M的数据
2.Tsinghua Cloud 或 Google Drive
Tsinghua Cloud链接:https://link.zhihu.com/?target=https%3A//cloud.tsinghua.edu.cn/f/11391e48b72749d8b60a/%3Fdl%3D1
Google Drive链接(没打开过):https://link.zhihu.com/?target=https%3A//drive.google.com/file/d/1eSGYObt-SRLccvYCsWaHx1ldurp9eDN_/view%3Fusp%3Dsharing
通过这一方式会下载得到大约3G的压缩文件,解压后如下所示。
对于其中的protobuf2json.py文件中可以掉到get_entities如下:
def get_entities(file_name):
print("Loading entities...")
f = open(file_name, 'rb')
for line in f.readlines():
line = line.rstrip()
guid, word, type = line.split('\t')
guid2entity[guid] = {'id': guid, 'word': word, 'type': type}
f.close()
print("Finish loading, got {} entities totally".format(len(guid2entity)))
将其修改为如下(仅修改第5行):
def get_entities(file_name):
print("Loading entities...")
f = open(file_name, 'rb')
for line in f.readlines():
line = line.rstrip().decode()
guid, word, type = line.split('\t')
guid2entity[guid] = {'id': guid, 'word': word, 'type': type}
f.close()
print("Finish loading, got {} entities totally".format(len(guid2entity)))
打开其中的README.md,按照里面的指示需要运行
protoc --proto_path=. --python_out=. Document.proto
python protobuf2json.py
要运行第一条就需要先安装protoc。(安装方法百度得到的方法即可。)
然后,运行以上两条命令即可。