ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

关于jieba分词 - Python

2021-11-23 15:35:23  阅读:196  来源: 互联网

标签:jieba Python 词性 words reader print 分词


做词云可视化的时候,一般都用一个库叫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 # 接下来还得将词进行拆分进行词云可视化

 

标签:jieba,Python,词性,words,reader,print,分词
来源: https://www.cnblogs.com/mafu/p/15593391.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有