subject: Опять про auto_animate
14.04.2021 12:50
RSS-bot (tavern,2)
Oreolek: Это обсуждали в чате, но стоит вынести на форум потому что в чате просто перешли на другую тему и забыли. Проблема: по умолчанию INSTEAD соединяет грамматическую одушевлённость слова и парсерную, к тому же используя глюкавый словарь русского языка. Цитирую документацию: > …иногда возникают спорные ситуации, когда одно и то же слово может иметь несколько значений. Например, означать фамилию или качество объекта. > Так, слово "звезда" может означать астрономический объект или популярного актёра. Слово "красный" может означать цвет или сторонника революции во времена гражданской войны в России. И так далее. > Наиболее распространённые слова, к которым следует всегда писать уточнение: белый, красный, чёрный, звезда, стены, левый, правый. Я подорвался на этом уже дважды: в предыдущей игре был «робот», который внезапно стал живым, а сейчас у меня игру сломала бейсболка, потому что она `белая бейсболка,бейсболка/жр`: > > взять бейсболку > Бейсболке это не понравится. Предлагаю разделять синонимы и основной синоним. Если было бы, например, дополнительное поле, я бы мог сказать метапарсеру: "вот этот объект называется бейсболка, также есть такие синонимы, в перечислении вещей его надо называть белой бейсболкой". А не указывать самый длинный синоним основным, чтобы потом МП его с трудом пытался распарсить.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/758
--------------------------------------------------------------------------------
subject: Опять про auto_animate
14.04.2021 15:00
RSS-bot (tavern,2)
peter: Уже придумано. 1\. Добавить /но как уточнение 2\. Включить mp.auto_animate = false Не является ошибкой. Если вас эта ситуация не устраивает, и моя интерпретация "не радует", то можно: 1\. Не пользоваться МП3 2\. Пытаться решить проблему по своему.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13706/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
14.04.2021 15:30
RSS-bot (tavern,2)
technix: А почему auto_animate = false не может быть настройкой по умолчанию? Ведь слова "белый", "красный", "левый" в играх намного чаще используются как прилагательные, чем как существительные.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13707/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
14.04.2021 16:00
RSS-bot (tavern,2)
peter: Пример. Допустим у нас есть "белый ящик" Если auto_animate = false то наш предмет не будет одушевлённым. Его можно будет взять. Но в винительном падеже все равно останется: белого ящика. А не белый ящик. Потому что из словаря он взял "белый" как существительное. Ну просто потому, что белый одушевленный в словаре раньше, чем белый как неодушевленный. И это не баг. Если слов в выборке много, надо уточнять. От этого никуда не деться. Те же стены. Потому что есть слово стен. Итд. Чисто практически это не приносит никаких существенных проблем. Я написал достаточно много парсеров и исключений на все игры, которые надо уточнять, буквально 4-5. Так что я повторяю свою позицию, проблема высосана из пальца. Не согласны? Ну, есть другие движки.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13708/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
14.04.2021 16:10
RSS-bot (tavern,2)
peter: Единственное "решение" которое было бы условно правильным, это сделать наиболее распространенные случаи более приоритетными. Но этот путь порочен. Он ведёт к изменению словаря или вводу эвристики. А ведь есть совсем интересные комбинации слов. Мп не ии, он просто ищет подходящие слова в базе. Ну хорошо, правый, левый, белый, красный можно сделать патчем на словарь. Такие патчи есть в мп, например для слова "дерева". Но что это изменит? Принципально, ничего. Только спрячет механику поглубже. Зато когда автор понимает устройство словаря, никто и ничто не мешает ему использовать уточнения. Переоценка несуществующей "проблемы".
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13709/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
14.04.2021 16:50
RSS-bot (tavern,2)
vvs: Безобразие, всюду философия :wink: Если МП - это язык, то решать данную проблему должен он. Если библиотека - то решать должен пользователь.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13711/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
14.04.2021 16:50
RSS-bot (tavern,2)
peter: Кстати, я кажется вспомнил, что приоритет существительных задан в коде. Не уверен на 100%, но выглядит логично, и кажется я это делал. То-есть, если у слова нет никаких уточнений, ищутся в первую очередь существительные. Если их нет, остальное. Так что исправлением словаря скорее всего тоже ничего не изменить, если у слова есть несколько значений.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13710/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
16.04.2021 10:30
RSS-bot (tavern,2)
peter: Посмотрел код, чтобы не забыть, опишу как работает МП. # Склонения идут от существительных Представим себе, что у нас есть -"волосатый воин". Винительный падеж будет" -"волосатого воина". Но обратите внимание, что если бы у нас был -"волосатый ящик", то винительный падеж не был бы "волосатого ящика", а остался бы "волосатый ящик". Взять "волосатый ящик". Понятно почему это происходит. Ящик - это неодушевлённый предмет, а воин - одушевлённый. Вообще, дело даже не в одушевлённости, а в том, что склонения определяются _существительным_. Ещё пример "воин заката". Склоняться будет только воин. МП всегда ищет в word существительное. Так, в "волосатый воин" он найдёт существительное "воин" и, взяв всю информацию о нём, в том числе и одушевлённость! будет склонять "волосатый" правильно. Но если есть "красный рычаг", то "красный" тоже есть в словаре как существительное. И это первое существительное в фразе, МП его и берёт. При проектировании всегда нужен баланс между простотой архитектуры и "удобством" пользователя. Повторюсь, что текущая архитектура, когда автор иногда должен уточнять род/число/одушевлённость -- видится мне приемлемой. # Одушевлённость предмета и слова Второй вопрос. Часто путают одушевлённость предмета и слова. В отличие от информ, у МП есть возможность цеплять на объект полноценные синонимы, которые могут иметь разный род, число и одушевлённость. При этом МП определяет по какому синониму обращаются к объекту и соответственно даёт реакцию с учётом этого. Поэтому в БОЛЬШИНСТВЕ случаев автоматическое одушевление это удобно. Но есть настройка, которую я привёл выше, которая отключает это поведение. Но, в любом случае, на склонение слов эта настройка не влияет. То-есть, всё-равно вам придётся решать проблему уточняя слово или добавляя его в словарь игры. Задумайтесь, у вас есть волосатый воин. Вы хотите сделать его ~animate, чтобы его можно было брать. Но склонение всё-равно должно рассчитываться так, как буд-то он одушевлённый! Взять волосатого воина! Понимаете, что одушевлённость словоформы и одушевлённость объекта -- разные вещи! Но повторюсь, настройка отключающая зависимость animate от одушевлённости слова есть. Почему она не дефулт? Потому что в 90% она удобна и потому что ПОЛЕЗНО если проблема с одушевлённостью слов вылезает на тестировании игры раньше. Хотя, вы можете писать в стиле информа, не используя синонимы через |, и используя шаблоны *. Тогда будет очень похоже на информ-логику. Но тогда вы потеряете приемущества МП.
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13712/#…
--------------------------------------------------------------------------------
subject: Опять про auto_animate
20.04.2021 00:00
RSS-bot (tavern,2)
peter: Я ошибся. В части, что ищется всегда существительное. Исправление возможно и оно заключается в добавлении одной строки. Теперь, если одушевлённость не указана в уточнениях (нет од и но), то приоритет имеют /но слова. Похоже это решило проблемы. Всех заинтересованных прошу потестировать. Ну и прошу извинить за несдержанную реакцию. :) P.S. Суть изменения. Если мы не задали /но или /од, то в словаре имеют приоритет слова с /но. Таким образом в "красный стол" - красный окажется не существительным. Стол - существительным. Так что проблема решается сама собой. Если же просто слово вроде "фрукт", то получаем сразу но вариант существительного. https://github.com/instead-hub/metaparser/commit/224c90d785e4e68b6ecc…
Ссылка: http://instead-games.ru/forum/index.php?p=/discussion/comment/13713/#…
--------------------------------------------------------------------------------