python 词汇表_使用Counter构建词汇表
这里只记录两种情况:
1
数据集是一段连续的文本,所有词汇放在一个list中(一维的)
text:
此时Counter(text),text可以是一个list,统计该list中所有元素出现的次数并返回一个dict
结合most_common()方法,就可构建词汇表:print(Counter(text).most_common(5))
(5)表示选取频率最高的5个元素,返回由(key,value)元组组成的list
再由二元组列表组成dict:print(dict(Counter(text).most_common(5)))
2
当所有的词汇不是放在一个一维的list中,而是一个二维list:
我们可以通过二层循环访问到其中的每一个元素,然后要把这些元素的值累计计数
先通过Counter()构建一个空字典(Couner对象):
sentences = [['BOS', '任', '何', '人', '都', '可', '以', '做', '到', '。', 'EOS'], ['BOS', '要', '不', '要', '再', '來', '一', '塊', '蛋', '糕', '?', 'EOS']]
word_count = Counter()
print(type(word_count)) #
word_count['a'] = 1
word_count['b'] = 2
print(word_count) # Counter({'b': 2, 'a': 1})
print(word_count['c']) # 0
for sentence in sentences:
for s in sentence:
word_count[s] += 1
print(word_count)
# Counter({'b': 2, 'BOS': 2, 'EOS': 2, '要': 2, 'a': 1, '任': 1, '何': 1, '人': 1, '都': 1, '可': 1, '以': 1, '做': 1, '到': 1, '。': 1, '不': 1, '再': 1, '來': 1, '一': 1, '塊': 1, '蛋': 1, '糕': 1, '?': 1})
有了这个字典可以用most_common方法获得二元组list,
然后通过dict()获得字典:
print(word_count.most_common(6))
# [('b', 2), ('BOS', 2), ('EOS', 2), ('要', 2), ('a', 1), ('任', 1)]
print(dict(word_count.most_common(6)))
# {'b': 2, 'BOS': 2, 'EOS': 2, '要': 2, 'a': 1, '任': 1}
3
截止到以上,关于Counter的部分已经完成,下面的工作是,如果我们要在这个字典中加上unk 这个key,要怎么做呢?
如果只是要在字典中加入一个unk键值对的话很简单:
vocab = dict(word_count.most_common(6))
vocab['unk'] = num-np.sum(list(vocab.values()))
print(vocab)
# {'b': 2, 'BOS': 2, 'EOS': 2, '要': 2, 'a': 1, '任': 1, 'unk': 13}
4
如果要构建词汇表,需要一个不重复单词的list,我们需要word-index的字典来用index映射单词
idx_to_word = list(vocab.keys())
print(idx_to_word) # ['b', 'BOS', 'EOS', '要', 'a', '任', 'unk']
word_to_idx = {word:i for i, word in enumerate(idx_to_word)}
print(word_to_idx) # {'b': 0, 'BOS': 1, 'EOS': 2, '要': 3, 'a': 4, '任': 5, 'unk': 6}
5
如果要求’unk’索引为0,'pad’索引为1呢?我们可以这样取出word和索引:
ls = word_count.most_common(6)
for index, w in enumerate(ls):
print(w[0], index)
# b 0
# BOS 1
# EOS 2
# 要 3
# a 4
# 任 5
word_dict = {w[0]:index+2 for index, w in enumerate(ls)}
word_dict['unk'] = 0
word_dict['pad'] = 1
# {'b': 2, 'BOS': 3, 'EOS': 4, '要': 5, 'a': 6, '任': 7, 'unk': 0, 'pad': 1}
原文链接:https://blog.csdn.net/kunAUGUST/article/details/106886070
python 词汇表_使用Counter构建词汇表相关推荐
- javascript做表_使用JavaScript构建HTML表
javascript做表 In this article I will demonstrate three ways of creating and populating an HTML table ...
- Python Flask学习_使用Flask-wtf和web表单
HTML中的<form> 元素表示表单,表单用于收集用户输入. 之前,学习使用request.form获取表单数据.但是有些任务重复单调,可以实现自动化管理,比如 :生成表单的HTML代码 ...
- excel链接隐藏工作表_自动隐藏Excel工作表
excel链接隐藏工作表 When you build a workbook for other people to use, there might be worksheets that can s ...
- excel数据透视表_来自多个工作表的Excel数据透视表更新
excel数据透视表 If you have similar data on two or more worksheets, you might want to combine that data i ...
- mmse评估量表_简易精神状态评价量表(mmse量表) 打印版.doc
简易精神状态评价量表(mmse量表)15016 简易精神状态评价量表(MMSE) 项目 积分 定向力 (10分) 1.今年是哪一年 现在是什么季节? 现在是几月份? 今天是几号? 今天是星期几? 1 ...
- arcengine遍历属性表_记录一次Hive表清理过程
记录一次Hive表清理过程 背景 时间:2020-07-17 在用spark+hive做数仓的过程中往往会产生很多表,过多历史表会很快消耗掉有限的hdfs资源,并且时间过于久远的表一般不会具有利用价值 ...
- mysql修改表结构大表_在线修改MySQL大表的表结构
由于某个临时需求,需要给在线MySQL的某个超过千万的表增加一个字段.此表在设计之时完全按照需求实现,并没有多余的保留字段. 我们知道在MySQL中如果要执行ALTER TABLE操作,MySQL会通 ...
- db2如何锁定一张表_办公必备的保护工作表技巧,你会了么?
为避免表格数据被非法修改,可以对含有数据的单元格区域进行锁定保护,这需要结合工作表保护才能实现,今天我们就来看看如何保护工作表. 按[Ctrl+A]组合键选择工作表中的所有单元格,在[开始]→[单元格 ...
- mysql创建复杂表_数据库_MySQL_复杂的表结构创建
本例示例下复杂的表结构创建, 大致分为两张表 user表 和 authority(权限表) 每个用户对应一种权限,默认为1(普通用户) 灵感来源:(仿照 进程的优先级, 优先级越高的进程,数字越小) ...
最新文章
- DOCKER OVERLAY NETWORK consul 注册
- 数据管控引领科技未来
- ASP中Randomize随机函数的使用
- ConVirt 2.0.1中文汉化版
- 【新版上线】网易云点播内容加密服务正式发布啦!
- linuxpython升级3.5_linux升级python3.5到3.6
- 信息学奥赛一本通 1067:整数的个数 | OpenJudge NOI 1.5 11
- 一套代码在不同的电脑执行快慢_电脑如何选配之硬盘篇
- leetcode74:二维矩阵搜索问题
- 流程图制作规范与原则
- 实验五 IP协议分析实验
- Aurelia历险记:创建自定义PDF查看器
- 【微信JSSDK】PHP版微信录音文件下载
- 结巴分词python安装_“结巴”分词:做最好的Python分词组件
- 我的世界服务器信息变英文,我的世界服务器
- 什么是集线器、交换机、路由器、光猫?它们之间的本质区别是什么?
- 想知道有哪些缩小视频大小的软件?这几个压缩软件你该知道
- 随手记_英语_学术写作_常用近义词区分
- python输入个人所得税计算_用python写一个北京市的个税计算器
- ubuntu文件夹只读属性修改
热门文章
- 最新外卖霸王餐系统程序源码|美团/饿了么霸王餐系统(含数据库)(可对接公众号)
- 第13章-1~3 法兰接头预紧力密封接触分析(模型简化、网格调整、约束)并行计算设置、摩擦接触设置adjust to touch 、约束设置frictionless support、bolt
- 使用sqlhelper类查询时假如不需要参数化,那到时SqlParameter这个传参怎么处理
- 黑苹果开启十二代酷睿能效核心的驱动
- 北京“银医一卡通”项目启动
- ■ 直接调用阿里云视频点播API实现视频播放
- V2X和D2D的链路级sidelink上的区别
- 王者荣耀刷金币辅助(安卓调试桥与python的联合使用)
- Cocos2d-JS: 2.编译到安卓和iOS
- iOS如何让APP删除后不接受APNS推送消息