Этот вопрос, по-видимому, подразумевает онлайновую базу данных, которая будет запрашиваться при обработке сообщений. Операционные проблемы (надежность таких сервисов, задержка во времени ответа и т. Д.), А также проблема полноты (необходимо запросить несколько баз данных, потому что ни одна из них не будет покрывать 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)
- Слова, которые смешивают буквы и цифры (они часто используются, чтобы неправильно писать имена и обходить фильтры, которые ваши проекты хотят реализовать)
Другим инструментом, который может быть полезен, особенно в начале, будет система, которая собирает статистическую информацию о корпусе сообщения: частоту слов, наиболее распространенные слова, наиболее распространенные биграммы (два последовательных слова) и т. Д.