关于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 # 接下来还得将词进行拆分进行词云可视化
标签:jieba,Python,词性,words,reader,print,分词 来源: https://www.cnblogs.com/mafu/p/15593391.html