一、分词模式
二、自定义词典
注意:HMM模型(隐马尔可夫模型),可以识别新词
2.1 命令
jieba.load_userdict(filename)
filename为自定义词典的路径
2.2 使用方式
在使用的时候,词典的格式和jieba分词器本身的分词器中的词典格式必须保持一致,一个词占一行,每一行分成三部分,一部分为词语,一部分为词频(可以省略),最后为词性(可以省略),用空格隔开。
三、关键词抽取(基于TF-IDF算法)
关键词抽取并且进行词向量化之后,才好进行下一步的文本分析,可以说这一步是自然语言处理技术中文本处理最基础的一步。提取出来的关键词是字典形式存储。
3.1 用jieba.analyse.extract_tags()
命令:
jieba.analyse.extract_tags(sentence,topK=20,withWeight=False,allowPos=())
参数:sentence:待提取文本
topK:返回几个TF/IDF权重最大的关键词,默认为20个
withWeight:是否返回关键词的权重值,默认为False
allowPos:仅包含指定词性的词,默认为空,即不筛选
例子:
import jieba.analyse
s="我好想去重庆找大瑞玩然后一起吃火锅喝冰奶茶啊"
for a,b in jieba.analyse.extract_tags(s,withWeight=True):
print(a,b)
结果:
找大瑞 1.7078239289857142
喝冰 1.7078239289857142
吃火锅 1.5578493397714286
奶茶 1.4661559274571427
重庆 0.9241968538314286
一起 0.6959970096985714
然后 0.6867600907842857
3.2 用jieba.analyse.textrank(s)
和extract_tags的不同好像在于textrank进行了归一化。
命令:
jieba.analyse.textrank(sentence,topK=20,withWeight=False,allowPOS)
参数:和上述一样。
例子:
import jieba.analyse
s="不想上学啊啊啊啊"
a= jieba.analyse.textrank(s,withWeight=True)
print(a)
结果:
[('不想', 1.0), ('上学', 0.9961264494011037)]
四、词性标注
切出来的结果是generator。
例子:
s="这个十一月俺要去南京看枫叶、吃生煎和锅贴。"
for c,d in jieba.posseg.cut(s):
print(c,d)
结果:
这个 r
十一月 m
俺 r
要 v
去 v
南京 ns
看 v
枫叶 n
、 x
吃生 v
煎 v
和 c
锅贴 n
。 x
paddle模式词性:
标签 |
含义 |
标签 |
含义 |
标签 |
含义 |
标签 |
含义 |
n |
普通名词 |
f |
方位名词 |
s |
处所名词 |
t |
时间 |
nr |
人名 |
ns |
地名 |
nt |
机构名 |
nw |
作品名 |
nz |
其他专名 |
v |
普通动词 |
vd |
动副词 |
vn |
名动词 |
a |
形容词 |
ad |
副行词 |
an |
名形词 |
d |
副词 |
m |
数量词 |
q |
量词 |
r |
代词 |
p |
介词 |
c |
连词 |
u |
助词 |
xc |
其他虚词 |
w |
标点符号 |
PER |
人名 |
LOC |
地名 |
ORG |
机构名 |
TIME |
时间 |
五、并行分词
注意:windows不支持并行分词
命令:jieba.enable_parallel(4)
,参数代表并行进程数
jieba.disable_parallel()
,关闭并行分词模式
六、返回词语在原文的起止位置
使用jieba.tokenize
可以返回词语在原文的起始位置
注意:输入参数只接受unicode
result = jieba.tokenize(u'上海益民食品一厂有限公司')
print("【普通模式】")
for tk in result:
print("word: {0} \t\t start: {1} \t\t end: {2}".format(tk[0],tk[1],tk[2]))