2011-12-02 95 views
2

尋求幫助,以作出明確的決定。 幾個月來,我正在尋找一個Java API,它可以幫助我訪問Wikipedia並獲取文章的內容。我的項目是建立一個給定域的概念分類。 詳細信息:NLP使用維基百科(java編程)

  1. 我有一個域文本語料庫,我提取第一組術語(表示域)。
  2. 我在維基百科搜索這些詞的文章,以提取他們的定義。這個詞的定義幫助我找到這個詞的同義詞。維基百科的調用肯定會在Java循環中完成。
  3. 我搜索上一步中找到的超名稱的定義以找到它們的超名稱,等等。
  4. 我畫了一個圖表,將單詞連接到它們的超名稱。

我的問題是,對於第2步,我無法做出明確的決定。

  1. 我寫了Java代碼在線訪問維基百科。它成功了,但我的聯繫速度決定了執行成功還是失敗給出一組例外。有時,執行只給我2或3篇文章。
  2. 我嘗試使用JWPL處理維基百科轉儲。我失敗了,因爲我沒有足夠的內存。我現在在一組Java API之間猶豫不決。

如果您已經在這方面做了某些事情,請給我您的觀點。我做了認真的調查,我發現下面的鏈接:

  1. http://wdm.cs.waikato.ac.nz:8080/wiki/Wiki.jsp?page=Installing%20the%20Java%20API
  2. http://jwikiapi.sourceforge.net/index.html
  3. http://code.google.com/p/gwtwiki/
  4. http://www.mediawiki.org/wiki/API%3aMain_page
  5. http://jwbf.sourceforge.net/

我會很感激的任何建議。

+0

你能否給出一個關於你在步驟2中提取的「定義」的正式描述? –

+0

該定義正式是維基百科文章的第一句。例如,對於「鑽機」一詞,我需要提取以下明文:「鑽機是一種在地面上創建孔(通常稱爲鑽孔)或豎井的機器。」 – Lida

+0

正在使用DBpedia無問題嗎? http://dbpedia.org –

回答

0

我在做我的碩士論文時做了類似的事情。我沒有代碼方便,但我想我寫了一個獨立的Python庫(使用python request)來獲取維基百科頁面。我記得偶爾會遇到例外情況。我的解決方案是產生一個線程來執行提取操作,如果線程處於非活動狀態,則使用當前術語重新啓動提取進程。連接速度應該不重要,維基百科頁面不是很大。維基百科的API我沒有找到很有幫助。編寫維基百科的python或ruby腳本是很簡單的。