Я работаю над проектом, который требует сканирования абзацев естественного текста на английском языке и определения того, что это за слово. Приложение работает с AJAX, PHP и MySQL.
Мое приложение не должно быть на 100% точным и просто пытается найти лучший контент, соответствующий вводу текста. Для этого я использовал SQL-версию базы данных WordNet, которая позволяет мне искать слова и их типы, используя dict
Посмотреть.
SELECT lemma, pos FROM dict WHERE lemma = 'fool' ORDER BY lemma;
Выше приведен пример того, что видит база данных, но мой PHP фактически создает параметры динамической привязки на основе текста из вызовов AJAX и в действительности будет содержать много ключевых слов.
Это вернет массив записей с каждым искомым словом и его типом.
Моя проблема, однако, заключается в том, что большинство слов может быть нескольких типов, например, в примере с дураком, оно возвращает три как существительное и четыре как глагол. Минутные различия мне не нужны, но я хотел бы знать, является ли это слово существительным или глаголом в его употреблении.
Эта проблема сохраняется в большинстве слов, что означает, что я не могу точно определить различные типы слов, потому что это может быть любым из применений.
Я задаюсь вопросом, может ли кто-нибудь указать мне правильное направление алгоритма или что я могу сделать, чтобы дать хотя бы наилучшее предположение о том, что такое тип слова.
Наиболее важными для правильного понимания являются прилагательные и существительные.
Задача, которую вы пытаетесь выполнить, называется пометкой части речи (как уже предлагалось в комментариях), и Wordnet определенно НЕ является инструментом для этого.
Также в комментариях есть ссылка на очень простой PHP-подход к POS. Есть много библиотек для POS. Ссылка в комментариях реализует парсер Brill, который очень прост и достигает хороших результатов. Для повышения производительности я бы предложил использовать инструменты Stanford NLP, для которых есть интерфейсы PHP, например: https://github.com/agentile/PHP-Stanford-NLP
Есть пара связанных с этим вопросов SO:
Других решений пока нет …