中文词性标注

最近更新时间:2019-10-09 15:14:07

场景背景

序列标注是自然语言处理中最常见的问题,它包括自然语言处理中的分词,词性标注、命名实体识别、关键词抽取、词义角色标注等,其应用场景较为广泛。

序列标注,指对一维线性输入序列中的每个元素打标签,其本质是对线性序列中每个元素根据上下文进行分类的问题。在深度学习流行起来之前,常见的序列标注问题的解决方案包括 HMM 模型,最大熵模型,CRF 模型等。其中 CRF 是解决序列标注问题的主流方法。随着深度学习的发展,RNN 在序列标注问题上取得成功,Bi - LSTM + CRF 模型在该任务上表现的较为出色。

本文通过智能钛机器学习平台,以 Bi - LSTM + CRF 为例,搭建中文词性标注模型。用户无须编写代码,只需拖动相应的组件搭建模型架构,便可以在二十分钟以内快速上手,解决序列标注场景下的实际问题。智能钛机器学习平台还内置了 BERT - CRF 算子,用户也可以通过该算子,尝试 BERT 在序列标注上的应用。

数据集介绍

本次中文词性标注任务的数据选自1998年的人民日报词性标注语料,我们对源数据进行了一些清洗和预处理操作,将其变成平台中的算子可以直接读取的形式。该数据集共有19438条数据,每行为一个样本,格式如下图所示:“label” 为分隔符,分隔符的左侧为文本信息,右侧为标注的词性信息,每个标签和词语一一对应。

我们预先根据6:2:2的比例将数据集分为训练集,验证集,测试集三部分。训练集用来训练模型,验证集用于调节模型参数,测试集用来整体评估模型的性能。

整体流程

工作流整体流程如下:

工作流主要包括以下步骤:

  1. 数据准备:上传训练集,验证集,预测集。
  2. 利用“BiLSTM + CRF”搭建中文词性标注模型。
  3. 使用“序列标注任务评估”评估模型效果。
说明:

工作流搭建过程中若连线有误,可通过右键单击删除连线。

详细流程

一. 数据准备

本步骤中需要上传三个数据源:训练集,验证集,预测集。

  1. 登录 智能钛机器学习平台控制台,选择【输入】>【数据源】>【 COS 数据集】,并拖入画布中,右键单击该组件【 重命名】为:训练集。
  2. 填写 COS 路径地址:${ai_dataset_lib}/demo/nlp/people_s_daily/raw_train.txt
注意:

${ai_dataset_lib}是地址前缀,请全部复制输入。


至此,我们将训练数集成功导入工作流,同样的操作我们将验证集、测试集拖拽入工作流,修改各自对应的 COS 路径地址:
验证集:${ai_dataset_lib}/demo/nlp/people_s_daily/raw_eval.txt
预测集:${ai_dataset_lib}/demo/nlp/people_s_daily/raw_test.txt
将组件对应重命名为:验证集和预测集。上传完成后如下图:

二. 利用 BiLSTM + CRF 算法搭建中文词性标注模型

BiLSTM + CRF 是一种常用的序列标注模型,能用于分词,词性标注,命名实体识别等序列标注任务。模型使用双向 LSTM 网络产生句子中的各个词语的向量表示,并据此计算词语标签的概率分布。再使用 CRF 计算总概率最大的标签序列。

  1. 在控制台的左侧导航栏,选择【算法】>【深度学习算法】>【自然语言处理】>【BiLSTM + CRF】,并将该组件拖入画布。
  2. 将【训练集】的输出桩连接到【BiLSTM+CRF】左侧的输入桩上,将【验证集】的输出桩连接到【BiLSTM + CRF】 右侧的输入桩上。左侧小烧杯代表完成训练的模型,将【预测集】的输出桩链接到小烧杯处。
  3. 单击【BiLSTM + CRF】,在右侧弹框中设置相关算法参数
    • 训练数据输入、验证数据输入和模型目录的路径已根据连线自动生成。
    • 批处理大小:16。
    • 学习率:0.001。
    • 迭代轮次:1。(此处是为了快速展示平台功能,如需训练出效果更好的模型,可以增加迭代次数。)
    • 词向量维度:300。
    • lstm维度:100。
    • 使用预训练好的词向量模型:False。
    • GPUs: 深度学习网络用到了 GPU 资源,可以提高训练速度。 单击该选项,在对话框中选择合适的显卡型号和数量。 默认0。
    • CPUs:宿主机 CPU 核数(建议设置成 GPU 卡数的三倍),默认1。
    • Memory(m):4096。
    • 其余参数可默认。
  4. 单击【BiLSTM + CRF】组件左边的小烧杯模型,将【模型运行方式】设置为自动运行。

三、模型评估

已使用 BiLSTM + CRF 算法搭建了中文词性标注的模型,通过智能钛的【序列标注任务评估】算子,评估此模型的预测效果,评估结果包括 character-level accuracy、exact match percentage、80% match percentage、50% match percentage。

在控制台的左侧导航栏,选择【输出】>【模型评估】>【序列标注任务评估】并拖入画布。将小烧杯模型的输出桩连接至【序列标注任务评估】,单击该组件设置算法参数:

  • 标签列的序号:2
  • 预测列序号:1
  • Memory(m):2560。
  • 其余参数可默认

四、运行调度及模型评估

单击画布上方运行可运行工作流,详情请参考 运行工作流
运行成功后,右键单击【序列标注任务评估】>【查看数据】>【查看中间结果】,即可查看模型效果。