二十年Hackaday文本分析
我认为大多数从事制作或建造的人都有自己擅长的领域。无论是足球机器人、收音机、吉他、相机还是充气纺织雕塑,我们都有自己专注的事物。多年来,我涉猎过各种领域,最近专注于相机黑客技术,但我还有一项不太为人所知的专长。过去二十年里,我一直对计算语言分析很感兴趣。即使不涉及任何人工智能技术,大量文本也能揭示丰富信息。为此,我陆续构建了多个语料库分析引擎。本月,我终于获准使用其中一个引擎分析Hackaday的文章语料库。虽然完成所有准备工作花费了大量精力,但现在我可以分析过去二十年的发展历程。
大家都想知道的焦点问题
开发板之争,跨越数十年的较量。
语料库引擎本身并不智能,它只是根据查询返回简单的统计数据。但让我持续投入的原因是,这些答案有时会带来惊喜。简而言之,这是一个告诉你未知信息的机器。首先,我们要解决Hackaday多年来的一個经典话题:我们是否写了太多关于Arduino的项目?向引擎输入"arduino",同时输入"raspberry"作为对比(代表树莓派)。
结果显示的是实验性开发板的简史,图表展示了每款板的发布日期和后续流行度。我们猜测Hackaday的Arduino话题起源于2011年这款意大利开发板达到巅峰时,而2012年树莓派发布后出现了一系列峰值。我认为我们看到了Pi 3和Pi 4发布后兴趣的 renewed。图表最有趣的部分在右侧,我们看到两款开发板在2020年后都出现下滑,如果非要猜测原因,我会归因于众多廉价中国开发板的崛起。
语料库维护者的困境
敏锐的读者可能会疑惑为什么图表上的数字没有更高,因为我们肯定报道过更多Arduino或树莓派项目。这里我们触及了数据处理者面临的共同问题:我们是在从数据中发现趋势,还是追求绝对数字?构建这个语料库时,我必须做出两个选择:一是能在多大程度上压力测试Hackaday的基础设施,二是愿意为这个项目分配多少计算资源和物理存储空间。我没有计算云资源,只能依赖自有的硅片和机械硬盘,而这存在物理限制。
因此在构建语料库时,我推断每篇文章中更重要的词汇会出现在开头,于是将自己限制在每篇Hackaday文章的标题和第一段,约一百个单词。这绝对足够进行趋势分析,但很明显,如果你要找的词汇出现在第三或第四段,你会失望。此外,如果这种技术让你不满,请不要深入研究你的示波器如何采样高频波形。
世界事件在我们3D打印机上的体现
我们不是世界新闻网站,但有时事件会侵入我们的世界。最大的例子可能是COVID大流行,当时对许多人来说世界都停止了。Hackaday继续运营,但不出所料,出现了大量关于疫情及相关项目的讨论。
还记得政府因呼吸机短缺而恐慌的时期吗?我们当时有不少相关报道,这些都在语料库中有所体现。幸运的是,很快大家就意识到自制呼吸机很危险,因此我们在报道这类项目时保持谨慎是正确的。
语言在我们眼前演变
复古计算机的兴起!
开始语料库软件项目时,因为曾在搜索引擎行业工作过一段时间,我对词汇之间的关系很感兴趣。后来我开始使用相同技术发现新闻内容中的趋势,这维持了我的兴趣,但这些技术还有另一个用途。
在词典行业,词典编纂者使用语料库引擎追踪语言发展,我们在Hackaday也能看到这一点。你第一次听到"复古计算机"(Retrocomputer)是什么时候?我们玩弄旧电脑已经很多年了,但在语料库中这个词首次出现在2012年。此后它经历了一些起伏,但总体保持上升趋势。在图表中,我合并了该词的各种形式:“retrocomputer”、“retrocomputing"等等。
技术实现原理
计算机本身并不聪明,它们只是非常擅长重复执行你指定的任务,连续工作数小时毫无怨言。在这个案例中,我的计算机正在分析和索引大量文本,我采用的方法经过多次迭代才确定。这受到我开始工作时所用硬件的影响——一台在2000年代中期相当炫酷的Intel Core笔记本电脑,后来是一对始终在线的树莓派板配USB硬盘。我的问题是,如果尝试使用任何现有数据库存储索引,由于其巨大规模,这些数据库很快就会变得无法使用,于是我采用了使用平面文件的技术。
我们英国人只在和美国人有关系时才用"soccer"这个词。来自我的英国新闻语料库,不是来自Hackaday。
你可以自己运行我的软件版本,它可以在我的GitHub仓库中找到。处理脚本将文本分割成句子和单词,然后将频率和搭配数据存储为硬盘卷上的小型JSON文件树,理由是文件系统是通过目录和文件名分类检索数据的极快方式。
我使用的版本只处理单词短语,但其他版本已将基于目录树的索引扩展至支持多词短语。你还可以根据需要接入词性标注器。最终结果是一个功能完整的语料库引擎,可以在初代树莓派1上运行,考虑到它能即时挖掘数百万单词的语料库,这相当不错。我的引擎负责持续更新新闻数据语料库,让我能够实时观察事件发展。
现在,轮到你了
过去一个月我花了大量时间整理Hackaday语料库并准备分析,然后又花了更多时间收集数据和撰写本文。我只能向你展示这个数据宝库中的一小部分内容,也许有你想要探索的趋势。请在下方评论中提出请求,或许我可以在后续文章中展示。