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传入到数据库中。

读取一行看看:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: BERT-CRF是一种基于深度学习的序列标注模型,可以实现对自然语言文本进行序列标注。在实现BERT-CRF模型时,需要准备一个数据集,用于训练和评估模型的性能。 数据集BERT-CRF模型中非常重要的一部分,它决定了模型的性能和泛化能力。数据集应当包含一组有标注的样本,每个样本都应该是一个输入序列和其对应的标注序列。 对于自然语言处理任务,常用的数据集包括CoNLL-2003、OntoNotes、ACE2005等。这些数据集包含了大量的有标注文本数据,并被广泛应用于序列标注任务中。在准备数据集时,需要根据具体的任务和数据集格式对数据集进行处理。 对于CoNLL-2003数据集,其格式为每个词占据一行,每行包含9个字段,分别为:单词、词性、分块标签和4个NER标记。在处理数据集时,需要将每个样本中的文本与其对应的NER标签分离,并进行适当的编码和分割。 在BERT-CRF实现过程中,还需要考虑如何将输入向量化,并将其转换为能够被BERT模型接受的格式。一种常用的方法是使用bert-serving来将原始文本转换为BERT向量,然后将向量输入到CRF模型中进行标注。 总之,BERT-CRF实现需要准备一个有效的训练数据集数据集应当包含有标注的样本,并符合模型的输入格式。同时,还需要针对具体的任务和数据集格式对数据集进行适当的预处理和编码。 ### 回答2: BERT-CRF是一种基于BERT模型和条件随机场(CRF)的序列标注模型。在实现bert-crf之前,我们需要一个数据集来进行训练和测试。数据集就是文本序列上每个词的标注结果,例如分句、分词、命名实体标注、词性标注等。下面我们来介绍一下如何准备一个数据集。 首先,选择一个合适的任务,例如中文命名实体识别(NER)。NER任务是指识别文本数据中具有特定意义的实体,如人名、组织机构名、地名等。选择该任务的原因是其具有广泛的应用场景,适合用来演示bert-crf模型的实现流程。 接下来是数据收集和预处理。我们需要收集一些包括实体标注信息的文本语料库,并进行预处理,例如分词、去除停用词、标注实体、划分训练集和测试集等。在这一步可以使用一些工具来简化操作,例如jieba分词、StanfordNLP、pyltp等。最终得到的文本序列和标注序列是该数据集的核心部分。 然后是特征工程,即将文本序列和标注序列转化为模型可接受的特征格式。具体来说,需要将文本序列中每个词转化为对应的BERT向量表达形式,同时将标注序列转化为one-hot编码形式。这些特征都可以通过使用相应的Python工具来进行处理。 最后是模型训练和测试。BERT-CRF模型的训练可以使用已经训练好的BERT权重作为初始值,并在预训练期的基础上进行finetuning。模型测试时可以使用在预处理阶段划分的测试集进行验证,最终将预测的标注序列与真实标注序列进行比较,并计算评价指标,如精度、召回率、F1值等。 总之,准备一个数据集BERT-CRF模型实现的重要一步。数据集的质量将直接影响模型的表现效果和应用效果。因此,数据集的准确性和完备性都需要得到重视。 ### 回答3: BERT-CRF是一种自然语言处理技术,其基本思想是结合 BERT(Bidirectional Encoder Representations from Transformers)预训练模型和条件随机场(CRF)来完成对于自然语言序列标注的任务。 在这种技术中,BERT被用来对输入文本进行特征提取,并且将提取的特征序列作为CRF模型的输入,CRF负责对序列进行标注。 对于BERT-CRF,数据集的构建非常重要。数据集必须包含大量的标记数据,即标有正确标注的文本的数据,以确保CRF模型的准确性和效果。构建数据集的主要步骤如下: 1. 定义标记标准 在构建数据集之前,需要定义标记标准。在自然语言处理任务中,标记通常包含实体标记、词义标记、词性标记等。标志标准将大大影响数据集的构建和模型的学习效果,因此必须尽可能严格定义。 2. 选择文本样本 选择文本样本时,需要选择具有代表性的样本来训练模型,应尽可能覆盖各种文本类型和语言风格。这些文本样本应来自于各种来源,例如新闻报道、论坛、社交媒体等。 3. 标记数据 将选定的文本样本转换为适合模型学习的标记数据。还可以利用现成的标记工具进行标记化,例如Stanford NER、spaCy等。 4. 数据预处理 对标注好的数据进行清洗、切分、建立词典等预处理操作,使其适合于BERT-CRF模型进行学习和训练。这些任务可以使用Python等语言的自然语言处理库来完成。 5. 划分数据集数据集划分为训练集、开发集和测试集,通过不断调整模型参数和超参数,并在开发集上测试结果来优化模型,最终在测试集上进行评估。 总而言之,BERT-CRF技术在自然语言处理领域的应用,需要基于一组标记良好且具有代表性的数据集。通过上述步骤,我们可以建立一个完善的数据集来支持BERT-CRF模型的学习和训练。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值