Deepdive的NLP处理

分词

背景介绍

在DeepDive的默认实例中,默认使用的分词器是Stanford CoreNLP的工具包,这个工具包可以通过更换语言包来实现对中文的支持,但由于此工具包切词类、命名实体识别类使用的是条件随机场CRF,所以不能做到对用户自定义词典的完全匹配,因此需要进行分词器的优化或者更换。

解决方法

  1. 优化分词器

    自定义CoreNLP中的切词类,达到优化的目的。优化切词类的方法在这里,此外下面的相关文章也有StanfordNLP的学习笔记。

  2. 更换分词器

    除了CoreNLP外,中文分词还有很多其他的框架,六款中文分词模块尝试:jieba、THULAC、SnowNLP、pynlpir、CoreNLP、pyLTP

    其中,pyltp是哈工大语言技术平台的python封装,和CoreNLP一样,可以进行分词、命名实体识别、词性标注、句法分析等NLP处理,这是它的实现原理,具体实践可见这里。在pyltp中,我们可以使用训练套件来对模型进行训练,从而实现个性化分词

依存分析

Stanford CoreNLP工具包中可以进行中文语法解析,其中,Parser遵循依存分析的以下定理:

  • 一个句子中存在一个成分称之为根(root),这个成分不依赖于其它成分。
  • 其它成分直接依存于某一成分。
  • 任何一个成分都不能依存与两个或两个以上的成分。
  • 如果A成分直接依存于B成分,而C成分在句中位于A和B之间,那么C或者直接依存于B,或者直接依存于A和B之间的某一成分。
  • 中心成分左右两面的其它成分相互不发生关系。

分析结果的符号解析详见这里