关于jieba分词 Python

做词云可视化的时候,一般都用一个库叫jieba,它是用来分词的。

Jieba库在安装时,会附带一个词库,这个词库中包含了日常汉语的词语和词性。在分词时,Jieba库会先基于词库对文本进行匹配,生成文本中的汉字最有可能形成的词。然后将这些词组成一个DAG,用动态规划算法来查找最大的概率路径,尽可能不将一个词拆成单独的汉字。最后,再从词库中找出基于词频的最大切分组合,把这些组合在文本中找出来,进而形成一个一个的词语。

同时Jieba库还使用了HMM模型,用以提高分词的准确率,该模型可以对词库中没有的词进行分词。

jieba库里有一个cut函数,提供了自动分词功能。

1 import jieba
2 
3 # 打开文档
4 with open(r'C:\Users\rabbiter\Desktop\2\1.txt', mode='r', encoding='utf-8-sig') as f:
5     reader = f.read() # 就叫阅读器吧
6 words = jieba.cut(reader) # 开始分词
7 print(list(words)) # ['他

上面的分词结果中,有大量的标点符号,和一些与情感表达无关的词语,为了避免无关词语对情感分析的影响和加快计算词语的情感速度,就需要对分词的结果进行优化。主要从删除标点符号还有与情感表达无关的词语。

方法一般是使用停用词集和提取文本中的关键词词性。

1,使用停用词集:

 1 import jieba
 2 
 3 # 打开文档
 4 with open(r'C:\Users\rabbiter\Desktop\2\1.txt', mode='r', encoding='utf-8-sig') as f:
 5     reader = f.read() # 就叫阅读器吧
 6 words = jieba.cut(reader) # 开始分词
 7 # print(list(words)) # ['他', '是', '风光', '无限', '的', '帝国', '总裁', ',', '商场', '的', '中流砥柱', '。', '\n', '\n', ' ', ' ', ' ', ' ', '她', '是', '出生', '富家', '的', '少女'...]
 8 
 9 # 打开停用词集
10 with open(r'C:\Users\rabbiter\Desktop\2\1.txt', mode='r', encoding='utf-8-sig') as f:
11     stopWords = f.read()
12 
13 remainWords = [] # 用来存储分析过后的词集
14 for i in list(words):# 循环读取文档中取出来的词
15     if i not in stopWords: # 假如这个词不在停用词集中
16         remainWords.append(i) # 将其追加到列表以供使用
17 print(remainWords)

2,根据词性提取关键词,每个词语都是有着自己的词性,可以通过Jieba库提取出来每个词的词性,然后进行筛选,保留需要的词语,代码如下:

 1 import jieba
 2 import jieba.posseg as psg
 3 # 打开文档
 4 with open(r'C:\Users\rabbiter\Desktop\2\1.txt', mode='r', encoding='utf-8-sig') as f:
 5     reader = f.read() # 就叫阅读器吧
 6 words = jieba.cut(reader) # 开始分词
 7 # print(list(words)) # ['他', '是', '风光', '无限', '的', '帝国', '总裁', ',', '商场', '的', '中流砥柱', '。', '\n', '\n', ' ', ' ', ' ', ' ', '她', '是', '出生', '富家', '的', '少女'...]
 8 
 9 cixing = () # 定义词性元组
10 cixingWords = [] # 需要的词
11 for i in psg.cut(reader): # 开始提取词性
12     # print(i) # 是/v,前面的"是"表示词,后面的”v“表示是动词
13     cixing = (i.word, i.flag) # 词语和词性
14     # print(cixing) # ('他', 'r')
15     cixingWords.append(cixing) # 将所有元组都添加到列表
16 
17 # 开始条件分词
18 save = ['a', 'n'] # a表示形容词,n表示名词
19 for i in cixingWords:
20     # print(i) # 元组
21     if i[1] in save: # 通过索引取到词性,条件判断在不在列表中
22         print(i) # 打印结果
23 # 接下来还得将词进行拆分进行词云可视化
原文地址:https://www.cnblogs.com/mafu/p/15593391.html