jieba分词入门
结巴分词代码临摹中,做一下知识点归集
Part 1. 分词相关概念
分词是自然语言理解的重要步骤。
分词就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作。
1、分词算法分类
1)基于字符串匹配的分词方法:
基本思想是扫描字符串,如发现字符串的子串和词典中的词语相同,就算匹配。
通常会加入一些启发式规则,如“正向/反向最大匹配”,“长词优先匹配”等;
优点是速度快,成本低;但对歧义和未登录词处理不好
2)基于统计以及机器学习的分词方式
基于人工标注的词性和统计特征进行建模,并通过模型计算分词概率;
常见的序列标注模型有HMM和CRF
这类分词算法能很好处理歧义和未登录词的问题,准确率更佳;但需要大量人工标注,分词速度也较慢。
常见的分词器都是使用机器学习算法和词典相结合,一方面能够提到分词准确率,另一方面能够改善领域适应性。
2、中英文分词的典型区别
区别 1)分词方式不同,中文更难
英文有天然的空格作为分隔符,但中文没有。所以如何切分是一个难点。且中文里存在较多一词多义现象。
区别 2)英文单词有多种形态
英文单词存在丰富的变形变换。为了应对这些复杂的变换,英文NLP相比中文存在一些特殊处理步骤,我们成为词形还原(Lemmatization)和词干提取(Stemming)。
词性还原:does,done,doing,did 需要通过词性还原恢复成 do。
词干提取:cities,children,teeth 这些词,需要转换为 city,child,tooth”这些基本形态
区别 3)中文分词需要考虑粒度问题
例如「中国科学技术大学」就有很多种分法:
中国科学技术大学
中国 \ 科学技术 \ 大学
中国 \ 科学 \ 技术 \ 大学
粒度越大,表达的意思就越准确,但是也会导致召回比较少。所以中文需要不同的场景和要求选择不同的粒度。
3、中文分词的难点
1)分词歧义
我个人没意见
三个人没意见
2)未登录词识别:郑成功
数字、实体名称/专业术语、成语、虚词、语气词
Part 2. jieba中文分词相关概念
1、安装说明
详见上篇~
2、基本特点
支持三种分词模式
精确模式,视图将句子最精确的切开,适合做文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
支持繁体分词
支持自定义词典
代码示例
【全模式】
【精确模式】
【新词识别】
【搜索引擎模式】
3、动态增删新词
4、使用自定义词典
5、使用搜狗细胞词库
附:相关学习材料