# 疫情新闻中的地理位置识别挑战赛
## 概要
> 在科大讯飞疫情新闻中的地理位置识别挑战赛中,使用 w2ner 模型加载 uer/roberta-base-finetuned-cluener2020-chinese 预训练权重,在赛题数据集上进行训练,之后对测试集进行推理,最终测试集上的 jaccard_score 指标平均 0.909 左右,最高 0.9216,排行榜 TOP1。
>
> 代码开源地址:https://github.com/itlubber/iflytek-geographical-identification-top1
>
> 微信公众号推文:https://mp.weixin.qq.com/s/hxv7HwWF3RSm70n5P22fPA
## 交流
<table style="text-align:center !important;border=0;">
<tr>
<td>
<span>微信: itlubber</span>
</td>
<td>
<span>微信公众号: itlubber_art</span>
</td>
</tr>
<tr>
<td>
<img src="https://itlubber.art//upload/itlubber.png" alt="itlubber.png" width="50%" border=0/>
</td>
<td>
<img src="https://itlubber.art//upload/itlubber_art.png" alt="itlubber_art.png" width="50%" border=0/>
</td>
</tr>
</table>
## 赛事任务
构建自然语言处理模型,对文本中的位置信息进行识别。
## 评审规则
预测测试集中的2600+数据中的位置信息进行识别,提取出相应的实体信息。评价标准采用`jaccard_score`指标。
---
## 解题思路
### 赛题理解
通过查看训练集数据中的标注数据,发现实体类别除位置信息外,还包公司名称和其他类别的实体,案例如下:
| **序号** | **新闻内容** | **实体标注** | **实体类型** |
|:------:|:-----------------------------------------:|:------------:|:--------:|
| 1 | 会安博物馆等,漫步会安古镇各精致的工艺品店、品尝路边的小吃摊,体验当地的风土民情。 | ['会安古镇'] | 景点 |
| 8 | 联达四方经纪公司总经理杨少峰 | ['联达四方经纪公司'] | 公司名称 |
| 14 | 银行业协会今年理财产品销量将首破1万亿 | ['银行业协会'] | 组织机构 |
| 371 | RTS星战之路首月将举行《魔兽争霸3》项目 | ['RTS星战之路'] | 游戏 |
| ... | ... | ... | ... |
通过分析可以发现,实体类型不止包含地理位置信息,还包含公司名称、组织机构名称、游戏名称、人名等类别,故本题采用腾讯 [`UER-py`](https://github.com/dbiir/UER-py/wiki/%E9%A2%84%E8%AE%AD%E7%BB%83%E6%A8%A1%E5%9E%8B%E4%BB%93%E5%BA%93) 预训练模型仓库中的 [`uer/roberta-base-finetuned-cluener2020-chinese`](https://huggingface.co/uer/roberta-base-finetuned-cluener2020-chinese) 作为预训练模型,在此基础上微调可以很好的匹配当前任务。
[`uer/roberta-base-finetuned-cluener2020-chinese`](https://huggingface.co/uer/roberta-base-finetuned-cluener2020-chinese) 预训练模型为中文 `RoBERTa` 预训练模型在下游任务 [`CLUENER2020`](https://github.com/CLUEbenchmark/CLUENER2020) 上进行了微调得到的模型。
### 解题方案
本题在 [`ark-nlp`](https://github.com/xiangking/ark-nlp) 库中的 [`w2ner_bert`](https://github.com/xiangking/ark-nlp/tree/main/ark_nlp/model/ner/w2ner_bert) 代码的基础上,进行了部分小改动,使得模型能够直接加载 [`uer/roberta-base-finetuned-cluener2020-chinese`](https://huggingface.co/uer/roberta-base-finetuned-cluener2020-chinese) 预训练模型权重进行训练,并在训练过程中,加入对抗训练FGM,对模型中的 `word_embedding` 层的参数注入扰动,结合EMA策略,提高了模型的鲁棒性。
<!-- 同时,考虑到本次赛题数据集较少,且模型测试集上 `jaccard_score` 指标超过0.90,故使用了伪标签的方式扩充训练数据,并且在验证时依旧采用原有训练集中的数据来保证模型的准确性和泛化能力,有效的提高了模型的指标。 -->
前期把 [`ark-nlp`](https://github.com/xiangking/ark-nlp) 库中的 `ner` 方案基本都试了一遍,也实验了 [`bert4torch`](https://github.com/Tongjilibo/bert4torch) 里面的一些模型,比如 `UIE`, 也实验了下在文本首尾添加 `promot` 的方式,最终根据提交效果选择了最优的 `word2ner` 模型,同时对比了不同的预训练模型,包括 `nezha`、`roberta`、`bert` 以及其他在 `huggingface` 上的其他预训练模型,无论是 `base` 、 `large` 还是模型融合, 基本上都不如 [`uer/roberta-base-finetuned-cluener2020-chinese`](https://huggingface.co/uer/roberta-base-finetuned-cluener2020-chinese) 预训练模型微调直接预测结果好。
### 代码结构
```bash
.
├── requirements.txt # 相关环境依赖
├── README.md # 说明文档
├── code
│ ├── clear_cache.sh # 清除代码运行过程中生成的 pyc、pyd文件
│ ├── additional.py # 比赛页面显示的测试集前16条答案, 在推理时可以选择是否使用
│ ├── train.sh # 模型训练脚本, cd ./code 后 chmod +x train.sh 再 ./train.sh
│ ├── test.sh # 模型训练脚本, cd ./code 后 chmod +x test.sh 再 ./test.sh, 修改脚本中的 additional_tags 为 True 可使用页面上的标签
│ ├── ark_nlp # ark_nlp 代码, 参考 https://github.com/xiangking/ark-nlp/tree/main/ark_nlp
│ │ ├── __init__.py
│ │ ├── dataset
│ │ ├── factory
│ │ ├── model # 模型代码
│ │ ├── nn
│ │ └── processor
│ ├── test.py # 推理代码
│ ├── test_pseudo.py # 使用伪标签训练模型后的推理代码
│ ├── train_all.py # 全量数据训练模型代码
│ └── train_all_pseudo.py # 全量数据 + 伪标签 训练模型代码
├── prediction_result
├── user_data
│ ├── outputs # 模型训练完保存的文件夹
│ ├── roberta-base-finetuned-cluener2020-chinese # UER.py 提供的预训练模型
│ │ ├── config.json
│ │ ├── pytorch_model.bin
│ │ ├── special_tokens_map.json
│ │ ├── tokenizer_config.json
│ │ └── vocab.txt
│ ├── scores.jpg # 比赛过程中提交结果的得分记录
│ └── 页面显示的测试集前16条答案.png
└── xfdata
└── 疫情新闻中的地理位置信息识别挑战赛公开数据 # 比赛提供的数据集
├── sample_submit.csv
├── test.csv # 测试集
└── train.csv # 训练集
```
### 代码运行
> 0. 代码运行环境: V100 24G
> 1. 安装相关环境依赖
> 2. 执行全量样本训练脚本: `train.sh`
> 3. 执行预测脚本: `test.sh`
> 4. 提交 `prediction_result` 目录下的 `result.csv` 作为最终的推理结果, `jaccard_score` 指标大致到 0.909左右
> 5. 如果使用网站页面上的测试集标签: 修改 `test.sh` 脚本中的加上 `--additional_tags` 选项, `jaccard_score` 指标大致可以提升4个千分点左右
<!-- > 1. 启动 `jupyter notebook` 或者 `jupyter lab` 服务
> 2. 运行 1.w2ner.ipynb,运行完成后生成 data/tta.csv 数据 和 w2ner_submit.txt 提交文件
> 3. 运行 2.w2n
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python的疫情新闻中的地理位置识别挑战赛TOP1方案+源代码+文档说明
共202个文件
py:165个
json:11个
ipynb:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 51 浏览量
2024-01-11
02:03:20
上传
评论
收藏 2.55MB ZIP 举报
温馨提示
- - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
基于Python的疫情新闻中的地理位置识别挑战赛TOP1方案+源代码+文档说明 (202个子文件)
train.csv 800KB
test.csv 285KB
sample_submit.csv 29KB
.gitignore 2KB
gpbaseline.ipynb 66KB
w2ner_cv.ipynb 32KB
spanbert.ipynb 31KB
0.w2ner_all.ipynb 25KB
w2ner.ipynb 24KB
0.w2ner_all_pseudo.ipynb 15KB
biaffine.ipynb 13KB
2.w2ner_pseudo.ipynb 11KB
scores.jpg 597KB
train.json 1.37MB
dev.json 603KB
config.json 2KB
config.json 464B
model_config.json 377B
tokenizer_config.json 295B
tokenizer_config.json 172B
tokenizer_config.json 171B
special_tokens_map.json 112B
special_tokens_map.json 112B
special_tokens_map.json 112B
README.md 9KB
README.md 104B
页面显示的测试集前16条答案.png 40KB
nezha_block.py 74KB
utils.py 27KB
convert.py 20KB
crf_block.py 20KB
roformer_block.py 18KB
named_entity_recognition.py 18KB
uie_predictor.py 17KB
conlleval.py 15KB
_sequence_classification.py 15KB
ernie_ctm_block.py 14KB
transfomer.py 14KB
casrel_relation_extraction_task.py 13KB
prgc_relation_extraction_task.py 12KB
finetune_step3_train.py 12KB
w2ner_bert.py 11KB
w2ner_named_entity_recognition_task.py 11KB
prgc_bert.py 9KB
nezha.py 9KB
roformer.py 9KB
_sentence_classification_dataset.py 8KB
prgc_relation_extraction_predictor.py 8KB
prompt_uie.py 7KB
_task.py 7KB
prgc_relation_extraction_dataset.py 7KB
w2ner_named_entity_recognition_predictor.py 7KB
bert.py 7KB
_dataset.py 7KB
madgrad.py 6KB
test_pseudo.py 6KB
test.py 6KB
configuration_nezha.py 6KB
w2ner_named_entity_recognition_dataset.py 6KB
unsupervised_simcse.py 6KB
rnn.py 6KB
text_match.py 6KB
prompt_uie_information_extraction_task.py 6KB
span_bert_named_entity_recognition.py 6KB
text_classification.py 6KB
finetune_step2_doccano.py 6KB
configuration_roformer.py 6KB
ernie_ctm_tokenizer.py 6KB
casrel_relation_extraction_dataset.py 6KB
utils.py 6KB
casrel_relation_extraction_predictor.py 5KB
text_match.py 5KB
text_classification.py 5KB
global_pointer_block.py 5KB
text_level_gcn.py 5KB
attack.py 5KB
__init__.py 4KB
char_vocab.py 4KB
prompt_masked_language_model.py 4KB
train_all_pseudo.py 4KB
span_bert.py 4KB
biaffine_named_entity_recognition.py 4KB
_sequence_classification.py 4KB
crf_named_entity_recognition.py 4KB
bio_named_entity_recognition.py 4KB
word_vocab.py 4KB
prompt_ernie_ctm_nptag_tokenizer.py 4KB
span_named_entity_recognition.py 4KB
global_pointer_named_entity_recognition.py 4KB
ema.py 4KB
unsupervised_simcse_predictor.py 4KB
__init__.py 4KB
biaffine_bert.py 4KB
biaffine_bert.py 4KB
train_all.py 4KB
global_pointer_bert_named_entity_recognition.py 4KB
unsupervised_simcse_task.py 4KB
span_named_entity_recognition_dataset.py 4KB
biaffine_named_entity_recognition.py 4KB
biaffine_named_entity_recognition_dataset.py 4KB
共 202 条
- 1
- 2
- 3
资源评论
机智的程序员zero
- 粉丝: 1825
- 资源: 4176
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功