文本序列化【通用】word2sequence,文本序列字典保存
- '''
- 文本序列化
- '''
- class WordSequence():
- UNK_TAG = "<UNK>"
- PAD_TAG = "<PAD>"
- UNK = 1
- PAD = 0
- def __init__(self):
- self.dict = {
- self.UNK_TAG:self.UNK,
- self.PAD_TAG:self.PAD
- }
- self.count = {}
- def fit(self,sentence):
- '''
- 统计词频
- :param sentence:
- :return:
- '''
- for word in sentence:
- self.count[word] = self.count.get(word,0)+1
- def build_vocab(self,min_count=0,max_count = None,max_features = None):
- """
- 根据条件构建 词典
- :param min_count:最小词频
- :param max_count: 最大词频
- :param max_features: 最大词语数
- :return:
- """
- if min_count is not None:
- self.count = {word:count for word,count in self.count.items() if count >min_count}
- if max_count is not None:
- self.count = {word:count for word,count in self.count.items() if count<max_count}
- if max_features is not None:
- #排序
- self.count = dict(sorted(self.count.items(),lambda x:x[-1],reverse=True)[:max_features])
- for word in self.count:
- self.dict[word] = len(self.dict) #每次word对应一个数字
- #把dict进行翻转
- self.inverse_dict = dict(zip(self.dict.values(),self.dict.keys()))
- def transform(self,sentence,max_len =None):
- '''
- 把句子转化为数字序列
- :param sentence:
- :return:
- '''
- if len(sentence) > max_len:
- sentence = sentence[:max_len]
- else:
- sentence = sentence + [self.PAD_TAG]*(max_len-len(sentence))
- return [self.dict.get(i,1) for i in sentence]
- def inverse_transform(self,incides):
- """
- 把数字序列转化为字符
- :param incides:
- :return:
- """
- return [self.inverse_dict.get(i,"<UNK>") for i in incides]
- def __len__(self):
- return len(self.dict)
- if __name__ == '__main__':
- sentences = [["今天","天气","很","好"],
- ["今天","去","吃","什么"]]
- ws = WordSequence()
- for sentence in sentences:
- ws.fit(sentence)
- ws.build_vocab(min_count=0)
- print(ws.dict)
- ret = ws.transform(["好","热","呀","呀","呀","呀","呀","呀","呀"],max_len=5)
- print(ret)
- ret = ws.inverse_transform(ret)
- print(ret)
语料序列化并保存
- from word_sequence import WordSequence
- from dataset import get_dataloader
- import pickle
- from tqdm import tqdm
- if __name__ == '__main__':
- ws = WordSequence()
- train_data = get_dataloader(True)
- test_data = get_dataloader(False)
- for reviews,labels in tqdm(train_data,total=len(train_data)):
- for review in reviews:
- ws.fit(review)
- for reviews,labels in tqdm(test_data,total=len(test_data)):
- for review in reviews:
- ws.fit(review)
- print("正在建立...")
- ws.build_vocab()
- print(len(ws))
- pickle.dump(ws,open("./models/ws.pkl","wb"))
模型加载
- import pickle
- train_batch_size = 128
- test_batch_size = 500
- ws = pickle.load(open("./models/ws.pkl","rb"))
文本序列化【通用】word2sequence,文本序列字典保存的更多相关文章
- Java 读取Word文本框中的文本/图片/表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- C# 读取Word文本框中的文本、图片和表格(附VB.NET代码)
[概述] Word中可插入文本框,在文本框中可添加文本.图片.表格等内容.本篇文章通过C#程序代码介绍如何来读取文本框中的文本.图片和表格等内容.附VB.NET代码,有需要可作参考. [程序环境] 程 ...
- 文本溢出text-overflow和文本阴影text-shadow
前面的话 CSS3新增了一些关于文本的样式,其中text-overflow文本溢出和text-shadow文本阴影有些特别.因为它们有对应的overflow溢出属性和box-shadow盒子阴影属性. ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载
元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...
- javaScript识别网址文本并转为链接文本
最近项目有个需求:用户之间发送消息时,如果发送者输入的信息中含有网址文本,要在接受者界面中显示网址链接,点击该链接直接跳转到网页.这个功能和 QQ 发送网址文本的效果非常像,可以说是一模一样的. 思路 ...
- Lodop文本项相对于文本框居中 两端对齐
Lodop中ADD_PRINT_TEXT默认内容是相对于文本框居左的,如果想要设置相对于文本框居中,可用如下语句.还有一种是两端对齐,可以让内容的两端阿和文本框的最左和最右端对齐,文本项内容布满文本框 ...
- input文本框禁止修改文本——disabled和readonly属性的作用及区别
1.input文本框禁止修改文本 disabled属性:<input type="text" name="name" value="xxx&qu ...
- Python基本序列-字典
Python 基本序列-字典 字典(dict)是"键-值 对"的无序可变序列,字典中的每个元素包含两部分,"键"和"值". 字典中的&quo ...
随机推荐
- 深入理解JavaScript中的堆与栈 、浅拷贝与深拷贝
JavaScript中的浅拷贝与深拷贝 学了这么长时间的JavaScript想必大家对浅拷贝和深拷贝还不太熟悉吧,今天在项目中既然用到了,早晚也要理清一下思路了,在了解之前,我们还是先从JavaSc ...
- CSS3 - 新单位vw、vh、vmin、vmax使用详解
参考文章出自:https://www.hangge.com/blog/cache/detail_1715.html
- Mac OSX安装 Django MySQL mysqlclient
Python3.6 $ brew install mysql-connector-c # 如果没有安装brew,先安装:# 安装可以查看:https://www.cnblogs.com/Jokergu ...
- JSP学习笔记(二)
JSP内置对象 request对象 response对象 session对象 application对象 out对象 有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这就是JSP的 ...
- 模块 string 常用序列字符
自从知道string模块后再也不用abcd了 >>> string.digits #数字 '0123456789' >>> string.ascii_letters ...
- WPF使用 Gmap.NET 绘制极坐标运动轨迹
大家好,已经很久没有更新了,今天写一篇关于WPF 使用 Gmap.NET 相关的,网上很多Winform的很**,所以我给Wpf进行一些补充.虽然它已经很久没有更新了,但是也只能用这个了.没别的好选择 ...
- Linux操作系统及调用接口
Linux操作系统包含以下各子系统: 系统调用子系统:操作系统的功能调用同一入口: 进程管理子系统:对执行程序进行生命周期和资源管理: 内存管理子系统:对系统的内存进行管理.分配.回收.隔离: 文件子 ...
- 学习 Flex 布局
Flex 是 CSS3 推出的一种布局方式,至今有超过十年时间了 要实现 Flex 布局很容易,只需要给一个元素的 display 属性设置为 flex 就行 .box { display: flex ...
- 数据挖掘 决策树 Decision tree
数据挖掘-决策树 Decision tree 目录 数据挖掘-决策树 Decision tree 1. 决策树概述 1.1 决策树介绍 1.1.1 决策树定义 1.1.2 本质 1.1.3 决策树的组 ...
- 打造一款 刷Java 知识的小程序(二)
学习Java的神器已上线,面向广大Java爱好者! 之前写的一篇:打造一款 刷Java 知识的小程序(一) 一.第二版做了什么? 第一版小程序只具有初级展示功能,知识点都是hardcode在代码里面的 ...