提取txt文本有效内容
原理:
1.使用足够多的垃圾邮件和非垃圾邮件的内容作为训练集
2.读取全部训练集
删除其中的干扰字符
【 】 ,* 。
进行分词
删除长度为 1 的单个字符
3.统计全部训练集中每个有效词汇的出现次数,截取出现次数最多的前 N 个
注:N 可以自己指定
4.根据每个经过第 2 步预处理后的垃圾邮件和非垃圾邮件内容生成特征向量
统计第 3 步中得到的 N 个词语分别在该邮件中的出现频率
每一个邮件对应一个特征向量,特征向量长度为 N
每个分量的值 表示对应的词语 在本邮件中出现的次数
[3,0,0,5] 第一个词语出现 3 次,第四个词出现了 5 次
5.根据第 4 步中得到的特征向量和已知邮件分类创建并训练朴素贝叶斯模型
注:明确哪些是垃圾邮件,哪些不是垃圾邮件
6.读取测试邮件,参考第 2 步,对邮件文本进行预处理,提取特征向量
7.使用第 5 步中训练好的模型,根据第 6 步提取的特征向量对邮件进行分类 程序要点:
1.使用 re 模块下的 sub 替换干扰的符号
from re import sub
2.使用 os 模块下的 listdir 列出所有的记事本文件 .txt
from os import listdir
3.使用 collections 模块下的 Counter 对邮件中字符出现的次数进行统计
from collections import Counter
4.使用 itertools 模块下的 chain 对邮件中字符出现的次数进行统计
from itertools import chain
5.使用 numpy 模块下的 array 将数据输入到模型中,使用数组
from numpy import array
6.使用 jieba 模块下的 cut 对内容进行分词
from jieba import cut
7.使用 sklearn.naive_bayes 模块下的 MultinomialNB 导入朴素贝叶斯
from sklearn.naive_bayes import MultinomialNB
8.删除字符串两边的空白字符(空格,制表符,换行符)
line = line.strip()
9.将其他字符替换为空白字符
line = sub(r'[.【】 0-9、-。,!~\*]','',line)
10.对文本进行分词
line = cut(line)
11.过滤长度为 1 的单个字
line = filter(lambda word:len(word) > 1,line)
filter 函数将大于 1 的保存下来
12.列表添加元素使用 extends
words.extends(line) 程序:
from re import sub
from os import listdir
from collections import Counter
from iteratools import chain
from numpy import cut
from sklearn.naive_bayes import MultinomialNB def getWordsFromFile(txtFile):
# 获取每一封邮件中的所有词语
words = []
# 将所有存储邮件文本内容的记事本文件都使用 UTF8 编码
with open(txtFile,encoding = "utf8") as fp:
for line in fp:
# 遍历每一行,删除两端的空白字符
line = line.strip()
# 过滤掉干扰字符
line = sub(r'[.【】 0-9、-。,!~\*]','',line)
# 对 line 进行分词
line = cut(line)
# 过滤长度为 1 的词
line = filter(lambda word:len(word) > 1 ,line)
# 将文本预处理得到的词语添加到 words 列表中
words.extend(line)
return words
2020-04-11
提取txt文本有效内容的更多相关文章
- 关于itext生成pdf的新的demo(包含简单的提取txt文件的内容 和xml内容转化为pdf)
一.用的iText版本为7.0.2版本,maven的配置如下: <dependencies> <!-- always needed --> <dependency> ...
- java操作txt文本(二):删除文本括号内的内容
想法由来:之前写读书报告时,遇到一些烦人的文献,总喜欢把注释作为括号内容放到正文中,使文章繁琐冗长,所以写了下面这个代码,剔除了括号内的内容. 适用条件:原txt文本中的括号使用正确,即左右括号匹配正 ...
- C#提取TXT文档指定内容
早上有分享一篇<VB.NET提取TXT文档指定内容> http://www.cnblogs.com/insus/p/3267347.html 那是原网友的需求用VB.NET写的.刚才有只懂 ...
- Java HashSet对txt文本内容去重(统计小说用过的字或字数)
Java HashSet对txt文本内容去重(统计小说用过的字或字数) 基本思路: 1.字节流读需要去重的txt文本.(展示demo为当前workspace下名为utf-8.txt的文本) 2.对读取 ...
- 如何快速合并多个TXT文本内容
工作中有时候需要合并很多文本内容,例如一些推送清单之类,一个一个打开去复制粘贴的话,少量还行,如果txt文本数据量大(10+M以上)且文件数量多(成百上千),这种方式就显得很低效了.具体要求如下: ...
- python读取、写入txt文本内容
转载:https://blog.csdn.net/qq_37828488/article/details/100024924 python常用的读取文件函数有三种read().readline().r ...
- 解决windows7搜索不了txt文本内容的问题
windows7默认的搜索框是只搜索文件名,若是要文件内容的话,需要这样设置: 打开"我的电脑",左上角"组织"→"文件夹和搜索选项"→&q ...
- 芝麻HTTP:TXT文本存储
将数据保存到TXT文本的操作非常简单,而且TXT文本几乎兼容任何平台,但是这有个缺点,那就是不利于检索.所以如果对检索和数据结构要求不高,追求方便第一的话,可以采用TXT文本存储.本节中,我们就来看下 ...
- C#提取PPT文本——提取SmartArt中的文本、批注中的文本
提取文本的情况在工作和学习中常会遇到,在前面的文章中,已经讲述了如何提取PPT中文本框里的文本,在本篇文章中,将介绍如何使用C#代码语言提取PPT文档中SmartArt和批注中的文本.同样的,程序里面 ...
随机推荐
- 【error fixed】E: Package 'oracle-java8-installer' has no installation candidate
问题:安装oracle-java8-installer按照如下指南失败: How To Install Java with Apt-Get on Ubuntu 16.04[https://www.di ...
- python unittest自动测试框架
编写函数或者类时进行测试,确保代码正常工作 python unittest 模块提供了代码测试工具.按照定义测试包括两部分:管理测试依赖库的代码(称为‘固件’)和测试本身. 单元测试用于核实函数的某 ...
- 一个ioc例子jdk和spring版本导致问题
今天橘子松在做一个简单例子的时候,出现bug让我久久找了半小时... 天啊 不会吧 错误如下: java.lang.NoSuchMethodError: org.springframework.a ...
- mmdetection源码剖析(1)--NMS
mmdetection源码剖析(1)--NMS 熟悉目标检测的应该都清楚NMS是什么算法,但是如果我们要与C++和cuda结合直接写成Pytorch的操作你们清楚怎么写吗?最近在看mmdetectio ...
- 每日一题 - 剑指 Offer 36. 二叉搜索树与双向链表
题目信息 时间: 2019-06-29 题目链接:Leetcode tag: 二叉搜索树 中序遍历 递归 深度优先搜索 难易程度:中等 题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循 ...
- css实现自适应正方形的多种方法实现
方案一:CSS3 vw 单位 CSS3 中新增了一组相对于可视区域百分比的长度单位vw.vh.vmin.vmax.其中vw是相对于视口宽度百分比的单位,1vw = 1% viewport width, ...
- Redis基础01-redis的数据结构
参考书:<redis设计与实现> Redis虽然底层是用C语言写的,但是底层的数据结构并不是直接使用C语言的数据结构,而是自己单独封装的数据结构: Redis的底层数据结构由,简单动态字符 ...
- 如何科学地完成一场 AR 发布会?全在这份超细节活动策划 Xmind 里了
你们在哪个酒店搭的景? 5 月 28 日,网易智慧企业完成了一场实景人物拍摄 + 虚拟舞台渲染的 AR 线上见面会.非常有趣的是,在直播过程中,不止一位观众问我们,“你们是在哪个酒店搭的景?”.看来我 ...
- 概率图模型(CPD)(二)
CPD是conditional probability distribution的缩写,翻译成中文叫做 条件概率分布.在概率图中,条件概率分布是一个非常重要的概念.因为概率图研究的是随机变量之间的练习 ...
- Python面向对象03 /继承
Python面向对象03 /继承 目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生 ...