框架下cookie的使用_NLP(三)使用tensorflow搭建序列标注任务框架(下)

620b257f254fbd9c52552d17c3a501ce.png

代码:

lylylylylyly/modelforCWS​github.com
9ed2fb61fc5b5d0164f4b939a4bfe48d.png

评测准备:我这里采用了很受欢迎的评测工具:conlleval.pl。可以直接得到accuracy,precision,recall以及F1值。可以在这里下载conlleval+perl环境+conlleval使用说明。也可以到我的网盘上下载:链接:https://pan.baidu.com/s/1jNy9ruAGJYkoaButnfstBg 提取码:ftj2 。

首先,安装perl,然后在命令窗口使用:perl conlleval.pl < label_and_predict.txt > result.txt。result.txt保存的就是测试信息,可以查看。但需要注意的是,可能这个工具开始是用作测试命名实体识别任务,如果是分词,需要把结果严格按照要求的样子修改,不然会出现precisions, recall, f1都为0的情况。我是在每个label后面统一加了'-mm'。即类似: '0-mm', '1-mm', '2-mm', '3-mm'。

更新于2020/03/05----这里加一个conlleval.pl的坑。使用的是BIO标注法,而不是BIOES标注法。如果你模型的输出是BIOES标注的,需要把E(end)转化为I,S(single)转化为B。最坑的一点,是需要把所有的O标注都转化为0,然后才能写到文件里。要严格按照这种形式,得到的结果才是对的。

这一部分主要介绍测试部分,之前通过训练已经生成了训练模型。测试部分的结构为,按顺序从上往下一个个调用:

def test(self, test_data):
       ... ...
def dev_one_epoch(self, sess, dev):
       ... ...
def predict_one_batch(self, sess, seqs):
       ... ...
def evaluate(self, label_list, seq_len_list, data, epoch=None):
       ... ...

数据处理和训练时一样,使用saver.restore(sess, model_path)加载模型参数。mark:model_path这里有一个坑。windows系统上路径形式一定要是“./mode_path/mode_name”的形式。不然会报错找不到模型。也可以直接用函数tf.train.latest_checkpoint()获得最新的模型路径。然后,还是按照批数据进行预测,一直到整个数据都预测完成,就是一个epoch结束。评估时,要先生成一个label.txt。每一行是[token, label, predict]。然后,直接调用conlleval.pl就可以了。

5e174b06eb0701128da0b6ae90c455c3.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值