这里只记录两种情况:

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构建词汇表相关推荐

  1. javascript做表_使用JavaScript构建HTML表

    javascript做表 In this article I will demonstrate three ways of creating and populating an HTML table ...

  2. Python Flask学习_使用Flask-wtf和web表单

    HTML中的<form> 元素表示表单,表单用于收集用户输入. 之前,学习使用request.form获取表单数据.但是有些任务重复单调,可以实现自动化管理,比如 :生成表单的HTML代码 ...

  3. excel链接隐藏工作表_自动隐藏Excel工作表

    excel链接隐藏工作表 When you build a workbook for other people to use, there might be worksheets that can s ...

  4. excel数据透视表_来自多个工作表的Excel数据透视表更新

    excel数据透视表 If you have similar data on two or more worksheets, you might want to combine that data i ...

  5. mmse评估量表_简易精神状态评价量表(mmse量表) 打印版.doc

    简易精神状态评价量表(mmse量表)15016 简易精神状态评价量表(MMSE) 项目 积分 定向力 (10分) 1.今年是哪一年 现在是什么季节? 现在是几月份? 今天是几号? 今天是星期几? 1 ...

  6. arcengine遍历属性表_记录一次Hive表清理过程

    记录一次Hive表清理过程 背景 时间:2020-07-17 在用spark+hive做数仓的过程中往往会产生很多表,过多历史表会很快消耗掉有限的hdfs资源,并且时间过于久远的表一般不会具有利用价值 ...

  7. mysql修改表结构大表_在线修改MySQL大表的表结构

    由于某个临时需求,需要给在线MySQL的某个超过千万的表增加一个字段.此表在设计之时完全按照需求实现,并没有多余的保留字段. 我们知道在MySQL中如果要执行ALTER TABLE操作,MySQL会通 ...

  8. db2如何锁定一张表_办公必备的保护工作表技巧,你会了么?

    为避免表格数据被非法修改,可以对含有数据的单元格区域进行锁定保护,这需要结合工作表保护才能实现,今天我们就来看看如何保护工作表. 按[Ctrl+A]组合键选择工作表中的所有单元格,在[开始]→[单元格 ...

  9. mysql创建复杂表_数据库_MySQL_复杂的表结构创建

    本例示例下复杂的表结构创建, 大致分为两张表 user表 和 authority(权限表) 每个用户对应一种权限,默认为1(普通用户)  灵感来源:(仿照 进程的优先级, 优先级越高的进程,数字越小) ...

最新文章

  1. DOCKER OVERLAY NETWORK consul 注册
  2. 数据管控引领科技未来
  3. ASP中Randomize随机函数的使用
  4. ConVirt 2.0.1中文汉化版
  5. 【新版上线】网易云点播内容加密服务正式发布啦!
  6. linuxpython升级3.5_linux升级python3.5到3.6
  7. 信息学奥赛一本通 1067:整数的个数 | OpenJudge NOI 1.5 11
  8. 一套代码在不同的电脑执行快慢_电脑如何选配之硬盘篇
  9. leetcode74:二维矩阵搜索问题
  10. 流程图制作规范与原则
  11. 实验五 IP协议分析实验
  12. Aurelia历险记:创建自定义PDF查看器
  13. 【微信JSSDK】PHP版微信录音文件下载
  14. 结巴分词python安装_“结巴”分词:做最好的Python分词组件
  15. 我的世界服务器信息变英文,我的世界服务器
  16. 什么是集线器、交换机、路由器、光猫?它们之间的本质区别是什么?
  17. 想知道有哪些缩小视频大小的软件?这几个压缩软件你该知道
  18. 随手记_英语_学术写作_常用近义词区分
  19. python输入个人所得税计算_用python写一个北京市的个税计算器
  20. ubuntu文件夹只读属性修改

热门文章

  1. 最新外卖霸王餐系统程序源码|美团/饿了么霸王餐系统(含数据库)(可对接公众号)
  2. 第13章-1~3 法兰接头预紧力密封接触分析(模型简化、网格调整、约束)并行计算设置、摩擦接触设置adjust to touch 、约束设置frictionless support、bolt
  3. 使用sqlhelper类查询时假如不需要参数化,那到时SqlParameter这个传参怎么处理
  4. 黑苹果开启十二代酷睿能效核心的驱动
  5. 北京“银医一卡通”项目启动
  6. ■ 直接调用阿里云视频点播API实现视频播放
  7. V2X和D2D的链路级sidelink上的区别
  8. 王者荣耀刷金币辅助(安卓调试桥与python的联合使用)
  9. Cocos2d-JS: 2.编译到安卓和iOS
  10. iOS如何让APP删除后不接受APNS推送消息