文本预处理方法总结

news2024/11/24 22:46:55

数据的预处理

项目需要,需要进行词库训练与样本向量化处理,总结后有以下4种方法:

方法1:tf 1.xx版本:

词汇样本的处理:使用tensorflow.contrib.learn模块

vocab_process = learn.preprocessing.VocabularyProcessor(max_document_length)
vocab_process.fit(x_test)
vocab_process.save(path)

训练好的字典模型加载:

vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)

输入格式:x_test:[‘’,‘’,‘’,‘’,…] 样本格式,每个样本之间的字符以空格隔开,eg:
x_test = [‘I love you’, ‘me too’]
在这里插入图片描述

在这里插入图片描述

会增加一个UNK 表示未知字符
新来的样本会依据得到的词库进行索引表示,如上的I me too 得到的结果为[1, 4, 5,0]

输入:x_test = [‘i love you’,‘me you too’,‘you love me’]
训练结果:{‘me’: 4, ‘love’: 2, ‘i’: 1, ‘too’: 5, ‘you’: 3, ‘’: 0}
输出:[1, 2, 3, 0]
[4, 3, 5, 0]
[3, 2, 4, 0]

因为后续需要兼容py27和py38,但是py38只有tf2xx版本,考虑其他方式进行处理,可以使用keras或者纯代码编写,或者word2vec。

方法2: word2vec:

使用gensim.models.word2vec中的 Word2Vec

模型训练:
model = Word2Vec(text,…)
model.save(model_path)
模型加载更新:
model = Word2Vec.load(model_path)
model.build_vocab(text, update= True) 更新词汇表
model.train(text,total_examples=model.corpus_count, epochs=model.iter)

