KBQA-Bert学习记录-数据集构造

目录

一、数据集构造

1.数据集切分

2.NER数据集构造

3.属性相似度数据集构造

4.三元组构造


一、数据集构造

1.数据集切分

使用的数据集是来自NLPCC ICCPOL 2016 KBQA 任务集,其包含:

训练样本14 609 个,测试样本9 870个,格式如下:

将测试数据分成两半,一般作为验证数据,一半作为测试数据:

2.NER数据集构造

对train, val, test文件遍历,并从中将训练文本转为如下形式:

 每个字对应一个实体标签,存放到列表中,句子与句子之间可以以空格分隔,存为txt格式文件。

之后将question, triple, answer这三类字符串,以CSV文件存储起来。

3.属性相似度数据集构造

一开始存了csv文件,里面就是问题、三元组、答案,因此,直接从三元组里面,截取出来中间的字符串,这个字符串就是属性。比如上面那个图,抽取出来的就是:作者、出版社、出版时间等。

抽取出来后,转换为列表并去重,并把尾部和中间的空格去掉,另外,有些属性是以"-"开头的,也需要把"-"去掉,并再次去重,得到属性列表。

接下来把问题和属性都取出来,对其进行文本预处理之后,在从其他的属性中,随机抽样5个作为负样本。

把正样本和负样本合并起来,这样就得到了一个样本的正负训练数据,形式如下:

之后可以把每一条结果,标注上序号存起来,得到最终属性训练数据。如下:

 针对相似度属性的所有文件,我们查看一下句子的最长长度,以选择一个合适的Max Length

4.三元组构造

从原数据中处理即可,最终得到如下形式的训练数据,并以dataframe存储:

5.三元组导入到mysql

需要首先在mysql中,创建好一个数据库,这里直接设置好三个属性即可:entity, attribute, answer

之后通过sqlalchemy.create_engine,建立和数据库的连接。

通过pandas读取数据之后,可以直接通过pd.io.sql.to_sql,把读取好的数据,直接通过engine传入到数据库中。

读取一行看看:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值