没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
英文 / Steve Stagg,翻译 / Ryden Sun,编辑 / 昱良 juejin.im/post/5aceae206fb9a028d2084fea Google Ngram viewer是一个有趣和有用的工具,它使用谷歌从书本中扫描来的海量的数据宝藏,绘制出单词使用量随时间的变化。举个例子,单词 Python (区分大小写): 这幅图来自:books.google.com/ngrams/grap…,描绘了单词 Python 的使用量随时间的变化。 它是由谷歌的 n-gram 数据集驱动的,根据书本印刷的每一个年份,记录了一个特定单词或词组在谷歌图书的使用量。然而这并不完整(
资源推荐
资源详情
资源评论
【实战】使用【实战】使用 Python 分析分析 14 亿条数据亿条数据
英文 / Steve Stagg,翻译 / Ryden Sun,编辑 / 昱良
juejin.im/post/5aceae206fb9a028d2084fea
Google Ngram viewer是一个有趣和有用的工具,它使用谷歌从书本中扫描来的海量的数据宝藏,绘制出单词使用量随时间的变化。举个例子,单词 Python (区分大小写)
:
这幅图来自:books.google.com/ngrams/grap…,描绘了单词 Python 的使用量随时间的变化。
它是由谷歌的 n-gram 数据集驱动的,根据书本印刷的每一个年份,记录了一个特定单词或词组在谷歌图书的使用量。然而这并不完整(它并没有包含每一本已经发布的书!),数据集中有成千上百万
的书,时间上涵盖了从 16 世纪到 2008 年。数据集可以免费从这里下载。
我决定使用 Python 和我新的数据加载库 PyTubes 来看看重新生成上面的图有多容易。
挑战挑战
1-gram 的数据集在硬盘上可以展开成为 27 Gb 的数据,这在读入 python 时是一个很大的数据量级。Python可以轻易地一次性地处理千兆的数据,但是当数据是损坏的和已加工的,速度就会变慢而且内
存效率也会变低。
总的来说,这 14 亿条数据(1,430,727,243)分散在 38 个源文件中,一共有 2 千 4 百万个(24,359,460)单词(和词性标注,见下方),计算自 1505 年至 2008 年。
当处理 10 亿行数据时,速度会很快变慢。并且原生 Python 并没有处理这方面数据的优化。幸运的是,numpy 真的很擅长处理大体量数据。使用一些简单的技巧,我们可以使用 numpy 让这个分析变得
可行。
在 python/numpy 中处理字符串很复杂。字符串在 python 中的内存开销是很显著的,并且 numpy 只能够处理长度已知而且固定的字符串。基于这种情况,大多数的单词有不同的长度,因此这并不理
想。
Loading the data
下面所有的代码/例子都是运行在 8 GB 内存内存 的 2016 年的 Macbook Pro。如果硬件或云实例有更好的 ram 配置,表现会更好。
1-gram 的数据是以 tab 键分割的形式储存在文件中,看起来如下:
Python 1587 4 2
Python 1621 1 1
Python 1651 2 2
Python 1659 1 1
每一条数据包含下面几个字段:
1. Word
2. Year of Publication
3. Total number of times the word was seen
4. Total number of books containing the word
为了按照要求生成图表,我们只需要知道这些信息,也就是:
1. 这个单词是我们感兴趣的?
2. 发布的年份
3. 单词使用的总次数
通过提取这些信息,处理不同长度的字符串数据的额外消耗被忽略掉了,但是我们仍然需要对比不同字符串的数值来区分哪些行数据是有我们感兴趣的字段的。这就是 pytubes 可以做的工作:
import tubes
FILES = glob.glob(path.expanduser("~/src/data/ngrams/1gram/googlebooks*"))
WORD = "Python"
one_grams_tube = (tubes.Each(FILES)
.read_files()
.split()
.tsv(headers=False)
.multi(lambda row: (
资源评论
weixin_38587155
- 粉丝: 7
- 资源: 908
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功