Майнинг Википедия для отображения отношений для текстового майнинга - PullRequest
2 голосов
/ 30 мая 2011

Я планирую разработать веб-приложение, которое могло бы сканировать википедию для поиска отношений и сохранять ее в базе данных. Под отношениями я имею в виду поиск имени, скажем «Билл Гейтс», поиск его страницы, загрузку, извлечение различной информации со страницы и сохранение ее в базе данных. Информация может включать его дату рождения, его компанию и некоторые другие вещи. Но мне нужно знать, есть ли способ найти эти уникальные данные со страницы, чтобы я мог сохранить их в базе данных. Любые конкретные книги или алгоритмы будут с благодарностью. Также было бы полезно упомянуть хорошие библиотеки с открытым исходным кодом.

Спасибо

Ответы [ 3 ]

6 голосов
/ 30 мая 2011

Если вы еще этого не сделали, вы должны взглянуть на DBpedia.Во многих категориях вики-статей есть «Инфобоксы» для видов информации, которую вы описываете, и они сделали из нее базу данных:

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

Вы также можете использовать некоторые изинформация в Freebase от Metaweb (которая частично совпадает, и я полагаю, может даже интегрировать информацию из DBpedia.) У них есть API для запросов к базе данных их графов, и для него есть оболочка Python, называемая freebase-python .

ОБНОВЛЕНИЕ: Свободной базы больше нет;они были приобретены Google и в конечном итоге включены в График знаний Google .Существует API , но я не думаю, что у них есть что-то подобное официальной синхронизации Freebase с общедоступными источниками, такими как Википедия.Я лично разочарован тем, как это выглядело.: - /

Что касается бита обработки естественного языка, если вы добьетесь прогресса в этой проблеме, вы можете рассматривать эти базы данных как хранилища для любой информации, которую вы делаете моей.

2 голосов
/ 30 мая 2011

Вы упоминаете Python и Open Source, поэтому я бы изучил NLTK (Natural Language Toolkit).Анализ текста и обработка естественного языка - это одна из тех вещей, которые вы можете сделать с помощью тупого алгоритма (например, сопоставление с образцом), но если вы хотите сделать шаг вперед и сделать что-то более сложное, т.е.Пытаясь извлечь информацию, которая хранится гибким образом, или пытаясь найти информацию, которая может быть интересна, но априори неизвестна, тогда следует изучить обработку естественного языка.

NLTK предназначен для обучения, поэтомуинструментарий.Такой подход очень хорошо подходит для Python.Для этого есть пара книг.Книга О'Рейли также публикуется онлайн с открытой лицензией.Смотрите NLTK.org

1 голос
/ 30 мая 2011

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 для ее хранения и извлечения, а также регулярные выражения, когда идентификаторы динамические.

...