OpenNER关系抽取代码阅读

本文详细记录了在阅读和使用OpenNER框架进行关系抽取时遇到的问题及解决方案,包括解决`no module named framework`错误,处理NYT数据集的Python2.x兼容性,理解JSON格式要求,以及调整模型参数如batchsize和word_embeddingsize。同时,讨论了中文数据格式的适配,并提出了对计算AUC方法的疑问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继上文阅读了论文Neural Relation Extraction with Selective Attention over Instances后,就找源码来修修改改以完成关系抽取的任务。
论文源码是C++实现,在其github上面找到另一个整合了几篇论文更好的框架OpenNER

遇到的坑

no module named framework

这不是少包,这是包在目录下没找到,只需要在import framework的地方修改为from . import framework即可

NYT数据准备

readme提供的数据链接下载下来后还要运行它提供的py文件才可以。而Py文件注意是python2.x的版本(强行转3有点坑)。

json格式

json需要用代码生成,如果直接手写内容的,会报编码错误

载入文件

如果训练文件发生修改,则需要把process_data下的文件删除干净,否则默认读取上一次预处理好的文件

需要调整参数
  • batchsize:如果样本集很少的时候要把batchsize调整到合适的位置(默认160)
  • word_embeddingsize:词向量的维度(默认50)

中文数据格式

由于里面提供的是英文格式,关系抽取需要做中文的,所以这里记录一下中文的格式。词向量现在是随机,到时候肯定要用预模型。

import thulac
import numpy as np
import json
# 生成词向量
thu1 = thulac.thulac(seg_only=True)  #默认模式
text = thu1.cut("工商注册地、税务征管关系及统计关系在广州市南沙区范围内", text=True)  #进行一句话分词
print(text)
text1 = thu1.cut("工商注册地、税务征管关系及统计关系在广州市南沙区范围内", text=True)  #进行一句话分词
print(text1)
text2 = thu1.cut("企业具有独立法人资格", text=True)  #进行一句话分词
print(text2)
words=text.split(" ")
word_list=[]
for w in words:
    word_vec={
   
   }
    w2v=np.random.rand(1,300)
    word_vec
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值