Python文本分析

格式化数据:表格、json

非格式化数据:字符串、文本

内容:

1、中文分词

2、自定义词典、去停用词

3、词频统计、关键词抽取

4、案例:招聘需求关键词抽取

一、 中文分词

分词:就是将0维的非格式化文本转化为格式化、向量化数据

中文分词:将一个汉字序列切分成一个个单独的词

英文文档中,单词之间是以空格作为自然分界符的,而中文词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在分词这一问题上,中文分词相比英文要复杂困难的多:

例如:

[0维的非格式化文本转为格式化]
分词后:
[’0维’ ‘的’ ‘非格式化’ ‘文本’ ‘转为’ ‘格式化’]

中文分词基本步骤
  1. 载入数据
  2. 分词
  3. 分词后的数据转回文本
  4. 保存分词后的文本为文本文件
import numpy as np
import pandas as pdimport jieba
import jieba.analyse# 1. 载入数据
with open('E:/text_analysis/data/test.txt', 'r', encoding='UTF-8') as f:a = f.read()# 2. 分词
print(a)  # 我来到了网易杭研大厦,我是网易人!
b = jieba.cut(a)
print(list(b))
c = jieba.lcut(a)  # 直接输出列表
print(c)
# ['我', '来到', '了', '网易', '杭研', '大厦', ',', '我', '是', '网易', '人', '!']# 3. 分词后的数据转回文本
d = ' '.join(c)
print(d)# 4.保存分词后的文本为文本文件
with open('E:/text_analysis/data/test_cut.txt', 'w', encoding='UTF-8') as f:f.write(d)
增加分词的准确率
添加自定义词典

一个词错误分为两个词,解决此问题

1、当句子中的某个词没有被识别分出时,可以指定自己自定义的词典,以便包含jieba词库里没有的词

2、词典文件的内容可以根据项目不断增加。查看初步分词,将分词不正确的词加入自定义词典然后重新再分,直到正确率达标。

3、虽然jieba有新词识别能力,但是自行添加新词可以保证更高的正确率
jieba.load_userdict(file_name) #file name 为文件类对象或自定义词典的路径

词典格式:

  • 词中间不能有标点符号
  • 一个词占一行
  • 每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
  • file_name若为路径或二进制方式打开的文件,则文件必须为UTF-8编码

注:词频省略时使用自动计算也能保证分出该词的词频

import jieba.analysea = '李小福是创新办主任也是云计算专家'
print(jieba.lcut(a))
# ['李小福', '是', '创新', '办', '主任', '也', '是', '云', '计算', '专家']# 运用自定义词典  (custom中写入云计算和创新办)
jieba.load_userdict('E:/text_analysis/data/custom.txt')
print(jieba.lcut(a))
# ['李小福', '是', '创新办', '主任', '也', '是', '云计算', '专家']
动态增加或删除系统词典

使用更灵活: 一个词错误分为两个词/两个词错误分为一个词

import numpy as np
import pandas as pdimport jieba
import jieba.analyse# 动态增加或删除词典的词(更灵活,随用随加)
a1 = '我们中出了一个叛徒'
print(jieba.lcut(a1))
# ['我们', '中出', '了', '一个', '叛徒']# 删除词典的词
jieba.del_word('中出')
print(jieba.lcut(a1))
# ['我们', '中', '出', '了', '一个', '叛徒']# 添加
jieba.add_word('出了')
print(jieba.lcut(a1))
# ['我们', '中', '出了', '一个', '叛徒']# 还原
jieba.add_word('中出')
jieba.del_word('出了')# 调节词的词频,使其能(或不能)被分出
# tune = True:执行词频调整,默认False不执行jieba.suggest_freq(('中', '出'), tune=True)
print(jieba.lcut(a1))
# ['我们', '中', '出', '了', '一个', '叛徒']jieba.suggest_freq('一个叛徒', tune=True)
print(jieba.lcut(a1))
# ['我们', '中', '出', '了', '一个叛徒']# 还原
jieba.suggest_freq('中出', tune=True)
jieba.suggest_freq(('一个', '叛徒'), tune=True)
print(jieba.lcut(a1))
# ['我们', '中出', '了', '一个', '叛徒']
去停用词

