NLP快速入门:手把手教你用HanLP做中文分词

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
简介: NLP快速入门:手把手教你用HanLP做中文分词

导读:随着自然语言处理(Natural Language Processing, NLP)技术日趋成熟,实现中文分词的工具也越来越多中文分词技术作为中文自然语言处理的第一项核心技术,是众多上层任务的首要基础工作,同时在日常的工作中起着基础性的作用。本文将讲解如何在Python环境下调用HanLP包进行分词,并结合Python语言简约的特性,实现一行代码完成中文分词。



常用中文分词工具


工具名称 是否开源
工具描述
Jieba
(结巴分词)
免费使用
jieba库是一款优秀的支持 Python 第三方中文分词库,jieba支持三种分词模式:精确模式、全模式和搜索引擎模式。
SnowNLP
(中文的类库)
免费使用 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,诞生了一个方便处理中文的类库。
FoolNLTK
(中文处理工具包)
免费使用 FoolNLTK是基于Bi-LSTM模型训练成的中文分词工具,仅适用于Linux系统。
Jiagu
(甲骨工具包
免费使用 Jiagu以BiLSTM等模型为基础,使用大规模语料训练而成。集成多种NLP基础处理功能并支持知识图谱开放信息抽取。
HanLP
(汉语言处理包
免费使用 HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
pyltp
(哈工大语言云
付费使用 pyltp 是哈工大自然语言工作组推出的一款基于Python 封装的自然语言处理工具,提供了分词,词性标注,命名实体识别,依存句法分析,语义角色标注的功能。
THULAC(清华中文词法分析) 付费使用 THULAC(THU Lexical Analyzer for Chinese)是由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。
NLPIR(汉语分词系统
付费使用 NLPIR大数据语义智能分析平台由北京理工大学大数据搜索与挖掘实验室研发的“自然语言处理与信息检索共享平台。


01 什么是中文分词?
     众所周知,英文是以词为单位的,词和词之间是靠空格隔开。而在汉语中,词以字为基本单位,但是一篇文章的语义表达却仍然是以词来划分。例如,英文句子"I am a student",用中文则为:"我是一个学生"。计算机可以很简单通过空格知道"student"是一个单词,但是不能很容易明白"学"、"生"两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。"我是一个学生",分词的结果是:"我 是 一个 学生"。因此,需要针对中文汉字,将其按照一定的方式进行组织,分成不同的词。
image.png        

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

     

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

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

      未登录词的识别(生词)可以有两种解释:一是指已有词典中没有收录的词;二是指已有的训练语料中未曾出现过的词。所以从某种意义上来说,生词对分词的影响是最容易处理的。


02 HanLP分词

image.png

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

jpype.jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVAHOME environment variable properly.

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


import pyhanlp
text = '铁甲网是中国最大的工程机械交易平台'
words = []
for term in pyhanlp.HanLP.segment(text):
    words.append(term.word)
print(words)  #输出分词结果

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

2. 分词实战

2.1 简单实例     


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


import pyhanlp
text = '铁甲网是中国最大的工程机械交易平台'
words = []
for term in pyhanlp.HanLP.segment(text):
    words.append(term.word)
print(words)  #输出分词结果

    

 分词结果如下所示。

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


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


CustomDictionary.add("铁甲网")
    CustomDictionary.insert("工程机械", "nz 1024")
    CustomDictionary.add("交易平台", "nz 1024 n 1")
    print(HanLP.segment(txt))

      分词结果如下所示。

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


2.3 优化分词代码      

最后,我们可以利用Python语言的简约性将代码优化成如下一行。       其中,text 存放的是待分词的文本          正则表达式 re.fullmatch(r'[\u4e00-\u9fa5]+',i) 的作用是仅保留汉字,过滤掉非汉字之外的字符。


words = [i for i in [i.word for i in pyhanlp.HanLP.segment(text)] if re.fullmatch(r'[\u4e00-\u9fa5]+',i)]

      然了,HanLP作为开源框并不是只有分词这一个功能,还提供了很多在分词之上的算法,如关键词提取、自动摘要、依存句法分析、情感分析等,这里不再赘述

相关文章
|
5月前
|
机器学习/深度学习 编解码 自然语言处理
【自然语言处理NLP】社区发现快速入门(1)
【自然语言处理NLP】社区发现快速入门
171 2
|
5月前
|
自然语言处理 算法 JavaScript
【自然语言处理NLP】社区发现快速入门(2)
【自然语言处理NLP】社区发现快速入门
92 0
【自然语言处理NLP】社区发现快速入门(2)
|
自然语言处理 算法
【自然语言处理】N-最短路径法进行中文分词
【自然语言处理】N-最短路径法进行中文分词
192 0
【自然语言处理】N-最短路径法进行中文分词
|
自然语言处理
自然语言处理hanlp------3java调用hanlp
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
自然语言处理hanlp------3java调用hanlp
|
自然语言处理 算法 索引
【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码
【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码
243 0
|
自然语言处理 Java API
阿里云自然语言处理--多语言分词之中文分词(高级版)Quick Start
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。多语言分词提供智能分词服务,由专业的团队研发,保证对数据、模型的不断迭代更新。用户只需简单的调用相关API接口即可将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列,并获取到所需结果。目前支持简体中文、英文及泰文。本文将使用Java Common SDK演示多语言分词之中文分词(高级版)服务的快速调用以供参考。
1016 0
阿里云自然语言处理--多语言分词之中文分词(高级版)Quick Start
|
机器学习/深度学习 自然语言处理 Linux
NLP系列(一)pkuseg-python:一个高准确度的中文分词工具包
pkuseg-python简单易用,支持多领域分词,在不同领域的数据上都大幅提高了分词的准确率。
529 0
|
自然语言处理 Java 开发工具
基于阿里云自然语言处理基础版实现中文分词
自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。未来,自然语言处理还将为用户带来更多更有价值的服务。本篇文章将介绍如何通过自然语言处理基础版实现中文分词的功能。
368 0
基于阿里云自然语言处理基础版实现中文分词
|
机器学习/深度学习 自然语言处理 算法
NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词
NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词
170 0
NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词
|
自然语言处理 数据可视化 搜索推荐
NLP快速入门:手把手教你用wordcloud做词云
NLP快速入门:手把手教你用wordcloud做词云
683 0
NLP快速入门:手把手教你用wordcloud做词云