二十年Hackaday文本分析:揭秘技术趋势与语料库引擎构建

本文深入探讨了如何通过自定义语料库引擎分析Hackaday二十年文章数据,揭示技术趋势演变,并详细介绍了基于树形JSON文件的索引架构设计,可在树莓派上高效运行。

二十年Hackaday文本分析

我认为大多数从事创造或构建的人都有自己擅长的领域。无论是足球机器人、收音机、吉他、相机还是充气纺织雕塑,我们都有专攻的方向。多年来,我的专长几经变化,最近主要是相机破解,但我还有一项不太为人所知的专长。过去二十年间,我一直对计算语言分析充满兴趣。即使不涉及任何人工智能技术,大型文本集合也能揭示大量信息。为此,我陆续构建了多代语料库分析引擎。本月,我终于获准使用其中一个引擎分析Hackaday文章语料库。尽管需要大量工作完善系统,但现在我已经能够分析过去二十年的技术世界。

大家都想知道的焦点问题

开发板之争:跨越数十年的较量

语料库引擎本身并不智能,它只是根据查询返回直接的统计数据。但让我持续投入的原因是,这些答案有时会带来惊喜。简而言之,这是一个能告诉你未知信息的机器。首先,让我们解决Hackaday多年来的一个经典话题:我们是否写了太多关于Arduino的项目?向引擎输入"arduino",同时输入"raspberry"作为树莓派的对比。

结果显示了一部实验性开发板的简史,图表展示了每款板的发布日期和后续流行度。我们猜测Hackaday的Arduino话题源于2011年这款意大利开发板达到顶峰时,而自2012年树莓派发布后,我们看到了一系列峰值。我认为我们看到了Pi 3和Pi 4发布后兴趣的 renewed。图表最有趣的部分在右侧,我们看到两款开发板在2020年后都出现下降,如果非要猜测原因,我会归因于中国众多廉价开发板的崛起。

语料库维护者的挑战

敏锐的读者可能会好奇为什么图表上的数字没有更高,因为我们肯定报道过更多Arduino或树莓派项目。这里我们触及了任何处理数据的人都会面临的问题:我们是从数据中发现趋势,还是追求绝对数字?构建这个语料库时,我不得不做出两个选择:一是能在多大程度上压力Hackaday的基础设施,二是愿意在工作台上为这个项目投入多少计算能力和物理存储空间。我没有计算云,只能依赖自己拥有的硅和旋转硬盘,而这存在明确限制。

因此在构建这个语料库时,我推断每篇文章中更重要的词汇会更靠近开头,于是将自己限制在每篇Hackaday文章的标题和第一段,约一百个词。这绝对足够进行趋势分析,但显然,如果你要找的词在第三或第四段,你会失望。此外,如果这种技术让你不满,请不要仔细研究你的示波器如何采样更高频率的波形。

世界事件在我们3D打印机上的体现

我们不是世界新闻网站,但有时事件会侵入我们的世界。也许最大的事件是COVID大流行,当时对许多人来说世界都停止了。Hackaday继续运营,但不出所料,有很多关于大流行及其相关项目的讨论。

你还记得政府因呼吸机不足而恐慌的时期吗?我们当时有很多相关报道,它们也出现在语料库中。幸运的是,人们很快理解到自制呼吸机很危险,因此我们谨慎报道此类项目是正确的。

语言在我们眼前演变

复古计算机的崛起!

开始我的语料库软件项目时,我对词汇之间的关系感兴趣,因为我曾在搜索引擎行业工作过一段时间。后来我开始使用相同技术发现新闻内容中的趋势,这维持了我的兴趣,但这些技术还有另一个用途。

在词典行业,词典编纂者使用语料库引擎跟踪语言发展,我们在Hackaday也能看到这一点。你第一次听到"复古计算机"这个词是什么时候?我们玩弄老式计算机已经多年,但在我们的语料库中,它首次出现于2012年。自那以后,它经历了一些起伏,但总体保持上升趋势。在图表中,我合并了该词的各种形式,“retrocomputer”、“retrocomputing"等等。

那么引擎是如何构建的?

计算机本身并不聪明,它们只是非常擅长重复执行你告诉它们的任务,连续工作数小时毫无怨言。在这种情况下,我的计算机正在分析和索引大量文本,而我实现它的方式经过多次迭代。它是我开始工作时拥有的硬件的产物——一台在2000年代中期相当炫酷的Intel Core笔记本电脑,后来是一对始终在线的树莓派板和USB硬盘。我的问题是,如果我尝试使用任何可用数据库存储索引,由于其巨大规模,它们很快就会变得无法使用,因此我最终采用了使用平面文件的技术。

你可以在我的GitHub仓库中找到我的软件版本。处理脚本将文本分割成句子和单词,然后将频率和搭配数据作为大量小JSON文件的树结构存储在硬盘卷上,理由是文件系统是通过目录和文件名分类检索数据的极快方式。

我使用的版本只处理单词短语,但其他版本已将基于目录树的索引扩展到支持多词短语。你还可以根据需要插入词性标注器。结果是一个完全功能的语料库引擎,可以在原始树莓派1上运行,考虑到它能即时挖掘数百万词的语料库,这相当不错。我的引擎任务是持续更新新闻数据语料库,让我能够实时观察事件发展。

现在,轮到你了

过去一个月我花了很多时间整理Hackaday语料库并准备分析,然后又花了更多时间收集数据和撰写本文。我只能向你展示这些数据宝藏中的一小部分,所以也许有你希望探索的趋势。使用下方评论提出请求,也许我可以在后续文章中展示。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计