2012-11-24 30 views
3

對於某些文本挖掘應用程序,我需要識別英文維基百科中每篇文章的每個詞的頻率,並使用該數據填充MySQL數據庫。 This official page建議在轉儲中使用mwdumper或xml2sql,但它們不直接服務於我的目的(除非有人可以解釋他們的方式)。解析維基百科XML轉儲文章內容並填充MySQL數據庫的快速方法是什麼?

另一方面,使用WikiExtractor,用於Python的MySQLdb和本地MySQL服務器,允許我按照自己的意思進行操作,但它的速度很慢,需要花費一個月的時間來分析整個轉儲。對修改後的WikiExtractor程序進行性能分析表明,大部分運行時間都用於嵌套正則表達式搜索和數據庫插入。

理想情況下,我不想處理文章需要花費幾天時間。我怎樣纔能有效地做到這一點?

+0

'maintenance/importDump.php'是我的特定需求的最快選項。它也可以通過GNU Parallel很好地工作。但不幸的是,如果你想運行合理的SQL查詢,它會給你MediaWiki SQL ... – guaka

回答

2

Perl包MediaWiki::DumpFile非常適合解析。要加載轉儲並讀取每個頁面,您只需要幾行代碼。

要做一個簡單的字頻計算,您可以使用sample code in Perl FAQ或包Text::Ngrams來實現更智能的功能。

將結果添加到數據庫取決於您,因爲您正在開發應用程序,並且您應該知道需求。

0

實際上有一個獨立的應用程序,正是你所需要的!

它被稱爲Wiki Parser,它將維基百科轉儲解析爲純文本和XML,並保留文章內容+文章結構。

由於它是基於C++和非正則表達式的,因此解析55GB的當前英文維基百科只需要2-3個小時。

+0

兩年後,現在這個鏈接已經斷開。 – meva