30.12.2006, 22:27 | #31 | |
Командор
Регистрация: 07.04.2006
Сообщения: 759
Поблагодарил(а): 117
Поблагодарили 1,100 раз(а) в 320 сообщениях
|
Цитата:
Хочется ему хоть каждый ответ себе зачесть - да на здоровье. Кому это мешает? А тот, кто хочет реально себя оценивать, - и так злоупотреблять не будет. |
|
16.01.2007, 10:53 | #32 |
Senior Member
|
И волки сыты...
Пришла мне в голову одна весьма интересная мысль.
Размышления были следующими: сделаешь зачёт ответов пожёстче - сразу будут жаловаться на незачёт падежных форм; сделаешь зачёт помягче - будут сетовать на то, что программа всякую ерунду принимает. И вот какое придумалось улучшение: необходимо уделять больше внимания совпадениям в начале слов, нежели в конце. Связано это с естественным строением русского языка: если два слова отличаются лишь ближе к концу, то, скорее всего, это две формы одного и того же слова. Только, разумеется, старый зачёт надо тоже сохранить в силе, т.е. при опечатке в первых буквах слова всё равно ответ должен засчитываться. Просто при приближении к концу слов образца (авторского ответа) зачёт становится либеральнее. Поскольку количество слов в авторском ответе и ответе игрока в общем случае различается, то сравнивать по-прежнему нужно строки, а не слова. Однако изменения коснутся вот чего. Раньше за каждый совпадающий символ общей подпоследовательности начислялось 1 очко. Число набранных очков и составляло длину этой подпоследовательности. Затем это число делилось на длину образца, и делался вывод о том, можно ли принимать. Теперь за каждую совпавшую букву будет даваться разное число очков в зависимости от её позиции в авторском ответе. Возможны два подхода (на примере "Медного всадника"): 1. Код:
Строка: М е д н ы й в с а д н и к Очки за совпадение: 6 5 4 3 2 1 7 6 5 4 3 2 1 Код:
Строка: М е д н ы й в с а д н и к Очки за совпадение: 1 5/6 4/6 3/6 2/6 1/6 1 6/7 5/7 4/7 3/7 2/7 1/7 Какой из подходов лучше - насчёт этого надо подумать. Мне более симпатичен первый, ведь в нём уменьшается роль маленьких слов. например, во втором подходе за совпадения первых букв в словах "и" и "медный" даёт одинаковое число очков - 1, хотя первое слово вроде поценнее будет. Впрочем, надо ещё подумать: ведь первый подход при этом будет требовать и более точного совпадения с длинными словами.
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво." |
30.01.2007, 10:17 | #33 |
Senior Member
|
Не только о числах
Продолжаем, если это кому-нибудь интересно Может, подскажете чего-нибудь ещё
Выяснилось, что с числами такой метод зачёта не работает. Ведь, скажем, 1839 год сильно похож на 1899, и программа засчитает такой ответ, хоть и не должна. Если назначить цифрам слишком большие веса, то также получится не очень хорошо - "15 сентября" будет засчитываться при ответе "15 декабря". Тут нужно придумать что-то другое. Например, возможен такой подход: цифры проверяются отдельно старым способом (на точное совпадение), а вся остальная фраза - на частичное совпадение. При этом ответ засчитывается, если при обоих сравнениях получен утвердительный ответ. Также нехорошо оказалось то, что правильный ответ может быть найден и в беспорядочном наборе букв. Например, правильный ответ "Крутой", а даётся ответ "Вокруг света". Ясно что буква "т" в ответе никакого отношения к правильному ответу не имеет, и её учитывать не стоит. Поэтому должен существовать некий механизм отбрасывания лишних совпадений. Можно опираться на три подхода:
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво." Последний раз редактировалось Ur-Quan, 01.02.2007 в 19:52 |
30.01.2007, 14:24 | #34 | |
Любитель
Регистрация: 06.04.2006
Адрес: Брянск
Сообщения: 1,541
Поблагодарил(а): 2,947
Поблагодарили 517 раз(а) в 277 сообщениях
|
Цитата:
Алексей Николаевич Толстой, А.Н. Толстой, А. Н. Толстой, Ал-й Николаевич Толстой, Алексей Ник. Толстой, Алексей Н. Толстой, Ал-й Ник. Толстой, Толстой Алексей Николаевич, Толстой А.Н., Толстой А. Н., Толстой Ал-й Николаевич, Толстой Алексей Ник. и т.д. И все – правильные?
__________________
Всё, что не делается - не делается к лучшему. |
|
30.01.2007, 19:41 | #35 | |
Senior Member
|
Цитата:
Но вообще, существует же общеприянтая форма "А.Н. Толстой"; в крайнем случае, можно предусмотреть засчитывание только её
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво." |
|
01.02.2007, 19:50 | #36 |
Senior Member
|
На тему Алексеев Николаевичей :)
Ранее в игре использовались метасимволы, чтобы записать большое число вариантов ответа. Например, "Орлов*" означало и "Орлов", и "Орлова", и "Орловский". Но в связи с использованием новых критериев зачёта эти метасимволы больше не нужны.
Будет только одна конструкция, указывающая, что некоторые слова в ответе идут в произвольном порядке. Это фигурные скобки. В случае с А.Н. Толстым правильный ответ лучше всего записать в форме "{А.Н.} {Толстой}". Такая запись как раз и означает, что "А.Н." и "Толстой" могут идти в ответе игрока в любой последовательности, но желательно присутствие обеих компонент. Разберём теперь важный пример. Пусть в ответе нужно указать 3 части света, и авторский ответ таков: "{Азия}, {Африка} и {Европа}". Игрок же отвечает "Европа, Азия, Африка". Как проверить правильность ответа? Можно попробовать перебрать в авторском ответе все возможные комбинации частей света (получится шесть вариантов) и сравнить ответ игрока с каждой из них. При этом совпадение хотя бы с одним из вариантов ведёт к зачёту ответа. Но это достаточно утомительный подход. Думаю, что можно поступить гораздо более эффективным образом. Можно сначала попытаться отыскать отдельные элементы (части света) в ответе игрока и определить, который из них встречается раньше остальных, какой - чуть позже, а какой - самым последним. Это и обеспечит выбор единственного варианта авторского ответа, который и будет использоваться при проверке правильности ответа игрока.
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво." |
01.02.2007, 20:01 | #37 |
Senior Member
|
Боюсь ломиться в открытые ворота. Может, стоит использовать модификации расстояния Левенштейна?
|
02.02.2007, 17:45 | #38 |
Senior Member
|
Григорий, почитав про это, понял, что почти это и использую
Просто всё сведено не к трудоёмкому поиску числа операций для замены и удаления, а к поиску наибольшей общей подпоследовательности.
__________________
"О друг мой, Аркадий Николаич! Об одном прошу тебя: не говори красиво." |