我打算開發一個基於網絡的應用程序,它可以抓取維基百科找到關係並將其存儲在數據庫中。通過關係,我的意思是尋找一個名字,比如說'比爾蓋茨'並找到他的頁面,下載它並從頁面中提取各種信息並將其存儲在數據庫中。信息可能包括他的出生日期,他的公司和其他一些事情。但是我需要知道是否有任何方法可以從頁面中找到這些獨特的數據,以便我可以將它們存儲在數據庫中。任何特定的書籍或算法將不勝感激。另外提及良好的開源庫會很有幫助。挖掘維基百科映射文本挖掘關係
謝謝
我打算開發一個基於網絡的應用程序,它可以抓取維基百科找到關係並將其存儲在數據庫中。通過關係,我的意思是尋找一個名字,比如說'比爾蓋茨'並找到他的頁面,下載它並從頁面中提取各種信息並將其存儲在數據庫中。信息可能包括他的出生日期,他的公司和其他一些事情。但是我需要知道是否有任何方法可以從頁面中找到這些獨特的數據,以便我可以將它們存儲在數據庫中。任何特定的書籍或算法將不勝感激。另外提及良好的開源庫會很有幫助。挖掘維基百科映射文本挖掘關係
謝謝
如果你還沒有,你應該看看DBpedia。維基文章的許多類別有「InfoBoxes到」爲你描述的各種信息,他們做了一個數據庫出來的:
http://en.wikipedia.org/wiki/DBpedia
您也可以利用一些在Metaweb的Freebase的信息(重疊,我相信甚至可能集成來自DBpedia的信息。)他們有一個查詢他們的圖數據庫的API,並且有一個名爲freebase-python的Python包裝器。
UPDATE: Freebase is no more;他們被谷歌收購併最終被折入Google Knowledge Graph。有an API,但我不認爲他們有什麼像正式同步Freebase與像維基百科這樣的公共資源。我個人對這個看起來如何結果感到失望。 : -/
至於自然語言處理位,如果您確實在這個問題上取得進展,您可以將這些數據庫視爲您所做的任何信息的存儲庫。
你提到Python和開源的,所以我將調查NLTK(自然語言工具包)。文本挖掘和自然語言處理是你可以用啞算法(例如模式匹配)做很多事情的方法之一,但如果你想更進一步,做更復雜的事情 - 比如說。試圖提取以靈活方式存儲的信息或嘗試查找可能有趣但尚未知道的信息,則應調查自然語言處理。
NLTK用於教學,所以它是一個工具包。這種方法非常適合Python。還有幾本書。 O'Reilly的書也在網上公開發布。見NLTK.org
+1要獲得真正的多結構化信息維基百科NLP絕對是一個需要作爲模板和類別只包含一個位的維基百科包含了所有的信息 – DixonD 2011-05-30 06:47:16
Jvc,現有的python模塊可以完成上面提到的任何事情。
對於從網頁中提取信息,我喜歡使用Selenium,http://seleniumhq.org/projects/ide/。基本上,您可以使用許多標識符(id,Xpath等)在任何網頁上本地化和檢索信息。然而,就像winwaed說的,如果你只是「模式匹配」,特別是因爲一些網站使用動態代碼 - 這意味着隨着頁面的每次重新加載,標識符可能會改變,所以它可能是不靈活的。但是,可以通過向代碼添加正則表達式(即(*))來解決此問題。看看這個youtube視頻,http://www.youtube.com/watch?v=Ap_DlSrT-iE。儘管他正在使用BeautifulSoup來抓取網站,但您可以看到他是如何使用正則表達式從網頁中提取信息的。
此外,我不確定您使用的數據庫類型,但pyodbc,http://code.google.com/p/pyodbc/可以使用SQL類型,也可以使用Microsoft Access等主流數據庫。
所以,我的建議是看看硒當標識符是動態的尋找信息的網頁上,pyodbc存儲和檢索它,和正則表達式。
該項目的主要目標是找到一種方法,從整體上抽象出來的相關數據頁。所以我認爲模式匹配是不可能的。我需要使用一些AI嗎? – jvc 2011-05-30 04:21:22
查看http://streamhacker.com/和他寫的關於如何使用'nltk'這是一個用於文本處理的python庫的例子的烹飪書 – 2011-05-30 02:30:57
幾乎可以肯定你應該自己做大部分的分析電腦,而不是爬行維基百科。在着手這個項目之前,請看http://en.wikipedia.org/wiki/Wikipedia:Database_download。您可能還想使用維基百科API; http://www.mediawiki.org/wiki/API顯示瞭如何。 – mjec 2011-05-30 02:33:57
注意[數據庫轉儲可用(http://dumps.wikimedia.org/enwiki/20110526/),它們被壓縮和_might_更容易比試圖刮掉了'birth_date = {{出生日期頁面有工作和年齡| mf = yes | 1955 | 10 | 28}}模板。 – sarnold 2011-05-30 02:36:37