挖掘Wikipedia用于文本挖掘的映射关系

时间:2011-05-30 02:24:31

标签: python pattern-matching data-mining wikipedia text-mining

我计划开发一个基于Web的应用程序,它可以抓取维基百科来查找关系并将其存储在数据库中。通过关系,我的意思是搜索一个名字,比如'比尔盖茨'并找到他的页面,下载它并从页面中提取各种信息并将其存储在数据库中。信息可能包括他的出生日期,他的公司和其他一些事情。但我需要知道是否有任何方法可以从页面中找到这些唯一数据,以便我可以将它们存储在数据库中。任何特定的书籍或算法将不胜感激。还提到好的开源库会很有帮助。

谢谢

3 个答案:

答案 0 :(得分:6)

如果您还没有,那么您应该看看DBpedia。许多类别的维基文章都有“信息框”,用于描述您所描述的各种信息,并且它们已经创建了一个数据库:

http://en.wikipedia.org/wiki/DBpedia

你也可以利用Metaweb的Freebase中的一些信息(重叠,我相信甚至可以整合来自DBpedia的信息。)他们有一个用于查询图形数据库的API,还有一个Python包装器叫freebase-python

  

更新: Freebase已不复存在;他们被谷歌收购并最终被收入Google Knowledge Graph。有an API但我不认为他们有像Freepedia这样的公开来源与Freepedia的正式同步。我个人对这看起来如何看起来感到失望。 : - /

至于自然语言处理位,如果你确实在这个问题上取得了进展,你可以将这些数据库视为你所使用的任何信息的存储库。

答案 1 :(得分:2)

你提到Python和开源,所以我会调查NLTK(自然语言工具包)。文本挖掘和自然语言处理是使用哑算法(例如模式匹配)可以做很多事情的事情之一,但是如果你想更进一步做一些更复杂的事情 - 即。试图以灵活的方式提取信息或试图找到可能有趣但不为先验的信息,然后应该调查自然语言处理。

NLTK用于教学,因此它是一个工具包。这种方法非常适合Python。它也有几本书。 O'Reilly的书也在线发布,并持有开放许可。见NLTK.org

答案 2 :(得分:1)

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等主流数据库。

所以,我的建议是调查Selenium以查找网页上的信息,pyodbc来存储和检索它,以及标识符动态时的正则表达式。