Python自然语言处理学习——jieba分词

jieba——“结巴”中文分词sunjunyi开发的一款Python中文分词组件,可以在Github上查看jieba项目

要使用jieba中文分词,首先需要安装jieba中文分词,作者给出了如下的安装方法

1.全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba

2.半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install

3.手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录

作者介绍其采用的算法

1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)

2.采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合

3.对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

主要功能

1.分词

  分词功能主要有两个方法 jieba.cut jieba.cut_for_search

其中 jieba.cut方法 接受三个输入参数:

  1.需要分词的字符串;

  2.cut_all 参数用来控制是否采用全模式;

  3.HMM 参数用来控制是否使用 HMM 模型

jieba.cut("我来到北京清华大学", cut_all=True)

其中 jieba.cut_for_search方法 接受两个输入参数:

  1.需要分词的字符串;

  2.是否使用 HMM 模型。

  该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")

jieba.cut方法 和 jieba.cut_for_search方法 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode)

也可以使用 jieba.lcut方法 和 jieba.lcut_for_search方法 直接返回 list

作者的说明:待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。

注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8

以下是作者给出的demo和运行结果

# coding:utf-8
# !/usr/bin/env python

import jieba 

if __name__ == ‘__main__‘:
	seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
	print("Full Mode: " + "/ ".join(seg_list))		#全模式
	seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
	print("Default Mode: " + "/ ".join(seg_list))	#精确模式
	seg_list = jieba.cut("他来到了网易杭研大厦")		#默认是精确模式
	print(", ".join(seg_list))
	seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")	#搜索引擎模式
	print(", ".join(seg_list))

输出的结果

可以看到:

  全模式试图将句子最精确地切开,适合文本分析,输出的是所有可能的分词组合,比如清华大学,会被分成:清华,清华大学,华大,大学

  默认模型(精确模型)把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义,比如清华大学,只会输出清华大学

  搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

还有另外一个方法 jieba.Tokenizer(dictionary=DEFAULT_DICT),用于新建自定义分词器,可用于同时使用不同词典。

jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

时间: 2024-09-29 23:38:14

Python自然语言处理学习——jieba分词的相关文章

自然语言处理之jieba分词

英文分词可以使用空格,中文就不同了,一些分词的原理后面再来说,先说下python中常用的jieba这个工具. 首先要注意自己在做练习时不要使用jieba.Py命名文件,否则会出现 jieba has no attribute named cut -等这些,如果删除了自己创建的jieba.py还有错误是因为没有删除jieba.pyc文件. (1)基本分词函数和用法 首先介绍下分词的三种模式: 精确模式:适合将句子最精确的分开,适合文本分析: 全模式:把句子中所有可以成词的词语都扫描出来,速度快,但

python自然语言处理——学习笔记:Chapter3纠错

第三章,P87有一段处理html的代码: >>>raw = nltk.clean_html(html) >>>tokens = nltk.word_tokenize(raw) >>>tokens 可是我们执行会有如下错误: >>> raw = nltk.clean_html(html) Traceback (most recent call last): File "<stdin>", line 1,

【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法

错误现象: 最近在做一个小项目,在Python中使用了jieba分词,感觉非常简洁方便.在Python端进行调试的时候没有任何问题,使用PyInstaller打包成exe文件后,就会报错: 错误原因分析: 参考文献1中的说明,WindowsError:[Error 3]是系统找不到指定文件. 参考文献2中@fxsjy同学的解释,应该是PyInstaller在打包的时候没有将词典文件一起打包导致结巴分词找不到指定的词典文件. 解决方案如下: 1.在python中查询结巴分词的词典文件: 1 2 3

Python:电商产品评论数据情感分析,jieba分词,LDA模型

本节涉及自然语言处理(NLP),具体涉及文本数据采集.预处理.分词.去停用词.词频分析.LDA主题模型 代码部分 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Mon Oct 1 12:13:11 2018 4 5 @author: Luove 6 """ 7 8 import os 9 import pandas as pd 10 import jieba 11 from gensim import

车万翔《基于深度学习的自然语言处理》中英文PDF+涂铭《Python自然语言处理实战核心技术与算法》PDF及代码

自然语言处理是人工智能领域的一个重要的研究方向,是计算机科学与语言学的交叉学科.随着互联网的快速发展,网络文本尤其是用户生成的文本呈爆炸性增长,为自然语言处理带来了巨大的应用需求.但是由于自然语言具有歧义性.动态性和非规范性,同时语言理解通常需要丰富的知识和一定的推理能力,为自然语言处理带来了极大的挑战. 近年来快速发展的深度学习技术为解决自然语言处理问题的解决提供了一种可能的思路,已成为有效推动自然语言处理技术发展的变革力量. 推荐将深度学习理论运用至NLP中的资料<基于深度学习的自然语言处理

python结巴(jieba)分词

python结巴(jieba)分词 一.特点 1.支持三种分词模式: (1)精确模式:试图将句子最精确的切开,适合文本分析. (2)全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义. (3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词.2.支持繁体分词3.支持自定义词典 二.实现 结巴分词的实现原理主要有一下三点:(1)基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG).(2)采用了动态

Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考

前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3.6.0 ,PanGu分词也是对应Lucene3.6.0版本的.不过好在Lucene.net 已经有了Core 2.0版本(4.8.0 bate版),而PanGu分词,目前有人正在做,貌似已经做完,只是还没有测试~,Lucene升级的改变我都会加粗表示. Lucene.net 4.8.0 https

学习NLP:《精通Python自然语言处理》中文PDF+英文PDF+代码

自然语言处理是计算语言学和人工智能之中与人机交互相关的领域之一. 推荐学习自然语言处理的一本综合学习指南<精通Python自然语言处理>,介绍了如何用Python实现各种NLP任务,以帮助读者创建基于真实生活应用的项目.全书共10章,分别涉及字符串操作.统计语言建模.形态学.词性标注.语法解析.语义分析.情感分析.信息检索.语篇分析和NLP系统评估等主题. 学习参考: <精通Python自然语言处理>中文PDF,225页,带目录和书签,彩色配图,文字能够复制:英文PDF,238页,

Python使用jieba分词

# -*- coding: utf-8 -*- # Spyder (python 3.7) import pandas as pd import jieba import jieba.analyse as anls if __name__ == '__main__': data = pd.read_excel(r'空气指数评论.xlsx') # content为excel的列名 opinion_content = data['content'].dropna().values all_word