jieba分词、自定义词典提取高频词、词性标注及获取词的位置

准备工作

安装anaconda环境,anaconda环境是一个强大的科学计算环境,自带python2.7和3.4两个版本以及很多科学计算库

安装完成后配置环境变量,然后在终端用pip install jieba安装结巴分词库

jieba介绍

支持三种分词模式:

  • 精确模式,试图将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

支持繁体分词

支持自定义词典

算法

  • 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)
  • 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
  • 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法

jieba使用

分词代码

我的工程中的代码:

#encoding=utf-8
import jieba
from astropy.table.np_utils import join
import os
import sys 

f=open(u"爽肤水评论.txt")
line= f.readline()
f2=file(u"分词后的爽肤水评论.txt","w+")
while line:
    seg_list = jieba.cut(line,cut_all=False)
    seg_list = " ".join(seg_list) 
    seg_list.encode("utf8")  
    seg_list.decode("utf8")
    f2.write(seg_list)
    f2.write("\n")
    line=f.readline()
f2.close()
f.close()  
print "end"

我在工程中通过这段代码进行分词,按行读入每条评论,进行分词,然后按行写入新的txt中。
测试代码:

#encoding=utf-8
import jieba
from astropy.table.np_utils import join
import os
import sys 
seg_list = jieba.cut("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作",cut_all=False)
seg_list = " ".join(seg_list)
print seg_list

运行结果:

Building prefix dict from the default dictionary ...
Loading model from cache c:\users\user\appdata\local\temp\jieba.cache
Loading model cost 0.334 seconds.
Prefix dict has been built succesfully.
工信处 女干事 每月 经过 下属 科室 都 要 亲口 交代 24 口 交换机 等 技术性 器件 的 安装 工作

有没有很强大?
解析代码:

jieba.cut(text,cut_all=False)

jieba.cut方法有两个参数,第一个参数是要分词的String,第二个参数控制是否为全模式切分,True表示全模式。

当然也可以

jieba.cut(text)

默认为精确模式

全模式和精确模式的效果:

【原句】:我来到北京清华大学

【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学

【精确模式】: 我/ 来到/ 北京/ 清华大学

自定义词典添加

用法
jieba.load_userdict(file_name) file_name为自定义词典的路径

词典格式和dict.txt一样,一个词占一行;每一行分三部分,一部分为词语,

另一部分为词频,最后为词性(可省略),用空格隔开

按TF-IDF提取关键词

import jieba.analyse
result=jieba.analyse.extract_tags(sentence,topK) 

方法:jieba.analyse.extract_tags(sentence,topK) 有两个参数,第一个为要提取的文本,第二个为要获取的按tf-idf排序的词的个数

词性标注

#encoding=utf-8
import jieba.posseg as pseg
words =pseg.cut("我爱北京天安门")
for w in words:
    print w.word,w.flag
----------------------------
运行结果:
我 r
爱 v
北京 ns
天安门 ns

其他

并行分词、获取一个词的位置信息。。。今后遇到再分析


分词、词性标注、按TF-IDF获取关键词等是NLP任务中最初的几步,jieba还可以自定义词典、并行分词、可谓十分强大!

至于jieba和其他分词工具的比较以及jieba分词的内部算法,今后讨论

你可能感兴趣的:(jieba分词、自定义词典提取高频词、词性标注及获取词的位置)