分词是中文自然语言处理的基础。目前常用的分词算法有

1.张华平博士的NShort中文分词算法。

2.基于条件随机场(CRF)的中文分词算法。

这两种算法的代表工具包分别是jieba分词系统和哈工大的LTP语言技术平台。下面就分别演示这两个工具的使用方法。

jieba包有两个分词函数,cutcut_for_search,后者主要为搜索引擎设计,粒度更细。jieba.cut(sentence,cut_all=False,HMM=True) 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型。

pyltp包的分词模块只有一个分词函数,Segmentor.segment(line)只有一个参数:需要分词的字符串。

#coding:utf-8
import jieba
from pyltp import Segmentor text='奎金斯距离祭台很近,加拉塔“掉落”的部分事物就在他的面前,他下意识就捡起了其中一块金属碎屑般的事物和小片黑色固体。' segs1=jieba.cut(text)
print('|'.join(segs1))
segs1=jieba.cut_for_search(text)
print('|'.join(segs1)) segmentor=Segmentor() #实例化分词模块
segmentor.load("D:\\ltp_data\\cws.model")
segs2=segmentor.segment(text)
print('|'.join(segs2))
segmentor.release() #释放模型

分词的结果如下:

奎金斯|距离|祭台|很近|,|加|拉塔|“|掉落|”|的|部分|事物|就|在|他|的|面前|,|他|下意识|就|捡起|了|其中|一块|金属|碎屑|般的|事物|和|小片|黑色|固体|。

奎金斯|距离|祭台|很近|,|加|拉塔|“|掉落|”|的|部分|事物|就|在|他|的|面前|,|他|意识|下意识|就|捡起|了|其中|一块|金属|碎屑|般的|事物|和|小片|黑色|固体|。

奎金斯|距离|祭台|很|近|,|加拉塔|“|掉落|”|的|部分|事物|就|在|他|的|面前|,|他|下|意识|就|捡|起|了|其中|一|块|金属|碎屑|般|的|事物|和|小|片|黑色|固体|。

可以看到,默认的分词方法还是有一些瑕疵,jieba分词结果里,“加拉塔”被分割成了两部分,pyltp的结果里,“般的”被分割成了两部分。为了更好地分词,两个工具包都提供了调整词典、添加词典的功能。

jieba里调整词典的函数是jieba.add_word(word,freq=None,tag=None),它接受三个参数:新词,词频,词性。jieba还可以添加自定义词典,jieba.load_userdict(f),f是一个txt文档,要求是utf-8编码。词典格式为一个词占一行,每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。

pyltp在加载模型的同时,可加载自定义词典。Segmentor. load_with_lexicon(model_path,user_dict)第一个参数自带的模型文件,第二个参数是自定义词典。词典格式为一个词为一行,第一列是词,第二列到第n列是该词的候选词性。

本次分词,jieba、pyltp的自定义词典都是只有词,其他省略。词典内容如下:

下意识

加拉塔

调整词典后的分词代码如下:

#coding:utf-8
import jieba
from pyltp import Segmentor
from pyltp import CustomizedSegmentor text='奎金斯距离祭台很近,加拉塔“掉落”的部分事物就在他的面前,他下意识就捡起了其中一块金属碎屑般的事物和小片黑色固体。' jieba.add_word('奎金斯')
jieba.add_word('加拉塔')
segs1=jieba.cut(text)
print('|'.join(segs1)) jieba.load_userdict('userdict_jieba.txt')
segs1=jieba.cut(text)
print('|'.join(segs1)) segmentor=Segmentor()
cws_model="D:\\ltp_data\\cws.model"
user_dict="userdict_ltp.txt"
segmentor.load_with_lexicon(cws_model,user_dict)
segs2=segmentor.segment(text)
print('|'.join(segs2))
segmentor.release()

分词结果:

奎金斯|距离|祭台|很近|,|加拉塔|“|掉落|”|的|部分|事物|就|在|他|的|面前|,|他|下意识|就|捡起|了|其中|一块|金属|碎屑|般的|事物|和|小片|黑色|固体|。

奎金斯|距离|祭台|很近|,|加拉塔|“|掉落|”|的|部分|事物|就|在|他|的|面前|,|他|下意识|就|捡起|了|其中|一块|金属|碎屑|般的|事物|和|小片|黑色|固体|。

[INFO] 2018-04-21 17:49:06 loaded 2 lexicon e

奎金斯|距离|祭台|很|近|,|加拉塔|“|掉落|”|的|部分|事物|就|在|他|的|面前|,|他|下意识|就|捡|起|了|其中|一|块|金属|碎屑|般|的|事物|和|小|片|黑色|固体|。

除了添加自定义词典,pyltp还可以个性化分词。个性化分词为了解决测试数据切换到如小说、财经等不同于新闻领域的领域。 在切换到新领域时,用户只需要标注少量数据。 个性化分词会在原有新闻数据基础之上进行增量训练。 从而达到即利用新闻领域的丰富数据,又兼顾目标领域特殊性的目的。