分词后,将不想出现在分词结果内的词删除

注意:修改自定义词典或停用词文本文件时,不要使用记事本修改(保存时会存为UTF-8带BOM格式,导致程序载入出问题)

# 去停用词
# 当一个字符串不是词,jieba误将其分为词,或者我们不想将某些不重要的词分出来(想删掉某些分出的词)可以自定义停用词词典
# 停用词就是要从分词结果删掉的垃圾无用词
# 词典中的词不会出现在分词结果中
# 停用词词典的内容可以根据项目不断增加
import numpy as np
import pandas as pdimport jieba
import jieba.analysea2 = '哎,额,听说你超级喜欢小游戏的!你是吗?'
b = jieba.lcut(a2)
print(b)
# 停用词表:
'''
哎
,
你
是
吗
!
?
\n
'''
stopword = []
with open('E:/text_analysis/data/stopword.txt', 'r', encoding='UTF-8') as f:for line in f.readline():l = line.strip()if l == '\\n':l = '\n'if l == '\\u3000':l = '\u3000'stopword.append(l)
# print(stopword)stopword = ['哎', ',', '你', '是', '吗', '!', '?', '\n']
x = np.array(b)
y = np.array(stopword)
print(np.in1d(x, y))  # x中有y吗?
# [ True  True False  True False  True False False False False False True True  True False]
print(~np.in1d(x, y)) # 取反
# [False False True False  True False  True  True  True  True  True False False False  True]
z = x[~np.in1d(x, y)]
print(z)  # ['额' '听说' '超级' '喜欢' '小游戏' '的' '!' '?']# 去掉一个字以下的词
# 法1
k = []
for i in z:print(len(i))if len(i) > 1:k.append(i)
print(k)  # ['听说', '超级', '喜欢', '小游戏']# 法2
k1 = [i for i in z if len(i) > 1]
print(k1)  # ['听说', '超级', '喜欢', '小游戏']

二、分词实践活动:抽取文档关键词

抽取文档关键词用于在一篇文章中获取其核心内容(描述了什么?)又叫生成摘要、打标签、关键词提取等

1、词频统计
  • 词在文本中出现的次数,某种程度上能当作文本的标签,表示文本内容
  • 不是很精确
  • 统计前最好先去完成自定义词典和去停用词的前期操作
import numpy as np
import pandas as pdimport jieba
import jieba.analysea = '哎,额,听说你超级喜欢小游戏的!你是吗?'
b = jieba.lcut(a)
print(b)  # ['哎', ',', '额', ',', '听说', '你', '超级', '喜欢', '小游戏', '的', '!', '你', '是', '吗', '?']
# 统计词频
pd.DataFrame(b)
# ascending=False降序
c = pd.DataFrame(b).groupby(0).size().sort_values(ascending=False)[:5]
print(c)
'''
0
,    2
你    2
?    1
!    1
额    1
dtype: int64
'''
2、案例:分析Python互联网招聘信息中的需求关键字

大概步骤如下:

  1. 载入文本

  2. 载入自定义词典

  3. 分词

  4. 去停用词和一个字的词

  5. 计算词频排序(输出前20个)

  6. 保存结果

  7. ​ jieba.analyse.extract_tags(txt)

词性分析:

jieba.posseg.cut()

