2010-07-29 37 views
34

Wiktionary是一本涵蓋多種語言的wiki詞典。它甚至有翻譯。我有興趣解析它並玩數據,有沒有人做過這樣的事情?有沒有我可以使用的圖書館? (最好是Python。)是否有人解析過維基文庫?

+9

http://en.wiktionary.org/wiki/Wiktionary:Parsing – katrielalex 2010-07-29 15:39:20

回答

20

我曾經一度下載了一個wiktionary轉儲文件,試圖收集斯拉夫語言的單詞和定義。我使用elementtree通過轉儲的xml文件找到它。我會避免試圖抓取或抓取網站,並下載wikimedia提供的wiktionary的xml轉儲。轉到wikimedia downloads,查找英文wiktionary轉儲(enwiktionary)並轉到最近的轉儲。你可能會需要pages-articles.xml.bz2文件,這只是文章內容,沒有歷史或評論。用python中你喜歡的任何xml處理庫解析它。我個人更喜歡elementtree。祝你好運。

+2

你是怎麼使用elementtree的?據我所見,大部分數據都不是xml標記的,也就是說,你得到的所有東西都在之下: == English == ===詞源1 === {{rfe }} ====發音==== * {{enPR |fēt}},{{IPA | /fiːt/ | lang = en}} * {{audio | en-us-feet.ogg | Audio(US) | lang = en}} {{rhymes |iːt| lang = en}} * {{homophones | lang = en | feat}} ==== Noun ==== {{en-plural noun}} – zadrozny 2015-10-28 19:14:50

9

我在解析德語wiktionary時遇到了一些問題。我最終把它寫得太難了,但是在放棄之前我把我的(根本不整理)代碼放在https://github.com/benreynwar/wiktionary-parser。儘管編輯們使用了一些慣例,但除了同伴監督之外,並沒有強制執行這些慣例。模板的多樣性以及頁面中的所有拼寫錯誤都會使解析變得非常具有挑戰性。

我認爲問題在於他們已經使用了與wiktionary相同的系統,這對於易於編輯人員使用非常有用,但不適用於更加結構化的wiktionary內容。這是一個恥辱,因爲如果可以很容易地解析wiktionary,它將是一個非常有用的資源。

+2

Just saw當看其他slashdot wiktionary問題時。它可能是有用的。 http://en.wikipedia.org/wiki/Ubiquitous_Knowledge_Processing_Lab#Wiktionary_API – 2011-05-06 04:57:04

+1

此項目現託管在https://github.com/benreynwar/wiktionary-parser。 它仍然被忽視。 – 2013-10-18 00:15:48

14

wordnik已經做得很好解析出定義等 他們有一個great api

像其他人都提到,維基是一種格式,災難,而不是建立以計算機可讀

+3

謝謝,wordnik對我來說非常完美。我有一個[瘦Python客戶端](https://github.com/jabbalaci/jabbapylib/blob/master/jabbapylib/dictionary/wordnik.py)來獲取單詞的定義和示例。 – Jabba 2012-03-29 09:36:49

+1

你是否認識到來自維基媒體的轉儲是故意偏袒的?事實上,它也存在着惡意的侷限性,因爲這個轉儲遺漏了非常基本且經常使用的詞語,同時包含了許多我們許多人甚至不知道存在的詞語。 – InformedA 2016-07-20 11:18:33

+1

@InformedA爲「故意部分」的鏈接,請。如果您發現某個頁面出現在wiki上,但不在轉儲中,您是否[已報告該錯誤](https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=Dumps-代)? – Nemo 2017-04-28 09:32:15

4

我剛剛從像德國轉儲組成的單詞列表:

bzcat pages-articles.xml.bz2 | grep '<title>[^[:space:][:punct:]]*</title>' | sed 's:.*<title>\(.*\)</title>.*:\1:' > words 
+3

我認爲這個問題是關於解析wiki內容而不是XML的。 – 2013-10-15 12:28:44

4

歡迎您與MySQL發揮解析維基詞典數據庫。 有由Java編寫的分析器建立兩個數據庫(英文維基和俄文維基):http://wikokit.googlecode.com

如果你喜歡PHP,那麼歡迎你與piwidict玩 - PHP API這機器可讀維基2

+0

這可能是迄今爲止所有寫入的最有希望的選項。 +1 – BlackVegetable 2014-09-06 22:46:40

1

還有JWKTL,它在解析和提取wiktionary的結構化數據方面做得很好。它是用Java編寫的,並且支持英文,德文和俄文版本。

+0

我認爲它不支持法文,但德文 – Chin 2015-06-17 00:23:57

+0

謝謝,更正。 – 2015-06-17 00:57:59

0

這取決於你需要多徹底解析它。如果你只需要用一種語言(定義,詞源,發音,共軛等)來獲取一個詞的所有內容,那麼這很容易。我之前做過這件事,但是,如果你需要將它解析爲內容的不同組成部分(例如只是得到一個詞的定義),那麼它將更具挑戰性。在語言的單詞的維基條目沒有預先定義的模板,這樣一個標題可以是任何東西,從<h3><h6>,各部分的順序可能混亂,他們可重複性強等

3

您可能對dbnary項目感興趣,不是python,而是有趣。 索賠支持解析21種語言,並支持wikdict

+0

WikDict還提供了下載的翻譯數據,這些數據已經過進一步處理,使其更易於使用。見http://www.wikdict.com/page/about。 – 2017-01-22 19:08:55

9

是的,很多人解析了維基文庫。您通常可以在Wiktionary-l mailing list archives中找到過去的經驗。

其他答案未提及的項目是DBPedia的Wiktionary RDF extraction

解析了數十個其他研究項目Wiktionary:您可以在維基媒體研究通訊的最近Wiktionary specialother issues中找到一些示例。

Recently有人還做了一個English Wiktionary REST API其中包括一個未指定的維基文庫數據子集;未來的計劃還不得而知。