word2vec(sentence,min_count)训练的时候,如果输入列表就不会按字符分割了,训练好之后,使用wv vocab可以查看字典;
Word2Vec([i.split(’ ') for i in x_text],min_count=1).wv.vocab

方法3:keras数据预处理:

在这里插入图片描述
在这里插入图片描述
Tokenizer建立的时候,如果想根据字符分割就char_level=true,如果不想就不要填写
在这里插入图片描述
text_to_word_sequence(text)按空格分割语料
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入:[‘i love you’,‘me you too’,‘you love me’]
训练结果:{‘me’: 4, ‘love’: 3, ‘i’: 5, ‘too’: 6, ‘you’: 2, ‘UNK’: 1}
输出:[[5, 3, 2], [4, 2, 6], [2, 3, 4]]
想要填充的话使用pad_sequences进行,可以选择填充在前面还是后面;

tips:tf中的数据预处理生成的字典没有根据词频的大小进行排序,但是keras这里是根据词频进行大小排列的;且UNK在tf中的标识是0,在这里是1,填充的时候可以选择填充的值;

方法4:纯代码编写:

统计单词出现的频数后进行排序

import codecs
import collections
import re
from operator import itemgetter

data_path="Lord of the rings.txt"  #输入文本
vocab_path="vocab.txt"    #单词文本
output_path="train.txt"  #语句中相应单词对应的编码数

counter = collections.Counter()  #生成空字典,用来统计单词频数

with codecs.open(data_path, "r", "utf-8") as f:
    for line in f:
        for word in re.split("\W+",line.strip()):
            counter[word] += 1
f.close()
sorted_word_to_cnt = sorted(counter.items(), key=itemgetter(1), reverse=True)  #按照单词频数进行由大到小排序
sorted_words = [x[0] for x in sorted_word_to_cnt]
if len(sorted_words) > 10000:
    sorted_words = sorted_words[:10000]

with codecs.open(vocab_path, 'w', 'utf-8') as file_output:
    for word in sorted_words:
        file_output.write(word + '\n')
file_output.close()

with codecs.open(vocab_path, 'r', 'utf-8') as f_vocab:
    vocab = [w.strip() for w in f_vocab.readlines()]
word_to_id = {k: v for (k, v) in zip(vocab, range(len(vocab)))}  

def get_id(word):
    return word_to_id[word]

fin = codecs.open(data_path, 'r', 'utf-8')
fout = codecs.open(output_path, 'w', 'utf-8')
for line in fin:
    for words in re.split("\W+",line.strip()):
        out_line = " ".join([str(get_id(words))]) + '\n'  #寻找单词对应的编码数
        fout.write(out_line)
fin.close()
fout.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装RabbitMQ

文章目录1.下载Rabbitmq镜像2.创建并运行 RabbitMQ 容器3.启动rabbitmq_management4.访问前端页面5.开通端口1.下载Rabbitmq镜像 下载最新版本的镜像: docker pull rabbitmq如何想要其他版本可以访问 Docker 官网 https://hub.docker.com/_/rabbitmq?tabtags 2.…

AOP注解实现接口敏感字段加密

AOP注解实现接口敏感字段加密 文章目录AOP注解实现接口敏感字段加密定义方法注解EncryptMethod定义字段注解EncryptField新增加密解密工具定义AOP核心处理类EncryptFieldAop使用注解项目如果不允许明文存储敏感数据(例如身份证号、银行卡号,手机号等&…

ShuffleNetV2 结构(附源码)

本文不细看paper,只看网络结构和源码实现。 看下ShuffleNetV2的结构吧。 image是3通道进去,经过conv1和maxpool, 然后stage2~4则是主题,里面stride 2和 stride 1的shuffleBlock分别重复几次。 shuffleBlock如下,左边是stride…

搭建Kubord管理k8s/EKS以及Harbor私有仓库教程

eks首先要去aws后台进行创建,这里不再讲解详细的过程,下面讲解如果通过命令行以及kuboard调度esk服务。 安装docker以及docker-compose yum install docker service docker start curl https://get.daocloud.io/docker/compose/releases/download/1.24…

零食商城小程序开发,建立商家良好品牌形象

相信很多人都无法拒绝来自零食的诱惑,尤其是在闲暇刷剧时,一边看剧一边享受着味蕾的满足,简直不要太幸福。现在人们对于零食的要求越来越高,不仅注重口感,更讲究包装,这就让零食行业逐渐走向精细化。而零食…

ssm+Vue计算机毕业设计校园统一网络授课平台(程序+LW文档)

ssmVue计算机毕业设计校园统一网络授课平台(程序LW文档) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项…

SpringMVC-狂神

SpringMVC优点: 轻量级,简单易学 高效,基于请求响应的MVC框架 与Spring无缝结合 功能强大:RESTful风格,数据验证,格式化,本地化,主题等 简单灵活 SpringMVC全部围绕DispatchSer…

AI(人工智能),时代的风口

你知道AI并非一个新词吗? 你知道 AI 正在影响着包括数学、物理学、生命科学等诸多领域的前沿科学研究吗? “AI是一个具有魅力的词,也是一个很古老的词”。 我们通常所说的AI (Artificial intelligence) 翻译为“人工…

安卓玩机搞机技巧综合资源-----不亮屏幕导资料 有屏幕锁保数据刷机等 多种方式【十五】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

C#打开摄像头后获取图片,调用face_recognition进行人脸识别

运行效果如截图:左边和保存的图片做对比,打印相似度,部分打印内容为python中的打印输出,可以用来做结果判断。右边打开摄像头后,可以单张图片进行人脸识别,或者一直截图镜头中的图片进行比对。期中python是…

ReSharper添加对最新C#11特性的支持

ReSharper添加对最新C#11特性的支持 C#11 UTF-8文字-增加了对UTF-8文字的基本支持。代码分析现在建议对文字使用u8后缀,而不是System.Text.Encoding.UTF8.GetBytes()方法或具有适当UTF8符号的字节数组。还有一组UTF-8文本的编译器警告和错误。 文件本地类型-添加了对…

服务器公网带宽1M能同时接受多少人访问?

文章目录1、什么是服务器的带宽?2、服务器带宽多少?3、服务器带宽1M能同时接受多少人访问?1、什么是服务器的带宽? 在服务器托管中,服务器带宽指在特定时间段从或向网站/服务器传输的数据量,例如,单月内的累积消耗“带宽”,实…

【开源掌机】百问网DShanMCU-Mio开源掌机(爻-澪)项目,完美支持运行10多个模拟器!

众筹说明 定金翻倍,即定金19.9元,在付尾款时可抵40元(成品售价不会超过120元)!达标当天就开搞,满100人加速搞尽量在年前发货,让大家先玩起来!如果不达标则原路退款,项目取消。 众筹时间&#…

利用Matlab进行图像分割和边缘检测

本文章包含以下内容: 1、灰度阀值分割 (1)单阈值分割图像 先将一幅彩色图像转换为灰度图像,显示其直方图,参考直方图中灰度的分布,尝试确定阈值;应反复调节阈值的大小,直至二值化的效果最为满意…

LDR6035PD快充快放带数据还要啥莲花清翁

随着Type-C的普及和推广,目前市面上的移动电源正在慢慢淘汰micro-USB接口,逐渐都更新成了Type-C接口,micro-USB接口从2007年上市,已经陪伴我们走过十多个年头,自从2015年Type-C登场,micro-USB也开始渐渐淡出…

写给前端开发者的「Promise备忘手册」

前言 大家好,我是HoMeTown,Promise想必大家都知道,在平时的开发工程中也经常会有用到,但是Promise作为ES6的重要特性,其实还拥有很多丰富的知识,本文面向比较初级一些的同学,可以帮你搞懂Promi…

金庸群侠传3DUnity重置入门-Mods开发

金庸3DUnity重置入门系列文章 金庸3dUnity重置入门 - lua 语法 金庸3dUnity重置入门 - UniTask插件 金庸3dUnity重置入门 - Mods开发 金庸3dUnity重置入门 - Cinemachine 动画 金庸3dUnity重置入门 - 大世界实现方案 金庸3dUnity重置入门 - 素材极限压缩 (部分可能放到付…

[附源码]Nodejs计算机毕业设计基于web的社团管理系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

机器学习——01基础知识

机器学习——01基础知识 github地址:https://github.com/yijunquan-afk/machine-learning 参考资料 [1] 庞善民.西安交通大学机器学习导论2022春PPT [2] 周志华. 机器学习.北京:清华大学出版社,2016 [3] AIlearning 一、机器学习算法的应用 目前,机…

【Redis】集合Set和底层实现

文章目录Redis 集合(Set)Set简介常用命令应用场景共同关注实例整数集合整数集合介绍整数集合的升级哈希表哈希表的原理和实现Redis中的哈希表rehash渐进式rehashRedis 集合(Set) Set简介 Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以…