其实市面上的分词工具很多,python的c++的都有,那为啥还要写分词呢,因为分词的很多方法可以套用到其他nlp基础任务中,比如命名实体识别、词性标注。
在中文中,最小单位首先是字,由字组成词,再由词组成句子,然后由句子组成段落,最后由段落组成文章。尽管字是最小单位,但是文章的语义表达却是以词来划分的。因此在中文的NLP中,我们首先要先做分词,中文不像英文,每一个单词就是一个词用空格划分好了,所以英文的分词简单,只需要按空格分割就行。但是中文的词语是连在一起的,所以相对于英文会困难一些。
到目前为止,中文的分词主要有四种方法:1)基于规则的分词;2)基于概率统计的分词;3)混合分词(1+2);4)基于深度学习的分词。下面就来介绍这四种分词:
基于规则的分词
基于规则的分词有三种:正向最大匹配法,逆向最大匹配发,双向最大匹配发。他们的基本思想都相同,都是通过维护一个词典,按字典中最长的词的长度在句子中枚举字符串域词典中的词逐一匹配,能在词典中找到则切分,不能则最长的长度减一再枚举匹配。
- 正向最大匹配法
算法步骤:
1)查看字典最长的词的字符数m,从左到右枚举句子中的m个字符作为匹配字段。
2)查找字典域1)中的字段进行匹配,匹配成功则划分出一个词,匹配不成功,去掉字段最后一个字,继续再字典中匹配,直到分出词为止。 - 逆向最大匹配法
逆向最大匹配法的步骤和正向最大匹配法的步骤相差不大,只是把从左到右枚举句子中的字符改为从右到左。 - 双向最大匹配法
双向最大匹配法是将正向最大匹配法得到的分词结果和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选取词数切分最少的作为结果。
基于概率统计的分词
基于概率统计的分词的思想是:如果在已经建立的大规模语料库中,相连的字在不同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。所以可以利用字与字相邻出现的频率来反应组成词的可靠度,统计预料中相邻共现的各个字的组合的频度,当组合频度高于莫一个临界值时,便可认为此字组可能会构成一个词语。
基于深度学习的分词
如采用google开源的bert模型来分词,还有lstm+crf等。
网友评论