(五)命名实体属性识别
命名实体识别有多种方法,大多数问答系统只识别实体,本文使用bert4keras做实体、属性的识别,使用BIO数据标注方式,识别SENT、PROP、OENT(句子中的主谓宾)的模型,在测试集上达到了的f1值达到了99.5%,能够快速识别问题中的实体和属性。命名实体属性识别模型分为数据标注和训练两个部分,具体如下。
-
数据标注
数据标注使用BIO数据标注,标注标签为:[‘O’,‘B-SENT’,‘I-SENT’,‘B-PROP’,‘I-PROP’,‘B-OENT’,‘I-OENT’],B-SENT表示此元素属于SENT类型,且此元素在片段的开头,I-SENT表示此元素属于SENT类型,且此元素在片段的中间位置,O表示不属于任何类型。
本文的标注样例如下:
纯 B-SENT
文 I-SENT
学 I-SENT
的 O
标 B-PROP
签 I-PROP
名 O
是 O
啥 O
? O维 B-SENT
力 I-SENT
医 I-SENT
疗 I-SENT
第 B-PROP
一 I-PROP
任 I-PROP
董 I-PROP
事 I-PROP
长 I-PROP
的 O
上 B-PROP
任 I-PROP
时 I-PROP
间 I-PROP
? O数据标注方法:本文未使用他人方法,自行根据数据格式编写程序实现数据标注,在此给出本文数据标注的部分程序(源程序太长,给出SPO类型数据标注代码)
数据标注代码:
import os import csv import re import random dir_path = os.getcwd() # 原数据 sop_csv = dir_path + '/corpus/genBIOcsv/so_p.csv' # 要得到的训练集 test_txt =open(dir_path + '/corpus/genBIOcsv/test_test.txt','w',encoding='utf-8') train_txt = open(dir_path + '/corpus/genBIOcsv/train_test.txt','w',encoding='utf-8') valid_txt = open(dir_path + '/corpus/genBIOcsv/valid_test.txt