ViHealthBERT:面向越南语健康文本挖掘的预训练语言模型
ViHealthBERT是医疗健康领域越南语处理的强基线语言模型。
我们通过实证研究探索了不同训练策略,在三个下游任务中实现了最先进(SOTA)性能:命名实体识别(COVID-19 & ViMQ)、缩略词消歧和文本摘要。
我们发布了两套越南语数据集:医疗领域缩略词数据集(acrDrAid)和常见问题摘要数据集。其中acrDrAid数据集包含135组关键词标注。ViHealthBERT的核心方法与实验结果详见我们在LREC-2022会议的海报论文(即将更新):
@article{vihealthbert,
title = {{ViHealthBERT:面向越南语健康文本挖掘的预训练语言模型}},
author = {Minh Phuc Nguyen, Vu Hoang Tran, Vu Hoang, Ta Duc Huy, Trung H. Bui, Steven Q. H. Truong },
journal = {第13届语言资源与评估会议},
year = {2022}
}
安装说明
- Python 3.6+ 和 PyTorch >= 1.6
- 安装
transformers
:
pip install transformers==4.2.0
预训练模型
模型 |
参数量 |
架构 |
分词器 |
demdecuong/vihealthbert-base-word |
1.35亿 |
base |
词级 |
demdecuong/vihealthbert-base-syllable |
1.35亿 |
base |
音节级 |
使用示例
import torch
from transformers import AutoModel, AutoTokenizer
vihealthbert = AutoModel.from_pretrained("demdecuong/vihealthbert-base-word")
tokenizer = AutoTokenizer.from_pretrained("demdecuong/vihealthbert-base-word")
line = "Tôi là sinh_viên trường đại_học Công_nghệ ."
input_ids = torch.tensor([tokenizer.encode(line)])
with torch.no_grad():
features = vihealthbert(input_ids)
原始文本处理示例
由于ViHealthBERT使用VnCoreNLP中的RDRSegmenter进行预训练数据预处理,我们强烈建议在下游应用中使用相同分词器。
安装步骤
# 安装vncorenlp的Python封装
pip3 install vncorenlp
# 下载VnCoreNLP-1.1.1.jar及其分词组件
mkdir -p vncorenlp/models/wordsegmenter
wget https://raw.githubusercontent.com/vncorenlp/VnCoreNLP/master/VnCoreNLP-1.1.1.jar
wget https://raw.githubusercontent.com/vncorenlp/VnCoreNLP/master/models/wordsegmenter/vi-vocab
wget https://raw.githubusercontent.com/vncorenlp/VnCoreNLP/master/models/wordsegmenter/wordsegmenter.rdr
mv VnCoreNLP-1.1.1.jar vncorenlp/
mv vi-vocab vncorenlp/models/wordsegmenter/
mv wordsegmenter.rdr vncorenlp/models/wordsegmenter/
注意:VnCoreNLP-1.1.1.jar
(27MB)和models/
文件夹必须置于同一工作目录。
使用示例
# 更多细节参见:https://github.com/vncorenlp/VnCoreNLP
# 从VnCoreNLP加载rdrsegmenter
from vncorenlp import VnCoreNLP
rdrsegmenter = VnCoreNLP("/绝对路径/vncorenlp/VnCoreNLP-1.1.1.jar", annotators="wseg", max_heap_size='-Xmx500m')
# 输入文本
text = "Ông Nguyễn Khắc Chúc đang làm việc tại Đại học Quốc gia Hà Nội. Bà Lan, vợ ông Chúc, cũng làm việc tại đây."
# 执行分词(及分句)
sentences = rdrsegmenter.tokenize(text)
for sentence in sentences:
print(" ".join(sentence))