这里介绍一下jieba工具包的基本使用。
安装jieba
pip install jieba |
jieba分词分为三种模式:精确模式(默认)、全模式和搜索引擎模式
实例代码如下:
#!/usr/bin/python # _*_ coding:utf-8 _*_ import jieba import jieba.posseg as ps strs = u"小明硕士毕业于中国科学院计算所,后在日本京都大学深造" #精确模式 jbgen = jieba.cut(strs) x = '|'.join(jbgen) print(x) #全模式 jbgen = jieba.cut(strs,cut_all=True) x = '|'.join(jbgen) print(x) #搜索引擎模式 jbgen = jieba.cut_for_search(strs) x = '|'.join(jbgen) print(x) |
词性分析:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#词性分析
x = ps.cut(strs)
for y in x:
print("%s,%s" % (y.word,y.flag))
print("{0},{1}".format(y.word,y.flag))
print("\n")
|
并行分词:
# 开启并行分词模式,参数为并发执行的进程数,不支持windows系统 jieba.enable_parallel(2) |
获取出现频率Top 20的词
with open("santi.txt") as f:
content = f.read()
x = jieba.cut(content)
santi_txt = [y for y in x if len(y)>=2]
#获取出现频率Top 20的词
from collections import Counter
z = Counter(santi_txt).most_common(20)
for word in z:
print("%s | %s" % (word[0],word[1]))
|
使用用户字典提高分词准确性
#使用用户字典提高分词准确性
txt = u'欧阳建国是创新办主任也是欢聚时代公司云计算方面的专家'
x = jieba.cut(txt)
print(",".join(x))
jieba.load_userdict("user_dict.txt")
x = jieba.cut(txt)
print(",".join(x))
|
文本文件:user_dict.txt的内容如下:
完整代码如下(仅供参考):
#!/usr/bin/python
# _*_ coding:utf-8 _*_
# author: robinn
import jieba
import jieba.posseg as ps
strs = u"小明硕士毕业于中国科学院计算所,后在日本京都大学深造"
#精确模式
jbgen = jieba.cut(strs)
x = '|'.join(jbgen)
print(x)
#全模式
jbgen = jieba.cut(strs,cut_all=True)
x = '|'.join(jbgen)
print(x)
#搜索引擎模式
jbgen = jieba.cut_for_search(strs)
x = '|'.join(jbgen)
print(x)
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#词性分析
x = ps.cut(strs)
for y in x:
print("%s,%s" % (y.word,y.flag))
print("{0},{1}".format(y.word,y.flag))
print("\n")
# 开启并行分词模式,参数为并发执行的进程数,不支持windows系统
#jieba.enable_parallel(2)
with open("santi.txt") as f:
content = f.read()
x = jieba.cut(content)
santi_txt = [y for y in x if len(y)>=2]
#获取出现频率Top 20的词
from collections import Counter
z = Counter(santi_txt).most_common(20)
for word in z:
print("%s | %s" % (word[0],word[1]))
#使用用户字典提高分词准确性
txt = u'欧阳建国是创新办主任也是欢聚时代公司云计算方面的专家'
x = jieba.cut(txt)
print(",".join(x))
jieba.load_userdict("user_dict.txt")
x = jieba.cut(txt)
print(",".join(x))
|
注: jieba具有对分词的词性进行标注的功能,词性类别如下:
|
Ag |
形语素 |
形容词性语素。形容词代码为 a,语素代码g前面置以A。 |
|
a |
形容词 |
取英语形容词 adjective的第1个字母。 |
|
ad |
副形词 |
直接作状语的形容词。形容词代码 a和副词代码d并在一起。 |
|
an |
名形词 |
具有名词功能的形容词。形容词代码 a和名词代码n并在一起。 |
|
b |
区别词 |
取汉字“别”的声母。 |
|
c |
连词 |
取英语连词 conjunction的第1个字母。 |
|
dg
|
副语素 |
副词性语素。副词代码为 d,语素代码g前面置以D。 |
|
d |
副词 |
取 adverb的第2个字母,因其第1个字母已用于形容词。 |
|
e |
叹词 |
取英语叹词 exclamation的第1个字母。 |
|
f |
方位词 |
取汉字“方” |
|
g |
语素 |
绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母。 |
|
h |
前接成分 |
取英语 head的第1个字母。 |
|
i |
成语 |
取英语成语 idiom的第1个字母。 |
|
j |
简称略语 |
取汉字“简”的声母。 |
|
k |
后接成分 |
|
|
l |
习用语 |
习用语尚未成为成语,有点“临时性”,取“临”的声母。 |
|
m |
数词 |
取英语 numeral的第3个字母,n,u已有他用。 |
|
Ng |
名语素 |
名词性语素。名词代码为 n,语素代码g前面置以N。 |
|
n |
名词 |
取英语名词 noun的第1个字母。 |
|
nr |
人名 |
名词代码 n和“人(ren)”的声母并在一起。 |
|
ns |
地名 |
名词代码 n和处所词代码s并在一起。 |
|
nt |
机构团体 |
“团”的声母为 t,名词代码n和t并在一起。 |
|
nz |
其他专名 |
“专”的声母的第 1个字母为z,名词代码n和z并在一起。 |
|
o |
拟声词 |
取英语拟声词 onomatopoeia的第1个字母。 |
|
p |
介词 |
取英语介词 prepositional的第1个字母。 |
|
q |
量词 |
取英语 quantity的第1个字母。 |
|
r |
代词 |
取英语代词 pronoun的第2个字母,因p已用于介词。 |
|
s |
处所词 |
取英语 space的第1个字母。 |
|
tg |
时语素 |
时间词性语素。时间词代码为 t,在语素的代码g前面置以T。 |
|
t |
时间词 |
取英语 time的第1个字母。 |
|
u |
助词 |
取英语助词 auxiliary |
|
vg |
动语素 |
动词性语素。动词代码为 v。在语素的代码g前面置以V。 |
|
v |
动词 |
取英语动词 verb的第一个字母。 |
|
vd |
副动词 |
直接作状语的动词。动词和副词的代码并在一起。 |
|
vn |
名动词 |
指具有名词功能的动词。动词和名词的代码并在一起。 |
|
w |
标点符号 |
|
|
x |
非语素字 |
非语素字只是一个符号,字母 x通常用于代表未知数、符号。 |
|
y |
语气词 |
取汉字“语”的声母。 |
|
z |
状态词 |
取汉字“状”的声母的前一个字母。 |
|
un |
未知词 |
不可识别词及用户自定义词组。取英文Unkonwn首两个字母。(非北大标准,CSW分词中定义) |