pyltp 支持使用用户训练好的个性化模型。关于个性化模型的训练需使用 LTP,详细介绍和训练方法请参考http://ltp.readthedocs.org/zh_CN/latest/theory.html#customized-cws-reference-label。

nlp中文分词(jieba和pyltp)的更多相关文章

  1. NLP & 中文分词

    NLP & 中文分词 中文分词 (Word Segmentation, WS) 指的是将汉字序列切分成词序列. 中文自然语言处理系统 https://www.ltp-cloud.com/int ...

  2. .net中文分词 jieba.NET

    简介 平时经常用Python写些小程序.在做文本分析相关的事情时免不了进行中文分词,于是就遇到了用Python实现的结巴中文分词.jieba使用起来非常简单,同时分词的结果也令人印象深刻,有兴趣的可以 ...

  3. Python中文分词 jieba

    三种分词模式与一个参数 以下代码主要来自于jieba的github,你可以在github下载该源码 import jieba seg_list = jieba.cut("我来到北京清华大学& ...

  4. 中文分词-jieba

    支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词再次切分 ...

  5. NLP自然语言处理 jieba中文分词,关键词提取,词性标注,并行分词,起止位置,文本挖掘,NLP WordEmbedding的概念和实现

    1. NLP 走近自然语言处理 概念 Natural Language Processing/Understanding,自然语言处理/理解 日常对话.办公写作.上网浏览 希望机器能像人一样去理解,以 ...

  6. 中文分词库及NLP介绍,jieba,gensim的一些介绍

    六款中文分词软件介绍: https://blog.csdn.net/u010883226/article/details/80731583 里面有jieba, pyltp什么的.另外下面这个博客有不少 ...

  7. 中文分词工具探析(二):Jieba

    1. 前言 Jieba是由fxsjy大神开源的一款中文分词工具,一款属于工业界的分词工具--模型易用简单.代码清晰可读,推荐有志学习NLP或Python的读一下源码.与采用分词模型Bigram + H ...

  8. jieba中文分词(python)

    问题小结 1.安装 需要用到python,根据python2.7选择适当的安装包.先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python setup.py ...

  9. NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)

    摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P4 CIPS2016 中文信息处理报告下载链接:http://cips-upload.bj.bce ...

随机推荐

  1. Python爬虫入门教程 62-100 30岁了,想找点文献提高自己,还被反爬了,Python搞起,反爬第2篇

    学术搜索 学习理论的知识少不了去检索文献,好多文献为你的实操提供了合理的支撑,我所在的大学内网默认是有知网账户的,非常NICE 今天要完成的网站是 http://ac.scmor.com/ Googl ...

  2. token:NLP之词形还原

    已迁移到我新博客,阅读体验更佳token:NLP之词形还原 完整代码实现放在我的github上:click me 一.任务描述 形态还原算法: 输入一个单词 如果词典里有该词,输出该词及其属性,转4, ...

  3. 如何在MySQL中查询每个分组的前几名【转】

    问题 在工作中常会遇到将数据分组排序的问题,如在考试成绩中,找出每个班级的前五名等. 在orcale等数据库中可以使用partition语句来解决,但在mysql中就比较麻烦了.这次翻译的文章就是专门 ...

  4. Java设置PPT幻灯片背景——纯色、渐变、图片背景

    PPT幻灯片生成时,系统默认是无色背景填充,幻灯片设计需要手动设置背景效果,可设置颜色填充或者图片背景填充.本文将对此介绍具体实现方法. 使用工具:Free Spire.Presentation fo ...

  5. 设计模式之适配者模式——Java语言描述 | Amos H's blog

    适配器模式是作为两个不兼容的接口之间的桥梁.这种类型的设计模糊属于结构性模式,它结合了两个独立接口的功能 概念阐述 使用适配器模式可以解决在软件系统中,将一些旧的类放入新环境中,但是新环境要求的接口旧 ...

  6. 如何只在IE上加载CSS样式表

    前言:IE一直是特殊的一个浏览器,我们可以使用一些方法来指定样式表只在IE浏览器下被加载. IE9以及低于IE9版本 : 可以使用条件注释语句来加载特定于ie的样式表.如下所示,使用外部css3样式表 ...

  7. odoo:免费开源ERP入门与实践

    Odoo下载安装 Odoo社区版下载链接:http://nightly.odoo.com/ ,下载11.0社区版Windows安装包:http://nightly.odoo.com/11.0/nigh ...

  8. 量化投资技术分析工具---ipython使用

    量化投资实际上就是分析数据从而做出决策的过程python数据处理相关模块NumPy:数组批量计算pandas:灵活的表计算Matplotlib:数据可视化 学习目标:用NumPy+pandas+Mat ...

  9. AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 建议和反馈,请发送到 https ...

  10. Linux命令及架构部署大全

    1.Linux系统基础知识 Linux 基础优化配置 Linux系统根目录结构介绍 linux系统重要子目录介绍 Linux基础命令(之一)详解 Linux基础命令(之二)详解 Linux文件系统 L ...