中文分词是让计算机自动识别出句子中的词,然后在词间加入边界标记符。这个过程的主要困难在于分词规范、歧义切分和未登陆词的识别。

分词规范 可以理解为国人并没有统一对汉语词的认识,对汉语词的认识的操作尺度很难把握,极易受到主观因素的影响,从而无法提供一个公认的、具有权威性的词表(例如普通说话人的语感与语言学家的标准就有较大的差异)。

歧义切分可以举例如下:" 南京市长江大桥"的分词有两种切分,"南京市长江大桥" 和 "南京市长江大桥"。这种情况在汉语文本中非常普遍,并且处理这类问题往往也要复杂得多。

02 HanLP分词

1. 安装HanLP

HanLP的API总体来说并不多,且需要进行的配置并不复杂,适合新手上手。下载完成后,可以使用如下命令进行安装。要求Python 3.6以上,支持Windows,可以在CPU上运行,推荐GPU/TPU。

pip install pyhanlp

注:若未安装Java则会报如下错误。因为HanLP 主项目采用 Java 开发,所以需要 Java 运行环境,请安装 JDK。

项目Github地址: https://github.com/hankcs/pyhanlp

2. 分词实战

2.1 简单实例

首先,我们通过一个官网的实例直观认识下 HanLP的分词结果。

分词结果如下所示。

['铁甲', '网', ' 是', '中国', '最大', '的' , '工程', '机械', '交易', '平台']

2.2 自定义词典分词

接着,我们通过自定义增加不同领域内的专有名词的词典,从而进一步优化HanLP的分词结果。

分词结果如下所示。

['铁甲网', '是', '中国', '最大', '的' , '工程机械', '交易平台']

2.3 优化分词代码

最后,我们可以利用Python语言的简约性将代码优化成如下一行。

其中, text存放的是待分词的文本;

正则表达式 re.fullmatch(r'[u4e00-u9fa5]+',i)的作用是仅保留汉字,过滤掉非汉字之外的字符。