自然语言处理(NLP)任务中常用的分词工具及底层算法支持

刚刚和一个在三快在线(美团)的算法老同学聊天,聊到了他们现有分词工具效果不好的问题,我们最终讨论的结果就是没有效果好或者效果不好之后,只有适合不适合,归根结底还是要看各个分词工具中模型的基础训练数据成分构成。

自然语言处理(NLP)任务中常用的分词工具及底层算法支持_第1张图片

本人日常工作中常用的分词工具

1、jieba 分词
2、lac 分词
3、公司根据自己领域内数据训练并封装的分词工具jimi 分词,对外未公开。

今天重点聊聊前两个大众比较熟知的分词工具

1、jieba 分词

  • 支持四种分词模式:

精确模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
paddle模式,利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。同时支持词性标注。

  • 底层算法支撑

基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

  • 至于其他基础API建议参考Git链接:https://github.com/fxsjy/jieba
jieba 分词亮点:
  • 亮点1.关键词提取

基于 TF-IDF 算法的关键词抽取(依托于词频+逆文档频率)
基于 TextRank 算法的关键词抽取(抽取式无监督的文本摘要算法,内部运用了图结构)

  • 亮点2.词性分析
    自然语言处理(NLP)任务中常用的分词工具及底层算法支持_第2张图片
适用场景包括:大众型的行业文本分词工具,不适合非常严格且对分词准召率要求极高的细分领域。

2、lac 分词

  • LAC分词简介

LAC是一个联合的词法分析模型,整体性地完成中文分词、词性标注、专名识别任务。

  • 底层算法支持及准召率数据

LAC基于一个堆叠的双向GRU结构,在长文本上准确复刻了百度AI开放平台上的词法分析算法。效果方面,分词、词性、专名识别的整体准确率95.5%;单独评估专名识别任务,F值87.1%(准确90.3,召回85.4%),总体略优于开放平台版本。在效果优化的基础上,LAC的模型简洁高效,内存开销不到100M,而速度则比百度AI开放平台提高了57%。

  • LAC分词底层支持算法详解

词法分析任务的输入是一个字符串(我们后面使用『句子』来指代它),而输出是句子中的词边界和词性、实体类别。
序列标注是词法分析的经典建模方式。我们使用基于GRU的网络结构学习特征,将学习到的特征接入CRF解码层完成序列标注。CRF解码层本质上是将传统CRF中的线性模型换成了非线性神经网络,基于句子级别的似然概率,因而能够更好的解决标记偏置问题。
模型要点如下:

  1. 输入采用one-hot方式表示,每个字以一个id表示
  2. one-hot序列通过字表,转换为实向量表示的字向量序列;
  3. 字向量序列作为双向GRU的输入,学习输入序列的特征表示,得到新的特性表示序列,我们堆叠了两层双向GRU以增加学习能力;
  4. CRF以GRU学习到的特征为输入,以标记序列为监督信号,实现序列标注。
  • 相关文档链接地址:https://www.paddlepaddle.org.cn/modelbasedetail/lac
亮点分析
  • 特点1.支持定制化功能;

LAC支持用户配置定制化的专名类型输出。当定制化的专名词出现在输入query中时,如果该词与原有的词法分析结果不存在边界冲突,则会用定制化专名类型替代原有的标签。

  • 特点2.较好的解决了解决了序列标注问题上的标记偏置问题

序列标注是词法分析的经典建模方式。我们使用基于GRU的网络结构学习特征,将学习到的特征接入CRF解码层完成序列标注。CRF解码层本质上是将传统CRF中的线性模型换成了非线性神经网络,基于句子级别的似然概率,因而能够更好的解决标记偏置问题。

  • 特点3.关键词发现及NER
    自然语言处理(NLP)任务中常用的分词工具及底层算法支持_第3张图片

适用场景

  • 因其支持定制化的特性,简单改造就可以使用于一些细分领域,所以在一些数据比较稀缺的细分领域内应用较为常见,例如:金融、法律、医疗等。

总结

以上就是个人对以上两种比较常用的分词工具的理解和肤浅认知,希望可以给迷茫中的你带来帮助。没错我就是我,那个曾为人师,如今依然奋斗在一线自然语言处理工程师岗位的宣哥。

自然语言处理(NLP)任务中常用的分词工具及底层算法支持_第4张图片

你可能感兴趣的:(分词,自然语言处理,paddlepaddle,人工智能,jieba,LAC)