zoukankan      html  css  js  c++  java
  • 关于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 # 接下来还得将词进行拆分进行词云可视化
  • 相关阅读:
    react log
    valueOf()、toString()、toLocaleString()三个方法的区别
    git 多账号配置 mac和windows10 记录一下
    js执行顺序,Promise和async中的立即执行
    js事件冒泡及event的target和currentTarget的区别
    canvas 旋转时 中心点的坑
    uni app 在组件中操作 canvas 已踩坑
    js 预编译原理
    mixins 在装饰器 vue-property-decorator 中的使用
    js 面向对象和函数式编程
  • 原文地址:https://www.cnblogs.com/mafu/p/15593391.html
Copyright © 2011-2022 走看看