zoukankan      html  css  js  c++  java
  • jieba中文处理 python

    一、Jieba中文分词

    本文使用jieba进行文本进行分词处理,它有3种模式,精确模式,全模式模式,搜索引擎模式:

    · 精确模式:试图将句子最精确地切开,适合文本分析;

    · 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;

    · 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

    现以“南京市长江大桥”为例,3种分词模式的结果如下:

    【全模式】: 南京 南京市 京市 市长 长江 长江大桥 大桥
    【精确模式】: 南京市 长江大桥
    【搜索引擎模式】: 南京 京市 南京市 长江 大桥 长江大桥

    为了避免歧义和切出符合预期效果,在这里使用精确模式

     1 import jieba
     2 all_mode=jieba.cut('南京市长江大桥',cut_all=True)
     3 alls=" ".join(all_mode)
     4 print('【全模式】:',alls)
     5 jingque=jieba.cut('南京市长江大桥',cut_all=False)
     6 jings=" ".join(jingque)
     7 print('【精确模式】:',jings)
     8 search=jieba.cut_for_search('南京市长江大桥')
     9 searchs=" ".join(search)
    10 print('【搜索引擎模式】:',searchs)

    二、去停用词

    去停用词一般包括三类,

    标点符号

    特殊符号

    无意义的虚词

    停用词表

    链接:https://pan.baidu.com/s/1sBpZJMDJcbgyA81kC78PRg
    提取码:b54i
    复制这段内容后打开百度网盘手机App,操作更方便哦

     1 import jieba
     2 # 创建停用词列表
     3 def stopwordslist():
     4     stopwords = [line.strip() for line in open('中文停用词库.txt',encoding='gbk').readlines()]
     5     return stopwords
     6 # 对句子进行中文分词
     7 def seg_depart(sentence):
     8     # 对文档中的每一行进行中文分词
     9     print("正在分词")
    10     sentence_depart = jieba.cut(sentence.strip())
    11     # 创建一个停用词列表
    12     stopwords = stopwordslist()
    13     # 输出结果为outstr
    14     outstr = ''
    15     # 去停用词
    16     for word in sentence_depart:
    17         if word not in stopwords:
    18             if word != '	':
    19                 outstr += word
    20                 outstr += " "
    21     return outstr
    22 if __name__ == '__main__':
    23     # 给出文档路径
    24     filename = "斗破苍穹.txt"
    25     outfilename = "out.txt"
    26     inputs = open(filename, 'r', encoding='UTF-8')
    27     outputs = open(outfilename, 'w', encoding='UTF-8')
    28     
    29     # 将输出结果写入ou.txt中
    30     for line in inputs:
    31         line_seg = seg_depart(line)
    32         outputs.write(line_seg + '
    ')
    33         print("-------------------正在分词和去停用词-----------")
    34     outputs.close()
    35     inputs.close()
    36     print("删除停用词和分词成功!!!")

    三、去掉高频词,稀有词,和计算Bigrams

    去掉高频词、稀有词是针对后续的主题模型(LDA、ATM)时使用的,

    主要是为了排除对区隔主题意义不大的词汇,最终得到类似于停用词的效果。

    Bigrams是为了自动探测出文本中的新词,基于词汇之间的共现关系---如果两个词经常一起毗邻出现,

    那么这两个词可以结合成一个新词,比如“数据”、“产品经理”经常一起出现在不同的段落里,

    那么,“数据_产品经理”则是二者合成出来的新词,只不过二者之间包含着下划线。

     四、关键词提取

    1,基于TF-IDF算法的关键词提取

    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False,
    allowPOS=())
    其中需要说明的是:
    1.sentence 为待提取的文本
    2.topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
    3.withWeight 为是否一并返回关键词权重值,默认值为 False
    4.allowPOS 仅包括指定词性的词,默认值为空,即不筛选

    1 import jieba.analyse
    2 #读取文件,返回一个字符串,使用utf-8编码方式读取,该文档位于此python同以及目录下
    3 path='斗破苍穹.txt'
    4 with open(path,'r',encoding='utf-8')as ff:
    5     data=ff.read()
    6 #返回词频最高的20个词
    7 word=jieba.analyse.extract_tags(data,topK=20)
    8 print(' '.join(word))

    参考文章:https://blog.csdn.net/meiqi0538/article/details/80218870#0203_245

        :https://www.jianshu.com/p/29aa3ad63f9d

        :https://baijiahao.baidu.com/s?id=1587137075873716187&wfr=spider&for=pc

     

  • 相关阅读:
    mysql 用户表结构设计,第三方登录
    linux centOS服务器部署ssh,免密码登陆linux
    linux SSH免密码登录远程服务器
    java反射机制学习笔记
    jvm知识
    类继承相关信息
    拦截器和过滤器的执行顺序和区别
    实现Map按key或按value排序
    喜欢的句子
    sql 性能优化相关--总结别人的总结,未做验证,先归纳
  • 原文地址:https://www.cnblogs.com/zxg-1997/p/jieba.html
Copyright © 2011-2022 走看看