【实验记录与总结】名称+数量+地理位置实体提取
发布日期:2021-06-29 02:15:45 浏览次数:3 分类:技术文章

本文共 1434 字,大约阅读时间需要 4 分钟。

  • 模型:出于对所用数据的考虑,本实体关系提取实验未使用联合抽取模型,而是分别开展实体提取与关系提取部分。实体提取部分,使用Albert+BiLSTM+CRF模型。
  • 数据:信息丰富的多源文本数据(主要为亚洲象监测员发布的朋友圈 + 少量新闻/微博数据)

数据准备

数据标注

  • 抽取数据以标注:在WPS-Excel中,每隔3行抽取一条数据,用于标注,使用以下语句实现:
=IF(MOD(ROW()-2,3)=0,A3,"")
数据随机抽取

 

  • “BIO”数据标注:将数据化为每字一行(Excel而非WPS:两端对齐,填充),手动标注。注意单字后的标点符号,可以使用“分列”功能快速删除。

 

训练/测试/验证标注数据划分

  • 按照6:2:2比例,将标注数据划分为训练集、测试集与验证集。

 

训练/测试/验证标注数据放至相应文件

  • 即训练数据放入.train,测试数据放入.test,验证数据放入.dev
  • 注意:① 各条数据之间需一个换行符,对应下下述代码:
for c in l.split('\n'):
  • ②数据最后应有两个换行符,对应下述代码:
for l in f.split('\n\n'):

 

标注数据格式

模型构建、训练与评估

  • 详见本博客相关博文及GitHub()

模型应用

  • 关键代码如下:
model.load_weights('…….weights')#NER = NamedEntityRecognizer(trans=K.eval(CRF.trans), starts=[0], ends=[0])r = open("……result.txt", 'w')with open("……all data.txt", 'r', encoding='utf-8') as tt:    content = tt.readlines()for line in content:    ner = NER.recognize(line)    print(ner, file=r)

 


程序报错及解决

编码问题:'gbk' codec can't encode character '\u3cd5' in position 34: illegal multibyte sequence

###模型应用时,调用以下程序:model.load_weights('D:\Asian elephant\毕业\地理位置提取\代码\gao A_geography_NER\A_geography_NER\\last_model.weights')r = open("…….txt", 'w',encoding='utf-8')with open("…….txt", 'r') as tt: ###症结所在    content = tt.readlines()for line in content:    ner = NER.recognize(line)    print(ner, file=r)
  • 解决:打开文件的同时,设置编码方式: encoding='utf-8'
  • 参考:

值错误:ValueError: not enough values to unpack (expected 2, got 1)

char, this_flag = c.split(' ') #以空格分隔,char为前面汉字,this_flag为后面标注字母
  • 可能的原因:各条数据之间应为一个换行符,但误写为一个空格。

 

转载地址:https://blog.csdn.net/YWP_2016/article/details/115365647 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【NLP_模型超参数浅析】batchsize
下一篇:【NLP_模型超参数浅析】global_step

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月29日 05时24分46秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章