5

对于一些文本挖掘应用程序,我需要确定英语维基百科中每篇文章的每个单词的频率,并使用该数据填充 MySQL 数据库。这个官方页面建议在转储上使用 mwdumper 或 xml2sql,但它们并不直接服务于我的目的(除非有人可以解释他们是如何做到的)。

另一方面,使用WikiExtractor、Python 的 MySQLdb 和本地 MySQL 服务器可以让我做我想做的事,但它的速度很慢,以至于解析整个转储需要一个月的时间。对修改后的 WikiExtractor 程序进行分析表明,大部分运行时都花在了它的嵌套正则表达式搜索和我的数据库插入中。

理想情况下,我不希望处理文章花费超过几天的时间。我怎样才能有效地做到这一点?

4

1 回答 1

2

Perl 包MediaWiki::DumpFile非常适合解析。要加载转储并读取每个页面,您只需要很少的代码行。

要进行简单的词频计算,您可以使用Perl FAQ 中的示例代码或包Text::Ngrams 来做一些更智能的事情。

将结果添加到数据库取决于您,因为您正在开发应用程序并且您应该知道需求。

于 2012-11-25T17:28:36.787 回答