Go语言 中文分词技术使用技巧
Posted guichenglin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言 中文分词技术使用技巧相关的知识,希望对你有一定的参考价值。
分词技术就是搜索引擎针对用户提交查询的关键词串进行的查询处理后根据用户的关键词串用各种匹配方法进行分词的一种技术。
中文分词(Chinese Word Segmentation)指的是将一个汉字序列(句子)切分成一个一个的单独的词,分词就是将连续的字序列按照一定的规则重新组合成词序列的过程。
现在分词方法大致有三种:基于字符串配置的分词方法、基于理解的分词方法和基于统计的分词方法。
今天为大家分享一个国内使用人数最多的中文分词工具GoJieba,源代码地址:GoJieba ,官方文档:GoJieba官方文档
官方介绍
- 支持多种分词方式,包括: 最大概率模式, HMM新词发现模式, 搜索引擎模式, 全模式
- 核心算法底层由C++实现,性能高效。
- 无缝集成到 Bleve 到进行搜索引擎的中文分词功能。
- 字典路径可配置,NewJieba(...string), NewExtractor(...string) 可变形参,当参数为空时使用默认词典(推荐方式)
模式扩展
- 精确模式:将句子精确切开,适合文本字符分析
- 全模式:把短语中所有的可以组成词语的部分扫描出来,速度非常快,会有歧义
- 搜索引擎模式:精确模式基础上,对长词再次切分,提升引擎召回率,适用于搜索引擎分词
主要算法
- 前缀词典实现高效的词图扫描,生成句子中汉字所有可能出现成词情况所构成的有向无环图(DAG)
- 采用动态规划查找最大概率路径,找出基于词频最大切分组合
- 对于未登录词,采用汉字成词能力的HMM模型,采用Viterbi算法计算
- 基于Viterbi算法做词性标注
- 基于TF-IDF和TextRank模型抽取关键词
编码实现
运行结果
性能评测
语言 | 源码 | 耗时 |
C++版本 | CppJieba | 7.5 s |
Golang版本 | GoJieba | 9.11 s |
Python版本 | Jieba | 88.7 s |
计算分词过程的耗时,不包括加载词典耗时,CppJieba性能是GoJieba的1.2倍。CppJieba性能详见jieba-performance-comparison,GoJieba由于是C++开发的CppJieba,性能方面仅次于CppJieba,如果追求性能还是可以考虑的。
以上是关于Go语言 中文分词技术使用技巧的主要内容,如果未能解决你的问题,请参考以下文章