#разработка_игр #поиск #любой_язык #словари
Для игры типа «Эрудита» надо проверять, есть ли составленное игроком слово в словаре, и соответствует ли оно требованиям: именительный падеж, единственное число. Наверное, достаточно раздобыть текстовый файл со словами через разделитель, и в нём искать. Кстати, может, есть некий формат, более удобный для поиска? Дерево, сортировка, всё такое? Основной вопрос — как расширить набор правил? Разрешить, например, все падежи, множественное число, глаголы во всех временах.
Ответы
Ответ 1
На мой взгляд, какого-то лёгкого или средней сложности способа вы врядли найдёте. Разве что, пропишите все возможные варианты в БД или файле. С падежами - проще. Можно было бы прописать корни слов и отдельно возможные суфиксы, окончания слов и т.д. Но и тут засада. Возьмём для примера слова "хэшкод" и "конь". Как проверить правильность написанных слов, если в дательном падеже первое слово будет "хэшкодУ", а второе - "конЮ"? Вопрос риторический. С глаголами и их временами ещё печальней. Берём: "ехать" и "идти". В неопределенном времени (1-е лицо) получаем "езжу" и "хожу". Тут даже логики не просматривается. Вывод: "Велик и могуч русский язык, но под PHP не заточен". P.S. Кстати, тут неподалеку есть еще один форум (Русский язык). Возможно, что там могут кое-что дельное подсказать.Ответ 2
Я думаю стоит конвертировать словарь в отдельную SQL таблицу для каждой части речи: Например для имен существительных могут быть такие поля: ID, Приставка, Корень, Суффикс, Окончание, Падеж, Род, Все слово, Одушевлённость, Число(единственное множественнно),Склонение, Нарицательность, Это же слово по умолчанию(ед число именительный падеж) И далее просто делать SELECT к этой таблице. Другой вопрос как получить эту таблицу из текстового файла, придется писать очень нетривиальный парсер учитывающий морфологию.
Комментариев нет:
Отправить комментарий