# 作业—序列标注
# 一、思路
本次作业要完成 nlp 四大基础任务之一的序列标注任务,也叫做命名实体识别。即是在给定文本中能够对词性、人名地名等特定信息进行标注。
实验主要采用循环神经网络进行搭建,每一条样本输入是一条句子(对应的嵌入向量表示),该样本的标签也是一个等长的句子标签,其中每一个元素对应句子中每一个字的标签。如样本为‘我 爱 北 京’,则该样本的标签为‘O O B-LOC I-LOC’。然后通过循环神经网络再结合交叉熵损失函数进行训练。但根据课上所学知识,我们知道直接用 LSTM 虽然可以完成该任务,但是往往会预测出现一些不可能真实存在的结果,如连续两个 B-LOC 标签。因此我们可以增加条件随机场 CRF 模型在 LSTM 层之后,使用梯度下降自动去学习 CRF 模型的参数,这样可以获得比只使用 LSTM 好的结果。
# 二、模型概况
| Input() |
|:--:|
| Embedding(input_dim=5000, output_dim=50) |
| BiLSTM(units=100) |
| BiLSTM(units=150) |
| CRF(units=7) |
# 三、编程实现
为了实现上述模型我们首先需要对输入进行处理。首先使用 Tokenizer 库进行分词,词典大小设置为 5000,之后对训练样本进行padding(这里选择 maxlength进行padding),之后对标签也要做相应的 padding(这里 padding 的内容直接选用 O 标签)。
使用 keras 库进行模型的搭建,堆叠型模型声明如下
![](https://www.writebug.com/myres/static/uploads/2022/5/10/4dfb8986da39dc5757d9970f56b67a48.writebug)
优化器选用 Adam,损失函数使用稀疏交叉熵,batchsize 设为 128,训练 20 轮。之后用训练好的模型,在测试集上测试即可。
# 四、实验结果
1.两层双向 LSTM 结果:
| |O |B-LOC |I-LOC |B-PER |I-PER |B-ORG |I-ORG |
|----|----|----|----|----|----|----|----|
| Precision |0.9940 |0.9080 |0.9226 |0.9063 |0.9026 |0.8131 |0.8626 |
| Recall |0.9978 |0.8471 |0.7927 |0.8135 |0.8852 |0.7551 |0.7894 |
| F1 |0.9959 |0.8765 |0.8527 |0.8574 |0.8938 |0.7830 |0.8244 |
| |With ‘O’ |Without ‘O’ |
|----|----|----|
| Macro-precision |0.9013 |0.8859 |
| Macro-recall |0.8401 |0.8138 |
| Macro-f1 |0.8691 |0.8480 |
![](https://www.writebug.com/myres/static/uploads/2022/5/10/b3923190d19ab46ab74819ce68284d54.writebug)
2.三层双向 LSTM 结果,效果提升不明显
| |With ‘O’ |Without ‘O’ |
|----|----|----|
| Macro-precision |0.8863 |0.8682 |
| Macro-recall |0.8610 |0.8383 |
| Macro-f1 |0.8726 |0.8520 |
![](https://www.writebug.com/myres/static/uploads/2022/5/10/26833a77afd28ef1ff3fb6723baaf220.writebug)
![](https://www.writebug.com/myres/static/uploads/2022/5/10/c640f0169daf00021736277aaee9954d.writebug)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:设计报告word+代码 本次要完成 nlp 四大基础任务之一的序列标注任务,也叫做命名实体识别。即是在给定文本中能够对词性、人名地名等特定信息进行标注。 实验主要采用循环神经网络进行搭建,每一条样本输入是一条句子(对应的嵌入向量表示),该样本的标签也是一个等长的句子标签,其中每一个元素对应句子中每一个字的标签。如样本为‘我 爱 北 京’,则该样本的标签为‘O O B-LOC I-LOC’。然后通过循环神经网络再结合交叉熵损失函数进行训练。但根据课上所学知识,我们知道直接用 LSTM 虽然可以完成该任务,但是往往会预测出现一些不可能真实存在的结果,如连续两个 B-LOC 标签。因此我们可以增加条件随机场 CRF 模型在 LSTM 层之后,使用梯度下降自动去学习 CRF 模型的参数,这样可以获得比只使用 LSTM 好的结果。 详细介绍参考:https://blog.csdn.net/newlw/article/details/124728067
资源推荐
资源详情
资源评论
收起资源包目录
NLP基础任务—序列标注任务.zip (4个子文件)
sequenceannotation
设计报告.docx 133KB
LICENSE 1KB
README.md 3KB
sequence_tagging.py 5KB
共 4 条
- 1
资源评论
shejizuopin
- 粉丝: 9426
- 资源: 1288
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功