微信公众号:老牛同学
公众号标题:Transformers 框架 Pipeline 任务详解(三):词元分类(token-classification)和命名实体识别
公众号链接:https://mp.weixin.qq.com/s/r2uFCwPZaMeDL_eiQsEmIQ
在自然语言处理(NLP)领域,Token-Classification(词元分类)任务是一项关键的技术,这项技术广泛应用于命名实体识别(NER)、分词、词性标注等场景。借助Transformers框架的Pipeline API,我们可以轻松地使用预训练模型执行词元分类,而无需深入了解底层复杂的模型结构和算法。本文将详细介绍Transformers框架中token-classification
任务的各个方面,包括任务简介、应用场景、任务配置、实战案例以及Web UI界面。
1. 任务简介
词元分类是指根据给定的文本内容,为文本中的每一个词元分配一个类别标签的过程。词元分类的核心思想是通过机器学习模型从大量标注好的文本数据中学习特征,并根据这些特征对新的文本中的每个词元进行分类。具体步骤如下:
- 数据准备:收集并标注大量的文本数据,每个词元都对应一个类别标签。
- 特征提取:将文本转换为模型可以理解的数值表示,通常是通过分词、向量化等方式。
- 模型训练:使用标注好的数据训练一个分类模型,模型会学习如何根据输入的文本特征预测正确的类别。
- 模型推理:对于新的未见过的文本,模型会根据学到的特征为每个词元进行分类预测。
根据Hugging Face官网的数据,当前已有超过20,531个词元分类模型供选择,涵盖了多种语言和应用场景:
2. 应用场景
词元分类技术广泛应用于各个领域,以下是几个典型的应用场景:
- 命名实体识别(NER):NER可以帮助企业或研究机构自动识别文本中的重要信息,如人物、地点、组织等。这在新闻报道、法律文件分析、情报收集等领域尤为有用。
- 分词:分词是中文和其他一些非空格分隔的语言的基本预处理步骤。准确的分词对于后续的NLP任务至关重要。
- 词性标注:词性标注有助于理解句子的结构和含义,可应用于机器翻译、问答系统、文本摘要等多个方面。
- 情感分析:虽然情感分析通常被视为文本分类任务,但在某些情况下,了解哪些具体的词语表达了情感也是非常重要的,这时词元级别的分类就显得尤为重要了。
- 医疗记录解析:在医疗领域,词元分类可以用于解析病历,帮助医生快速定位关键信息,比如症状、疾病名称、药物名称等。
3. 任务配置
在 Transformers 框架中,ner
和token-classification
都是词元分类任务的不同名称。尽管两者在 Pipeline 配置中有别名关系,但在实际使用时没有区别,框架最终统一使用token-classification
作为任务名称。
我们可以在 Transformers 框架的源代码中看到以下配置(源代码文件:./transformers/pipelines/__init__.py
):
TASK_ALIASES = {
# 其他省略......
"ner": "token-classification",
# 其他省略......
}
SUPPORTED_TASKS = {
# 其他省略......
"token-classification": {
"impl": TokenClassificationPipeline,
"tf": (TFAutoModelForTokenClassification,) if is_tf_available() else (),
"pt": (AutoModelForTokenClassification,) if is_torch_available() else (