nlp之jieba分词

“结巴”中文分词:做最好的 Python 中文分词组件

安装jieba

全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba
半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install
手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录
通过 import jieba 来引用

主要功能:

分词
jieba.cut 方法接受三个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;HMM参数用来控制是否使用HMM模型

jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用HMM模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细

待分词的字符串可以是unicode或UTF8字符串,GBK字符串,注意:不建议直接输入GBK字符串,可能无法预料地错误解码成UTF-8

jieba.cut以及jieba.cut_for_search返回的结构都是一个可迭代的generator,可以使用for循环来获取分词后得到的每一个词语(unicode),或者用jieba.lcut以及jieba.lcut_for_search直接返回list

jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典。jieba.dt为默认分词器,所有全局分词相关函数都是该分词器的映射。

1、分词全模式

import jieba
#1、分词全模式
text="我们学习大数据与人工智能NLP处理"
seg_list=jieba.cut(text,cut_all=True)
print("【1 全模式】"+"---".join(seg_list))

输出:
【1 全模式】我们---学习---大数---数据---与---人工---人工智能---智能---NLP---处理

2、精确模式—用的比较多

import jieba

text="我们学习大数据与人工智能NLP处理"
#2 精确模式---用的比较多 NLP中用这个
seg_list=jieba.cut(text,cut_all=False)
print("【2 精确模式】"+"---".join(seg_list))

输出:
【2 精确模式】我们---学习---大---数据---与---人工智能---NLP---处理

3、搜索引擎模式

import jieba

text="我们学习大数据与人工智能NLP处理"
seg_list=jieba.lcut_for_search(text)
print("【3 搜索引擎模式】"+"---".join(seg_list))

输出:
【3 搜索引擎模式】我们---学习---大---数据---与---人工---智能---人工智能---NLP---处理

4、繁体分词

import jieba

text="台湾回归祖国大陆"
seg_list=jieba.cut(text,cut_all=False)
print("【4 繁体字分词】"+"---".join(seg_list))

输出:
【4 繁体字分词】台---湾回---归祖国---大陆

5、自定义用户词典
本地有名为userdict的文件里面是自己需要的词汇

import jieba

jieba.load_userdict("userdict")
seg_list=jieba.cut(text,cut_all=False)
#动态增加词典
jieba.add_word("攻城狮")
jieba.add_word("白富美")
print("【5 加载用户词典后,繁体分词】"+"---".join(seg_list))

6、关键词抽取

import jieba
#别名 anls
import jieba.analyse as anls

paragraphs="过去几十年里,国内外的互联网巨头基本都诞生于搜索、社交、电商、衣食住行等生活和消费领域,那时的互联网也被称作消费级互联网,即To C。"\

"但近年来,人口红利逐渐消失。据QuestMobile研究,2019年,移动互联网月活用户规模达到11.38亿,增长进一步放缓,月活用户的增速一直在下跌,2017年12月同比增长6.3%。"\

"而到2019年3月同比增速更是首次跌破了4%;在用户增长方面,2019年一季度用户人均单日使用时长增长仅为半个小时,时长增幅有收窄的趋势"

#基于 TF-IDF 算法的关键词抽取
keywords = anls.extract_tags(paragraphs,topK=5,withWeight=True)
for keyword,weight in keywords:
    print('%s %s'%(keyword,weight))

#基于 TextRank 算法的关键词抽取
keywords=anls.textrank(paragraphs,topK=5,withWeight=True)
print("textrank 词的排名 page ranak 网页排名")
for keyword,weight in keywords:
    print('%s %s'%(keyword,weight))

输出:

互联网 1.1245093822563157
电商 0.6469073547105263
消费 0.5559631741768422
衣食住行 0.5267819659947368
社交 0.4924938352478947
textrank 词的排名 page ranak 网页排名
互联网 1.0
消费 0.7601365054568479
诞生 0.6558737425451479
电商 0.5407756667693269
社交 0.5377715630594668

添加自定义词典

关键词提取

词性标注

import jieba
import jieba.posseg as pseg
words=pseg.cut("我爱北京天安门")
for word,flag in words:
    print('%s %s' % (word,flag))

输出:
我 r
爱 v
北京 ns
天安门 ns

并行分词
原理:将目标文本按行分隔后,把各行文本分配到多个 Python 进程并行分词,然后归并结果,从而获得分词速度的可观提升

基于 python 自带的 multiprocessing 模块,目前暂不支持 Windows

用法:

jieba.enable_parallel(4) # 开启并行分词模式,参数为并行进程数
jieba.disable_parallel() # 关闭并行分词模式

Tokenize:返回词语在原文的起止位置
默认模式

import jieba

result=jieba.tokenize(u'永和服装饰品有限公司')
for tk in result:
    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

输出:
word 永和		 start: 0 		 end:2
word 服装		 start: 2 		 end:4
word 饰品		 start: 4 		 end:6
word 有限公司		 start: 6 		 end:10

搜索模式

import jieba

result = jieba.tokenize(u'永和服装饰品有限公司', mode='search')
for tk in result:
    print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))

输出:
word 永和                start: 0                end:2
word 服装                start: 2                end:4
word 饰品                start: 4                end:6
word 有限                start: 6                end:8
word 公司                start: 8                end:10
word 有限公司            start: 6                end:10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章