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

本文深入探讨了如何通过自定义语料库引擎分析Hackaday二十年文章数据,揭示了Arduino与树莓派的技术趋势演变,并详细解析了基于JSON文件索引的轻量级文本分析系统架构。

二十年Hackaday文本分析

我认为大多数从事创造或构建的人都有自己擅长的领域。无论是足球机器人、收音机、吉他、相机还是充气纺织雕塑,我们都有专攻的方向。多年来,我涉猎过多个领域,最近专注于相机破解,但还有一个不太为人所知的专长——过去二十年来,我一直对计算语言分析充满兴趣。无需任何人工智能技术,大量文本就能揭示丰富信息,为此我陆续构建了一系列语料库分析引擎。本月我终于获准使用其中一个引擎分析Hackaday文章库,经过大量整理工作,现在可以分析我们过去二十年的世界。

大家都想知道的焦点问题

开发板的年代之战

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

结果显示了一部实验性开发板的简史,图表展示了每款板的发布日期和后续流行度。我们推测Hackaday的Arduino话题源于2011年这款意大利开发板达到峰值,而2012年树莓派发布后出现了一系列峰值。我认为我们看到的是Pi 3和Pi 4发布后引发的兴趣复苏。图表最有趣的部分在右侧,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 设计