[NLP] Neural Chinese Address Parsing

1. 简介

  • 本文发表在NAACL2019会议上,提出了一个新的任务 - 中文地址解析任务。 中文地址解析任务的目标是将中文字映射到有意义的chunk上。通常来说可以使用序列标注方法解决中文地址解析任务,但是我们观察到此类任务中label之间存在着复杂的依赖。本文提出了一种使用潜在变量的神经网络结构模型,建模中文地址中丰富的结构信息。最终的模型结合了线性结构(linear structure)和潜在变量的树结构(latent-variable tree structure)。潜在变量的树结构用于捕获地址尾部chunk之间存在的依赖信息,线性链式结构用于捕获地址开头chunk之间存在的依赖信息。 并且本文发布了一个中文地址解析任务数据集总共包含15000条标注数据。

2. 方法说明

  • 下图给出了 中文地址解析 任务的两个例子。第一个例子是比较正常的包含一些常见label信息(province, city, district等)。第二个例子缺少省、市等成分,并且包含一些冗余的信息(REDUNDANT)比如“5单元”。
中文地址解析任务例子说明.png
  • 数据集说明如下:论文中使用的数据爬取自 https://b2b.huangye88.com/ 和 lbs.amap.com 中的geocoding服务。最终定义了21个标注label,如下表所示:
中文地址标注使用的label集合.png

2.1 潜在树结构(Latent Tree Structures)

  • 从图1中的第2个例子可以看出,地址结尾“9栋,5单元”既可能是HOUSENO, CELLNO也可能是REDUNDANT。对于每一个原始label,我们都引进一个辅助的label。比如对于 这个label,我们引进的辅助label为。辅助label作为树中的非叶子结点。
  • 潜在树结构将label作为叶子结点,辅助label作为非叶子结点构造二叉树,并且保证每一个非叶子结点至少有一个子结点。 潜在树结构构造过程如下:(1)首先我们随机选择一个结点作为叶子结点;(2)选择当前叶子结点对应label,左边的label或者右边的label作为另外一个叶子结点,生成一个父结点;父结点的label为叶子结点中ID较大的label对应的辅助label。(3)此时将新生成的父结点作为一个可选的结点,在当前父结点左右label选择一个作为叶子结点生成新的辅助label,重复这个过程。
潜在树.png

2.2 常规链式结构(Regular Chain Structures)

  • 一般对于地址开头,会存在一些常规的链式结构,比如图1中的(PROVINCE, CITY, DISTRICT)这种连续出现的label。文本定义一个分割点(Split Point,SP)将label序列分割为两组,分割点左边的序列形成一个链式结构,分割点右边的序列形成一个树结构,正如图2给出的例子所示。
  • 加入sp = LAST表示分割点在地址最后位置,则只会存在链式结构。如果SP=COUNTRY,则表示分割点在句子的开头,则只会存在树结构。

2.3 chunk表示&模型

  • 文中使用一个双向字符级别LSTM计算每个span(一个span由多个字符组成)的表示,最终得到单个span为每个label的得分。


    计算span表示.png

    span为每个label的得分.png

2.4 xxx

3. 实验设置

  • 本文提出的模型称为:Address Parser with Latent Trees (APLT),文中设置不同的sp做了很多的实验。对比baseline模型为 (线性链条件随机场), (semi-Markov CRF), (标准双向LSTM模型), , , (transition)模型。 本文使用word2vec预训练字符的词向量,词向量维度为100。

4. 实验结果及分析

  • 最终各个模型的对比结果如下:
各模型对比结果.png

参考资料

  • APLT模型论文:Neural Chinese Address Parsing https://aclanthology.org/N19-1346/
  • sCRF论文:https://proceedings.neurips.cc/paper/2004/file/eb06b9db06012a7a4179b8f3cb5384d3-Paper.pdf
  • git地址:https://github.com/leodotnet/neural-chinese-address-parsing/

你可能感兴趣的:([NLP] Neural Chinese Address Parsing)