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

目录

一、数据集构造

1.数据集切分

2.NER数据集构造

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

4.三元组构造

一、数据集构造

1.数据集切分

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

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

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

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

2.NER数据集构造

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.三元组构造

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

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

5.三元组导入到mysql

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

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

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

读取一行看看:

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

Original: https://blog.csdn.net/Swayzzu/article/details/121932297
Author: Swayzzu
Title: KBQA-Bert学习记录-数据集构造

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/545173/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球