有没有人解析维基词典?

时间:2010-07-29 15:36:06

标签: python web-services dictionary wiktionary

Wiktionary是一个涵盖多种语言的维基词典。它甚至有翻译。我有兴趣解析它并使用数据,有没有人做过这样的事情呢?我可以使用任何图书馆吗? (最好是Python。)

11 个答案:

答案 0 :(得分:23)

我曾经一次下载了一个维基转储,试图收集斯拉夫语言的单词和定义。我使用elementtree接近它通过转储的xml文件。我会避免试图刮擦或抓取网站,只需下载维基媒体为wiktionary提供的xml转储。转到wikimedia downloads,查找英语wiktionary转储(enwiktionary)并转到最近的转储。您可能需要pages-articles.xml.bz2文件,它只是文章内容,没有历史记录或评论。使用python中您喜欢的任何xml处理库解析它。我个人更喜欢elementtree。祝你好运。

答案 1 :(得分:20)

Wiktionary在MediaWiki上运行,has an API

API文档的一个子页面是Client code, which lists some Python libraries

答案 2 :(得分:15)

wordnik在解析定义等方面做得很好 他们有一个great api

像其他人提到的那样,wiktionary是一种格式化的灾难,并不是为计算机可读而构建的

答案 3 :(得分:10)

是的,许多人解析了维基词典。您通常可以在Wiktionary-l mailing list archives找到过去的经历。

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

许多其他研究项目解析了维基词典:您可以在维基媒体研究通讯的最新Wiktionary specialother issues中找到一些示例。

Recently有人也制作了一个English Wiktionary REST API,其中包含一个未指定的维基数据子集;事情的未来计划尚不清楚。

答案 4 :(得分:9)

我在解析德语wiktionary时遇到了麻烦。我最后把它写得太难了,但是在我放弃之前,我在https://github.com/benreynwar/wiktionary-parser放了我的(根本不是整理好的)代码。尽管编辑使用了一些约定,但除了同行监督之外,它们并没有强制执行。使用的模板的多样性以及页面中的所有拼写错误使得解析非常具有挑战性。

我认为问题在于他们使用了与wiktionary相同的系统,这对于编辑人员的易用性来说非常好,但是不适合更加结构化的wikitionary内容。这是一种耻辱,因为如果可以很容易地解析wiktionary它将是一个非常有用的资源。

答案 5 :(得分:4)

我刚刚从德国转储中制作了一个单词列表:

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

答案 6 :(得分:4)

欢迎您使用MySQL解析的维基词典数据库。 由Java编写的解析器创建了两个数据库(英语维基词典和俄语维基词典):http://wikokit.googlecode.com

如果你喜欢PHP,那么欢迎你使用piwidict - PHP API来玩这个机器可读的维基词典2

答案 7 :(得分:3)

您可能对dbnary项目感兴趣,而不是python但感兴趣。 声明支持解析21种语言并支持wikdict

答案 8 :(得分:1)

还有JWKTL在从wiktionary解析和提取结构化数据方面做得很好。它是用Java编写的,支持英语,德语和俄语版本。

答案 9 :(得分:0)

这取决于你需要解析它的彻底程度。如果你只需要用一种语言(定义,词源,发音,共轭等)获得一个单词的所有内容,那么它就很容易了。我以前做过这个,虽然in Java using jsoup

但是,如果您需要将其解析为内容的不同组件(例如,只是获取单词的定义),那么它将更具挑战性。某个语言中某个词的维基词条没有预先定义的模板,因此标题可以是<h3><h6>之间的任何内容,这些部分的顺序可能是混乱的,它们可能是重复的,等等

答案 10 :(得分:-1)

我用Java编写了一个原始parser for the German Wiktionary dump,它只提取名词及其文章,加上他们的阿拉伯语翻译,没有任何依赖。执行需要很长时间,所以要警告。如果有兴趣/需要解析更多或其他数据,请告诉我,我可能会在时间允许的情况下对其进行调查。