Поиск в базе данных имен субъектов (колледжи, города, личности, страны ...) - PullRequest
2 голосов
/ 08 октября 2009

Для исследовательского проекта по корпоративным приложениям, над которым я и еще один человек работаем, мы стремимся удалить определенное содержимое со страницы, чтобы опубликованные сообщения были универсальными (то есть не оскорбительными и по сути анонимными). Прямо сейчас мы хотим принять сообщение, которое пользователь разместил на доске объявлений, и удалить любые типы названий, названий колледжей или учреждений и ненормативную лексику (и, если это возможно, мы хотели бы удалить названия компаний).

Существует ли какая-либо база данных, к которой мы можем подключиться, с которой мы можем запустить очистку наших сообщений, чтобы проверить значения в базе данных, чтобы распознать их?

1 Ответ

7 голосов
/ 08 октября 2009

Этот вопрос, по-видимому, подразумевает онлайновую базу данных, которая будет запрашиваться при обработке сообщений. Операционные проблемы (надежность таких сервисов, задержка во времени ответа и т. Д.), А также проблема полноты (необходимо запросить несколько баз данных, потому что ни одна из них не будет покрывать 100% лексических потребностей проекта) делают этот подход онлайн / в реальном времени нецелесообразным. Однако существует множество баз данных, доступных для скачивания , которые позволят вам создать собственную локальную базу данных "горячих слов".

Хорошее место для начала может быть WordNet , если вы, вероятно, будете использовать все слова " instance " как слова, которые обычно должны быть удаленным из сообщений, поскольку вы анонимизируете / очищаете их. (Возможно, вы также захотите сохранить слова " non instance " в отдельной таблице / списке слов "с большей вероятностью все будет в порядке"). Один только этот список, вероятно, вполне может поддерживать версию вашего приложения "0.9".

В конечном итоге вы захотите расширить эту лексическую базу данных"плохих слов", однако, например, включить в нее все аббревиатуры университетов (CMU, UCSD, DU, MIT, UNC и т. Д.), Имена спортивных команд (Селтикс, Брюинз, Брюинз, Ред Сокс ...) и, в зависимости от предметной области ваших сообщений, дополнительные имена общественных деятелей (у Wordnet есть несколько таких, как Джордж Буш или Роберт Де Ниро, но в нем не хватает менее известных людей или людей, которые пришли известности совсем недавно: например, Барак Обама)

Чтобы дополнить Wordnet, на ум приходят два разных типа источников:

  • традиционные онлайн базы данных
  • онтологии и фольксономии

Примерами первых можно назвать «Города / Штат по почтовому индексу» в USPS. Примерами последних являются различные «списки», составленные учеными, организациями или различными лицами. Невозможно предоставить исчерпывающий список ни одного из этих типов источников, но следующее должно помочь:

  • DAML.ORG Каталог онтологий
  • Регионы и штаты США пример онтологического формата DAML
  • Проект Open Directory Каталог с открытым исходным кодом (внимание, быстро запутывается)
  • SourceWatch.org пример "списка списков: люди в журналистике / политике"
  • Ключевые слова Seach Engine: " Список списков ", или также используйте три или четыре слова, которые вы ожидаете найти в списке, который вы ищете.

В более простых случаях можно просто загрузить списки и тому подобное, а также «вырезать и вставить». Онтологии будут «обременены» дополнительными атрибутами, которые вам нужно будет проанализировать (в будущем вы, возможно, захотите эти атрибуты и использовать онтологии более традиционным способом, а пока захват лексических сущностей - это все, что нужно ).

Эта задача компиляции лексической базы данных может показаться сложной. Но правило 80-20 гласит, что 20% «горячих слов» будет составлять 80% ссылок в сообщениях, и, следовательно, при относительно небольших усилиях вы сможете создать система, которая покрывает 90% + ваших случаев использования.

Взгляд в будущее: За пределами базы данных «горячих слов»
Есть много способов решения этой задачи, используя различные методы и концепции из Обработка естественного языка (НЛП). По мере того как ваш проект приобретает все большую изощренность, вы можете захотеть узнать о некоторых из этих концепций и, возможно, реализовать их. Например, на ум приходит простой POS-тегер, поскольку он может помочь [отчасти] различить, например, использование маркера «SCREW» в различных ситуациях, когда ваше приложение отбрасывает оскорбительные слова. («Совет директоров хочет винт студентов» против «Доска должна быть закреплена минимум 4 шурупами на ярд».

Прежде чем даже понадобиться эти формальные методы НЛП, вы можете использовать несколько правил на основе шаблонов для обработки общих случаев, связанных с доменом (ами), относительно типа сообщений, на которые нацелен проект. Например, вы можете рассмотреть следующее:
- (слово) государственный университет
- Сенатор (Word_Starting_with_Capital letter)
- Слова, которые смешивают буквы и цифры (они часто используются, чтобы неправильно писать имена и обходить фильтры, которые ваши проекты хотят реализовать)

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

...