自然语言处理-中文分词

一、中文分词技术

1、常见的两类中文分词技术

中文分词技术常见的有两大类:机械分词技术、基于统计的序列标注技术。

机械分词技术操作简单、方便,比较省心,但是对于歧义词以及未登录词的效果并不是很好;

统计模型的序列标注方法,对于识别未登录词拥有较好的识别能力,而且分词精度也比较大,同时这个方法可以不分中文、英语,着重看在语言前后顺序。

以下是思维导图的形式展示两大区别:

自然语言处理-中文分词

2、深度学习在分词、找词中的应用

(1)word2vec词向量

虽然word2vec只有三层神经网络,但是已经取得非常好的效果。通过word2vec,可以将一个词表示为词向量,将文字数字化,更好的让计算机理解。使word2vec模型,我们可以方便的找到同义词或联系紧密的词,或者意义相反的词等。

(2)RNN(Recurrent Neural Networks,循环神经网络)——seq2seq

在自然语言处理中,上下文关系非常重要,一个句子中前后词并不独立,不同的组合会有不同的意义,比如”优秀”这个词,如果前面是”不”字,则意义完全相反。RNN则考虑到网络前一时刻的输出对当前输出的影响,将隐藏层内部的节点也连接起来,即当前时刻一个节点的输入除了上一层的输出外,还包括上一时刻隐藏层的输出。RNN在理论上可以储存任意长度的转态序列,但是在不同的场景中这个长度可能不同。比如在词的预测例子中:

1,“他是亿万富翁,他很?”;

2,“他的房子每平米物业费40元,并且像这样的房子他有十几套,他很?”。

从这两个句子中我们已经能猜到?代表“有钱”或其他类似的词汇,但是明显,第一句话预测最后一个词时的上线文序列很短,而第二段话较长。如果预测一个词汇需要较长的上下文,随着这个距离的增长,RNN将很难学到这些长距离的信息依赖,虽然这对我们人类相对容易。在实践中,已被证明使用最广泛的模型是LSTM(Long Short-Term Memory,长短时记忆)很好的解决了这个问题。

LSTM最早由Hochreiter及 Schmidhuber在1997年的论文中提出。首先LSTM也是一种RNN,不同的是LSTM能够学会远距离的上下文依赖,能够存储较远距离上下文对当前时间节点的影响。

所有的RNN都有一串重复的神经网络模块。对于标准的RNN,这个模块都比较简单,比如使用单独的tanh层。LSTM拥有类似的结构,但是不同的是,LSTM的每个模块拥有更复杂的神经网络结构:4层相互影响的神经网络。在LSTM每个单元中,因为门结构的存在,对于每个单元的转态,使得LSTM拥有增加或减少信息的能力。

(来源文章:基于Deep Learning的中文分词尝试)

(3)深度学习库

Keras(http://keras.io)是一个非常易用的深度学习框架,使用python语言编写,是一个高度模块化的神经网络库,后端同时支持Theano和TensorFlow,而Theano和TensorFlow支持GPU,因此使用keras可以使用GPU加速模型训练。

Keras中包括了构建模型常用的模块,如Optimizers优化方法模块,Activations**函数模块,Initializations初始化模块,Layers多种网络层模块等,可以非常方便快速的搭建一个网络模型,使得开发人员可以快速上手,并将精力放在模型设计而不是具体实现上。常见的神经网络模型如CNN,RNN等,使用keras都可以很快搭建出来,开发人员只需要将数据准备成keras需要的格式丢进网络训练即可。如果对keras中自带的layer有更多的需求,keras还可以自己定制所需的layer。

二、常见的中文分词引擎的介绍
1、11款中文分词引擎大比拼

测试了11家中文分词引擎(各家分词系统链接地址),同时从分词准确度、歧义词切分、未登陆词(新涌现的通用词、专业术语、专有名词)三个方面进行论证。

BosonNLP:http://bosonnlp.com/dev/center

IKAnalyzer:http://www.oschina.net/p/ikanalyzer

NLPIR:http://ictclas.nlpir.org/docs

SCWS中文分词:http://www.xunsearch.com/scws/docs.php

结巴分词:https://github.com/fxsjy/jieba

盘古分词:http://pangusegment.codeplex.com/

庖丁解牛:https://code.google.com/p/paoding/

搜狗分词:http://www.sogou.com/labs/webservice/

腾讯文智:http://www.qcloud.com/wiki/API%E8%AF%B4%E6%98%8E%E6%96%87%E6%A1%A3

新浪云:http://www.sinacloud.com/doc/sae/python/segment.html

语言云:http://www.ltp-cloud.com/document