Python文本分析---笔记
Python文本分析
格式化数据:表格、json
非格式化数据:字符串、文本
内容:
1、中文分词
2、自定义词典、去停用词
3、词频统计、关键词抽取
4、案例:招聘需求关键词抽取
一、 中文分词
分词:就是将0维的非格式化文本转化为格式化、向量化数据
中文分词:将一个汉字序列切分成一个个单独的词
英文文档中,单词之间是以空格作为自然分界符的,而中文词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在分词这一问题上,中文分词相比英文要复杂困难的多:
例如:
[0维的非格式化文本转为格式化]
分词后:
[’0维’ ‘的’ ‘非格式化’ ‘文本’ ‘转为’ ‘格式化’]
中文分词基本步骤
- 载入数据
- 分词
- 分词后的数据转回文本
- 保存分词后的文本为文本文件
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互联网招聘信息中的需求关键字
大概步骤如下:
载入文本
载入自定义词典
分词
去停用词和一个字的词
计算词频排序(输出前20个)
保存结果
-
jieba.analyse.extract_tags(txt)
词性分析:
jieba.posseg.cut()
Python文本分析---笔记相关推荐
- Python文本分析技巧
上一章提到,Python是一门易用且强大的编程语言,所以本书将其作为示例语言使用,同时也提供了一套基础的Python文本分析的教程. 为什么要介绍这些Python技巧?原因是希望读者具有Python和 ...
- python文本分析与挖掘(一)-构建语料库
实现功能: python文本分析与挖掘(一)-构建语料库 实现代码: import os from warnings import simplefilter simplefilter(action=' ...
- python 文本分析_使用Python进行文本分析–书评
python 文本分析 This is a book review of Text Analytics with Python: A Practical Real-World Approach to ...
- python文本分析和提取_python文本分析和提取 Python 文本内容指定字段提取
使用python对txt文本进行分析和提取 首先,打开计算机上的pycharm编辑器,如下图所示,然后进入下一步. 开学以后,小编没有碰过电脑,第一次,这就说明了开学是多么的可怕 其次,完成上述步骤后 ...
- 本·拉登的书架:Python文本分析拉登最常念叨什么?
本文首发于编程派的微信公众号,搜索"codingpy"关注编程派吧. 2015年,美国官方解密了一系列有关本·拉登的文件,其中最引人瞩目的,是美国国家情报总监办公室(The Off ...
- python文本分析的开源工具_共有11款Python 中文分词库开源软件
"哑哈"中文分词,更快或更准确,由你来定义.通过简单定制,让分词模块更适用于你的需求. "Yaha" You can custom your Chinese W ...
- python文本分析库_8种Python文本处理工具集
文本处理一般包括词性标注,句法分析,关键词提取,文本分类,情感分析等等,这是针对中文的,如果是对于英文来说,只需要基本的tokenize.本文为大家提供了以下这些工具包. 1.Jieba [结巴中文分 ...
- Python文本分析-常用中文停用词表(Chinese Stop Words)
在做jieba中文分词处理,进行文本分析,必不可少的停用词处理,国内比较常用的中文停用词库,有以下几个: 中文停用词表 哈工大停用词表 百度停用词表 四川大学机器智能实验室停用词库 而@elephan ...
- Python文本分析(精读笔记1)
一.文本切分 1.句子切分:将文本语料库分解为句子的过程 句子切分技术,使用NLTK 框架进行切分,该框架提供用于执行句子切分的各种接口,有sent_tokenize , PunktSentenceT ...
最新文章
- 久其软件怎么样_久其软件助力中国电信顺利完成网络攻防演练
- xUtils简介及其使用方法
- linux环境下安装tomcat6
- 【MATLAB】数据类型 ( 执行代码 | 清空命令 | 注释 | 数字 | 字符 | 字符串 )
- 本地开发环境与生产环境布局有偏差问题
- React开发(178):ant design table基础用法
- 武汉大学计算机学院毕业选题,《计算机毕业论文写作指导》
- 多线程之-并发任务间交换数据
- 2018中国开源云超级英雄评选,等你报名!
- SAP 批导模板(WBS批导为例)
- Unity PlayerPrefs 游戏存档
- Android 常用的语言代码与国家地区对照表
- 将靠父id的层级关系处理成编码形式
- 微信小程序设置字体无效_UI设计微信小程序用了苹方字体,前端却说做不了怎么办?...
- android 不停弹出权限,Android部分手机“后台弹出界面权限”解决方案
- 搭建一个vue小页面(入门vue)
- 生命是一个苦旅,我们都在路上
- 我做了一个网易云音乐外链播放器的Vue组件,很nice
- 使用SwiftyJSON解析JSON
- Mac下github的基本使用(有详细过程)