Python文本分析---笔记相关推荐

  1. Python文本分析技巧

    上一章提到,Python是一门易用且强大的编程语言,所以本书将其作为示例语言使用,同时也提供了一套基础的Python文本分析的教程. 为什么要介绍这些Python技巧?原因是希望读者具有Python和 ...

  2. python文本分析与挖掘(一)-构建语料库

    实现功能: python文本分析与挖掘(一)-构建语料库 实现代码: import os from warnings import simplefilter simplefilter(action=' ...

  3. python 文本分析_使用Python进行文本分析–书评

    python 文本分析 This is a book review of Text Analytics with Python: A Practical Real-World Approach to ...

  4. python文本分析和提取_python文本分析和提取 Python 文本内容指定字段提取

    使用python对txt文本进行分析和提取 首先,打开计算机上的pycharm编辑器,如下图所示,然后进入下一步. 开学以后,小编没有碰过电脑,第一次,这就说明了开学是多么的可怕 其次,完成上述步骤后 ...

  5. 本·拉登的书架:Python文本分析拉登最常念叨什么?

    本文首发于编程派的微信公众号,搜索"codingpy"关注编程派吧. 2015年,美国官方解密了一系列有关本·拉登的文件,其中最引人瞩目的,是美国国家情报总监办公室(The Off ...

  6. python文本分析的开源工具_共有11款Python 中文分词库开源软件

    "哑哈"中文分词,更快或更准确,由你来定义.通过简单定制,让分词模块更适用于你的需求. "Yaha" You can custom your Chinese W ...

  7. python文本分析库_8种Python文本处理工具集

    文本处理一般包括词性标注,句法分析,关键词提取,文本分类,情感分析等等,这是针对中文的,如果是对于英文来说,只需要基本的tokenize.本文为大家提供了以下这些工具包. 1.Jieba [结巴中文分 ...

  8. Python文本分析-常用中文停用词表(Chinese Stop Words)

    在做jieba中文分词处理,进行文本分析,必不可少的停用词处理,国内比较常用的中文停用词库,有以下几个: 中文停用词表 哈工大停用词表 百度停用词表 四川大学机器智能实验室停用词库 而@elephan ...

  9. Python文本分析(精读笔记1)

    一.文本切分 1.句子切分:将文本语料库分解为句子的过程 句子切分技术,使用NLTK 框架进行切分,该框架提供用于执行句子切分的各种接口,有sent_tokenize , PunktSentenceT ...

最新文章

  1. 久其软件怎么样_久其软件助力中国电信顺利完成网络攻防演练
  2. xUtils简介及其使用方法
  3. linux环境下安装tomcat6
  4. 【MATLAB】数据类型 ( 执行代码 | 清空命令 | 注释 | 数字 | 字符 | 字符串 )
  5. 本地开发环境与生产环境布局有偏差问题
  6. React开发(178):ant design table基础用法
  7. 武汉大学计算机学院毕业选题,《计算机毕业论文写作指导》
  8. 多线程之-并发任务间交换数据
  9. 2018中国开源云超级英雄评选,等你报名!
  10. SAP 批导模板(WBS批导为例)
  11. Unity PlayerPrefs 游戏存档
  12. Android 常用的语言代码与国家地区对照表
  13. 将靠父id的层级关系处理成编码形式
  14. 微信小程序设置字体无效_UI设计微信小程序用了苹方字体,前端却说做不了怎么办?...
  15. android 不停弹出权限,Android部分手机“后台弹出界面权限”解决方案
  16. 搭建一个vue小页面(入门vue)
  17. 生命是一个苦旅,我们都在路上
  18. 我做了一个网易云音乐外链播放器的Vue组件,很nice
  19. 使用SwiftyJSON解析JSON
  20. Mac下github的基本使用(有详细过程)

热门文章

  1. 关于motionevent的使用
  2. rewrite break
  3. 挑战全网最全的idea快捷键与选项卡中文翻译
  4. python 培训南京
  5. 如何分析关键词的优化难度?
  6. Mockito verify Junit5集成 Mockito
  7. python中怎么赋值一个数为负无穷_python里面正无穷和负无穷问题?
  8. Day 1: 音标学习
  9. Springboot中对jpa动态查询条件的封装
  10. 快速学会如何在linux上用户环境变量和系统环境变量