-
2017-05-15 15:55:10python做中文分词处理主要有以下几种:结巴分词、NLTK、THULAC
结巴的标语是:做最好的 Python 中文分词组件,或许从现在来看它没做到最好,但是已经做到了使用的人最多。结巴分词网上的学习资料和使用案例比较多,上手相对比较轻松,速度也比较快。
结巴的优点:
- 支持三种分词模式
- 支持繁体分词
- 支持自定义词典
- MIT 授权协议
前两天我在做有关于共享单车的用户反馈分类,使用jieba分词一直太过零散,分类分不好。后来江兄给我推荐了THULAC: 由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包 。THULAC的接口文档很详细,简单易上手。
THULAC分词的优点:
- 能力强。利用规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。
- 准确率高。该工具包在标准数据集Chinese Treebank(CTB5)上分词的F1值可达97.3%,词性标注的F1值可达到92.9%
- 速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度达到1.3MB/s,速度比jieba慢
作者:路人甲
链接:https://www.zhihu.com/question/20922994/answer/156070002
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Python 解决中文编码问题基本可以用以下逻辑:utf8(输入) ——> unicode(处理) ——> (输出)utf8
Python 里面处理的字符都是都是unicode 编码,因此解决编码问题的方法是把输入的文本(无论是什么编码)解码为(decode)unicode编码,然后输出时再编码(encode)成所需编码。
由于处理的一般为txt 文档,所以最简单的方法,是把txt 文档另存为utf-8 编码,然后使用Python 处理的时候解码为unicode(sometexts.decode('utf8')),输出结果回txt 的时候再编码成utf8(直接用str() 函数就可以了)。
作者:知乎用户
链接:https://www.zhihu.com/question/20922994/answer/19975309
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。更多相关内容 -
python中文分词,使用结巴分词对python进行分词(实例讲解)
2020-12-24 20:08:00在采集美女站时,需要对关键词进行分词,最终采用的是python的结巴分词方法。 中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词。 其基本实现原理有三点: 1.基于Trie树结构实现高效的词图扫描,... -
利用jieba对中文进行分词
2020-03-24 22:18:18jieba是优秀的中文分词第三方库 •- 中文文本需要通过分词获得单个的词语 •- jieba是优秀的中文分词第三方库,需要额外安装 •- jieba库提供三种分词模式,最简单只需掌握一个函数 (2)、jieba分词的原理 Jieba分词...
由于中文文本中的单词不是通过空格或者标点符号分割,所以中文及类似语言存在一个重要的“分词” 问题,jieba、SnowNLP(MIT)、pynlpir等都可以完成对中文的分词处理,该文章采用 jieba进行中文分词。
使用之前,我们需要先下载jieba库,而在Windows下使用pip安装python第三方库的时候,经常会因为墙的原因下载不上第三方的库文件,所以下载方法见我之前文章 Anaconda3安装jieba库和NLTK库。1、jieba库基本介绍
1.1 jieba库概述
jieba 是一个python实现的分词库,对中文有着很强大的分词能力,我们在使用时通过import jieba 导入 jieba库:
- 中文文本需要通过分词获得单个的词语;
- jieba是优秀的中文分词第三方库,需要额外安装;
- jieba库提供三种分词模式,最简单只需掌握一个函数。
1.2 jieba分词的原理
Jieba分词依靠中文词库:
- 利用一个中文词库,确定汉字之间的关联概率;
- 汉字间概率大的组成词组,形成分词结果;
- 除了分词,用户还可以添加自定义的词组。
1.3 jieba库使用说明
(1)、jieba分词的三种模式
精确模式、全模式、搜索引擎模式:
- 精确模式:把文本精确的切分开,不存在冗余单词。
- 全模式:把文本中所有可能的词语都扫描出来,有冗余。
- 搜索引擎模式:在精确模式基础上,对长词再次切分。
(2)、jieba库常用函数
函数 描述 jieba.cut(txt) 精确模式,返回一个可迭代的数据类型 jieba.lcut(txt) 精确模式,返回一个列表类型,建议使用 jieba.cut(txt,cut_all = True) 全模式,输出文本txt中所有可能单词 jieba.lcut(txt,cut_all = True) 全模式,返回一个列表类型,建议使用 jieba.cut_for_search(txt) 搜索引擎模式 jieba.lcut_for_search(txt) 搜索引擎模式,返回一个列表类型,建议使用 jieba.add_word(txt) 向分词词典中增加新词 2、分词实例
2.1 三种模式实例对比
精确模式:
import jieba messages = jieba.cut("万里长城是中国古代劳动人民血汗的结晶和中国古代文化的象征和中华民族的骄傲",cut_all=False) #精确模式 print ( '【精确模式下的分词:】'+"/ ".join(messages))
运行结果:
【精确模式下的分词:】万里长城/ 是/ 中国/ 古代/ 劳动/ 人民/ 血汗/ 的/ 结晶/ 和/ 中国/ 古代/ 文化/ 的/ 象征/ 和/ 中华民族/ 的/ 骄傲
这里我们需要注意的是,jieba默认模式即为精确模式,所以使用下列表达也是同样的效果,即省略cut_all=False:
import jieba messages = jieba.cut("万里长城是中国古代劳动人民血汗的结晶和中国古代文化的象征和中华民族的骄傲") #默认精确模式 print ( '【精确模式下的分词:】'+"/ ".join(messages))
全模式:
import jieba messages = jieba.cut("万里长城是中国古代劳动人民血汗的结晶和中国古代文化的象征和中华民族的骄傲",cut_all=True) #全模式 print ( '【全模式下的分词:】'+"/ ".join(messages))
运行结果:
【全模式下的分词:】万里/ 万里长城/ 里长/ 长城/ 是/ 中国/ 古代/ 代劳/ 劳动/ 动人/ 人民/ 血汗/ 的/ 结晶/ 和/ 中国/ 古代/ 文化/ 的/ 象征/ 和/ 中华/ 中华民族/ 民族/ 的/ 骄傲
可以明显看到文本存在冗余单词。
搜索引擎模式:
import jieba messages = jieba.cut_for_search("万里长城是中国古代劳动人民血汗的结晶和中国古代文化的象征和中华民族的骄傲") #搜索引擎模式 print ( '【搜索引擎模式下的分词:】'+"/ ".join(messages))
运行结果:
【搜索引擎模式下的分词:】万里/ 里长/ 长城/ 万里长城/ 是/ 中国/ 古代/ 劳动/ 人民/ 血汗/ 的/ 结晶/ 和/ 中国/ 古代/ 文化/ 的/ 象征/ 和/ 中华/ 民族/ 中华民族/ 的/ 骄傲
2.2 调整词频
有的时候,如果按照jieba正常分词,会把我们不希望分开的词语给分开,这个时候就会改变句子的意思。就如以下例子,我们希望 不喜欢 是一个词,不被分开:
import jieba messages = jieba.cut("我不喜欢下雨天刮风") #默认精确模式 print ( "/ ".join(messages))
运行结果:
我/ 不/ 喜欢/ 下雨天/ 刮风
这个时候,我们可以使用 suggest_freq(segment, tune=True) 可调节单个词语的词频,使其能(或不能)被分出来:
import jieba messages = jieba.cut("我不喜欢下雨天刮风") #默认精确模式 jieba.suggest_freq(('不喜欢'),tune=True) print ( "/ ".join(messages))
运行结果:
我/ 不喜欢/ 下雨天/ 刮风
2.3 分词后词性标注
分词成功以后,我们通常需要提取关键词,而关键词通常是名词、动名词或者名词的词组,所以在提取关键词之前,我们可以先对提取出来的词语做一下词性标注,以便于后续分类。
import jieba.posseg as contents #词性标注 messages = contents.cut('万里长城是中国古代劳动人民血汗的结晶') for message in messages: #使用for循环逐一获取划分后的词语 print(message.word,message.flag)
运行结果:
万里长城 ns 是 v 中国 ns 古代 t 劳动 vn 人民 n 血汗 n 的 uj 结晶 n
-
使用python对中文文本进行分词
2017-09-22 11:17:32何为中文分词,指的是将一个汉字序列切分成一个个单独的词。 这里我们推荐使用jieba分词,它是专门使用python语言开发的分词系统,占用资源较少,常识类文档的分词精度较高。 我们可以去网上下载jieba的压缩包,然后...何为中文分词,指的是将一个汉字序列切分成一个个单独的词。
这里我们推荐使用jieba分词,它是专门使用python语言开发的分词系统,占用资源较少,常识类文档的分词精度较高。
我们可以去网上下载jieba的压缩包,然后解压,进入目录,找到setup.py这个文件,然后可以可以使用下面两种半自动方式去安装
方式一: 进入cmd命令窗口,输入: python setup.py install jieba
方式二: 进入cmd命令窗口,输入:pip install jieba
然后我们就可以进行下面的中文文本分词的操作了
首先我们把需要分词的文件train_corpus_small拷贝到项目中来:
然后我们创建一个demo3.py对其进行分词操作
运行前文件格式如下:# -*- encoding:utf-8 -*- import sys import jieba import os # 配置UTF-8的环境 reload(sys) sys.setdefaultencoding('utf-8') # 写入文件 def savefile(savepath, content): fp = open(savepath, "wb") fp.write(content) fp.close() # 读取文件 def readfile(path): fp = open(path, "rb") content = fp.read() fp.close() return content # 获取路径名 seg_path = "train_corpus_seg/" corpus_path = "train_corpus_small/" catelist = os.listdir(corpus_path) # 获取每个目录下的所有文件 for mydir in catelist: # 拼接出分类子目录的路径 class_path = corpus_path + mydir + "/" # 拼出分词后的预料分类目录 seg_dir = seg_path + mydir + "/" # 判断目录是否为空 if not os.path.exists(seg_dir): # 创建目录 os.makedirs(seg_dir) # 获取类别目录下的所有目录 file_list = os.listdir(class_path) # 将类别下面的所有目录遍历出来 for file_path in file_list: # 拼出文件名全路径 fullname = class_path + file_path # 读取文件内容 content = readfile(fullname).strip() # 将换行替换掉 content = content.replace("\r\n", "").strip() # 为文件内容分词 content_seg = jieba.cut(content) # 将处理后的文件保存到分词后的语料目录 savefile(seg_dir + file_path, "".join(content_seg)) print "读写完毕"
分词后生成的目录及格式如下:
-
python使用jieba进行分词统计
2021-08-04 18:18:40python使用jieba对txt文本进行分词统计,并将结果输出到控制台。 程序包含示例+注释说明。 -
中文分词词库大全词库
2020-08-21 00:01:27这是前一段时间我在研究中文分词时在网上找到的一个词典,TXT格式的,拿出来分享一下。这是前一段时间我在研究中文分词时在网上找到的一个词典,TXT格式的,拿出来分享一下。这是前一段时间我在研究中文分词时在网上... -
《中文jieba分词》总结
2020-12-22 12:29:10分词,即切词,在NLP文本预处理中经常使用一些方法来对文本进行分词,从而使文本从“字序列”升级到“词序列”。 为什么要进行分词?在中文中,一个个汉字有其自身的含义,但是组成词语时,其含义可能会发生很大的... -
适应传统中文分词器对微博文本进行分词:基于规则和基于统计的方法相结合
2021-03-10 16:04:32适应传统中文分词器对微博文本进行分词:基于规则和基于统计的方法相结合 -
中文分词词库整理 rar
2020-10-08 20:25:1530万 中文分词词库.txt 42537条伪原创词库.txt 百度分词词库.txt 词库地址.txt 词库下载地址.txt -
中文分词java实现
2018-05-09 22:38:07所需要抽取的文本进行分词和词性的标注,将中文划分为独立存在的词, 并且辨别这些词的词性,将每一个词的词性标注在每一个词的后面。这样做可以方便我们对一些需要的词的抽取,并且能更加方便的进行词频统计。 -
分词词库_中文分词词库最新整理(TXT格式)
2020-10-30 17:20:02分词词库_中文分词词库最新整理(TXT格式) -
ik中文分词词库35万中文分词词库(含电商)
2022-01-11 22:46:30ik中文分词词库35万中文分词词库(含电商) -
中文分词数据集.zip
2021-02-28 21:31:26分词数据集,用于训练一个用来分词的模型。详细看压缩包里的内容。 -
中文分词字典
2018-05-16 11:40:47中文分词词库,格式如下: 00000001 李 168 n 00000002 李浩 133 nr2 00000003 互联网式 121 b ... -
Python基于jieba库进行简单分词及词云功能实现方法
2020-09-20 09:10:56主要介绍了Python基于jieba库进行简单分词及词云功能实现方法,结合实例形式分析了Python分词库jieba以及wordcloud库进行词云绘制相关步骤与操作技巧,需要的朋友可以参考下 -
中文分词词库汇总
2018-08-09 23:27:08汇总的中文分词词库,分为两个目录: 1、中文分词词库汇总。包含10个词库,文件名字表示里面词的数量(单位是千),如150.txt,表示包含15万词。 2、主流分词工具的词库。包含word/jieba/mmseg/IK分词工具的最近词库... -
es中文分词器 ik分词器.zip
2020-04-24 11:00:56因为es本身的分词器对中文不是特别友好,所以使用ik分词器,分为 两种 模式,一种是粗 模式,一种是细模式,还希望能帮助到刚刚接触的人 -
PHP简易中文分词
2018-08-04 14:03:59PHP简易中文分词,免组件分词 $ca = new cls_analysis(); //把一段短文本进行拆分 $str = "把一段短文本进行拆分"; $ca->SetSource( $str, 'utf-8', 'utf-8'); $ca->StartAnalysis(); $okstr = $ca->... -
使用python进行汉语分词
2021-01-11 20:11:06中文分词是中文文本处理的一个基础性工作,然而长久以来,在Python编程领域,一直缺少高准确率、高效率的分词组件。结巴分词正是为了满足这一需求。在线演示:http://209.222.69.242:9000/特性:支持两种分词模式:...中文分词是中文文本处理的一个基础性工作,然而长久以来,在Python编程领域,一直缺少高准确率、高效率的分词组件。结巴分词正是为了满足这一需求。
在线演示:http://209.222.69.242:9000/
特性:
支持两种分词模式:
默认模式,试图将句子最精确地切开,适合文本分析;
全模式,把句子中所有的可以成词的词语都扫描出来,适合搜索引擎。
用法:
全自动安装:easy_install jieba
半自动安装:先下载http://pypi.python.org/pypi/jieba/ ,解压后运行python
setup.py install
手动安装:将jieba目录放置于当前目录或者site-packages目录,通过import jieba 来引用
(第一次import时需要构建Trie树,需要几秒时间)
算法:
基于Trie树结构实现高效的词图扫描,生成句子中汉字构成的有向无环图(DAG)
采用了记忆化搜索实现最大概率路径的计算, 找出基于词频的最大切分组合
对于未登录词,采用了基于汉字位置概率的模型,使用了Viterbi算法
接口:
组件只提供jieba.cut 方法用于分词
cut方法接受两个输入参数:
1) 第一个参数为需要分词的字符串
2) cut_all参数用来控制分词模式
待分词的字符串可以是gbk字符串、utf-8字符串或者unicode
jieba.cut返回的结构是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode),也可以用list(jieba.cut(...))转化为list
代码示例:
Python代码
#encoding=utf-8
import
jieba
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)
#encoding=utf-8
import jieba
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)
输出:
代码
Full Mode: 我/ 来/ 来到/ 到/ 北/ 北京/ 京/ 清/ 清华/ 清华大学/ 华/
华大/ 大/ 大学/ 学
Default Mode: 我/ 来到/ 北京/ 清华大学
他, 来到, 了, 网易, 杭研, 大厦
(此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
Full Mode: 我/ 来/ 来到/ 到/ 北/ 北京/ 京/ 清/ 清华/ 清华大学/ 华/ 华大/ 大/ 大学/ 学
Default Mode: 我/ 来到/ 北京/ 清华大学
他, 来到, 了, 网易, 杭研, 大厦 (此处,“杭研”并没有在词典中,但是也被Viterbi算法识别出来了)
-
中文文本分词PPT(详细讲解HMM)
2020-12-12 15:47:28PPT中包含基于词典分词算法以及HMM(隐马尔可夫模型)算法,结巴分词(具体实现算法)等内容,PPT中包含基于词典分词算法以及HMM(隐马尔可夫模型)算法,结巴分词(具体实现算法)等内容 -
中文分词词典UserDict.txt
2021-02-28 21:37:22在使用jiba分词的情况下,使用这个词典有助于提高你的分词准确度,因为这个分词词典包含了众多领域词汇,这些词汇出自某dog的几十个细胞词库。已使用转换器转换成txt,欢迎下载。 -
分析三国演义和红楼梦,进行中文分词,统计人物出场频次,生成词云图
2020-10-22 23:09:18分析三国演义和红楼梦,进行中文分词,统计人物出场频次,生成词云图。分享给广大python爱好者学习交流。 -
中文地址分词
2018-12-10 14:21:09处理中文地址的分词和匹配 采用混合分词算法进行中文地址分词 在中文地址分词基础上采用Double Levenshetin算法进行中文地址相似度进行地址匹配 -
几款开源的中文分词系统
2020-10-27 21:13:04中文分词是做好中文内容检索、文本分析的基础,主要应用于搜索引擎与数据挖掘领域。中文是以词为基本语素单位,而词与词之间并不像英语一样有空格来分隔,因而中文分词的难点在于如何准确而又快速地进行分词 -
matlab中文分词——最大正向匹配法.rar
2019-11-18 12:38:34读取词表,按照最大正向匹配法给中文分词。然后么,大家都懂的。只是一个课程练习。大家不要太当真 -
NLP:基于语料库对语句进行中文分词处理.zip
2022-04-21 15:39:52基于语料库对语句进行中文分词处理 基于语料库,实现以下操作:加载语料库进行n-gram词频统计生成词典;用生成的词典生成有意义的语句;对任意输入语句进行正确分词,实现FMM和BMM的分词方法。有GUI界面 -
使用IK Analyzer实现中文分词之Java实现
2017-03-29 23:00:55从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立于 Lucene 项目,同时提供了对 Lucene 的默认优化实现。 在 2012 版本中,IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟... -
对excel分词并保存到csv
2020-11-18 09:35:46中文分词 [1] 。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个...