by SKrylov » Mon Sep 22, 2008 12:22 pm
Уважаемые коллеги! Уважаемый Сергей!
Так же точно, как и с запросом "Фабрика Звёзд", мы имеем ситуацию, в которой запрос состоит только из существительных, и не содержит никакого действия (глагола). Трактовка таких (а, на самом деле, и многих других) запросов крайне затруднена.
Не сомневаюсь, что любой из нас может привести массу подобных запросов. Например, что именно хочет пользователь, указывая в качестве запроса "Наполеон битва Ватерлоо год"? В каком году была битва при Ватерлоо, в которой участвовал Наполеон? Участвовал ли Наполеон в битве при Ватерлоо в таком-то году? Была ли в таком-то году битва при Ватерлоо, и участвовал ли в ней Наполеон? Что-то ещё? Сам не знает, что ищет? Если кто-то начнёт общаться с Вами подобным языком, что Вы скажете? Кто-нибудь вообще задумывался над тем, на что отвечают наши системы? (а ведь каков вопрос - таков и ответ). Между тем, это - разные запросы, и документы, "релевантные" одному из них, вовсе не обязательно будут релевантны остальным запросам.
Так вот, позвольте мне выразить общие мысли, которые, как я думаю, разрешат проблему хотя бы частично:
1. Мы, специаисты и/или исследователи в области полнотекстного поиска, находимся на самом первоначальном этапе, при котором машина не способна не только "понимать" тексты запросов, но даже разрешить скрытые противоречия, содержащиеся в них. Доказательство:
Попробуйте задать запрос: "Найти все документы, в которых утверждается, что, во-первых, день наступает раньше ночи, а, во-вторых, что ночь предшествует дню."
Задайте этот вопрос Вашей системе, Яндексу, Гуглю, - кому хотите. Все выдадут миллионы документов. Однако, ясно, что единственным правильным ответом является: "Документов, удовлетворяющих Вашему запросу, не найдено (и не может быть найдено, поскольку условия Вашего запроса противоречивы). Поиск не проводился."
2. Развиваю мысль далее. Вопрос ко всем нам: "Какое отношение имеет текст запроса к тому, что должно быть найдено?" или, чуть в другой форме: "Следует ли системе искать в документах слова/термины, которые присутствуют в запросе?". Очевидный ответ (из общих соображений): "Нет, вовсе не обязательно - можно искать совсем другие слова, которые могут как быть в запросе, так и не быть в нём". Доказательство:
На запрос "Что завтра пойдёт по ящику?" релевантными будут документы, содержащие программу телепередач, а вовсе не слово "ящик". Чтобы ответить на этот запрос, не нужно искать слово ящик; точнее, вместо него (или наряду с ним) также нужно искать слова "программа", "телепередача", "телик", "передача" ...
3. Из предыдущих двух утверждений следует, что необходимым качеством системы, которая бы по тексту запроса выдавала релевантные ему документы, является способность этой системы проинтерпретировать (я умышленно не употребляю слово "понять", поскольку нам ясно, что машина никогда не будет ничего понимать) или же "протрактовать" текст запроса прежде, чем производить собственно поиск. Ваша система имеет такой блок, Сергей? Думаю, что нет; в крайнем случае, что-то есть в зачаточном состоянии. Моя система, например, вообще не видит (и не ищет) даже слова (!), так что ни о каком блоке "интерпретации запроса" в случае моей системы тоже речь не идёт (пока) ...
4. Однако, для того, чтобы определить, является ли конкретный документ "A" релевантным тексту конкретного запроса "B", человеку-аксессору вынужденно приходится интерпретировать (то есть создавать развёрнутое описание) каждого запроса. Аксессор при оценке запроса всё равно делает эту работу в уме, но РОМИП решил, что это описание будет составляться им письменно, и правильно поступил. Вот так аксессоры понимают текст запроса, и никак иначе. И точка. Да, могут быть ошибки (в том смысле, что не все могут быть согласны с той или иной интерпретацией того или иного запроса). Но для того, чтобы минимизировать влияние таких "ошибок" на метрики систем, запросов задаётся много. Есть методики, указывающие, сколько именно запросов следует задать для достижения тех или иных вероятностей ошибок первого и второго рода; РОМИП с этими методиками, вне сомнения, знаком, и им следует.
Этим нельзя быть недовольным, Сергей. Вам кто-то мешает продвигать Вашу систему так, чтобы она "понимала" запросы? Тогда поделитесь, пожалуйста, развёрнутым описанием запроса, полученным не от Вас лично (Вашу способность составлять развёрнутые описания Вы уже доказали), а непосредственно от Вашей системы. И давайте сравним его с тем, что сделали аксессоры. Так вот, пока от Вашей системы такого описания не будет, руководствуйтесь тем, что Вам (нам всем) даёт РОМИП, и не пытайтесь это оспаривать. Мы все должны быть рады тому, что вообще кто-то согласился потратить своё время и оценить всё то, что наши системы выдают в качестве релевантных документов, а не пытаться предлагать другое понимание запросов, чем то, которое дают аксессоры. В конце концов, никого из нас РОМИП за уши не тянет: хотите - участвуйте; хотите - нет.
Извините за резкую форму, но Вы сами всё время выражаете недовольство чем-то: то кодировками, то аксессорами. В РОМИП действительно есть, по моему мнению, недостатки; я о них уже говорил Орг. Комитету и, возможно, ещё скажу в очной встрече. Однако, эти недостатки не являются критическими, и никто из нас, участников, не позволяет себе говорить "заменить того-то и того-то", как это делаете Вы, Сергей.
Возвращаясь к основной мысли письма, хочу сказать, что тему "интерпретации запросов" я уже кратко затронул в свой работе, и приглашаю всех подумать прежде, чем я подниму её ещё раз на семинаре. Есть ли среди участников системы, которые прежде, чем начинать поиск, составляют один или серию образцов, основанных на текстах запросов? Думаю, что есть: ведь очевидно, что наряду с запросом "КПСС" нужно также искать "Ком. партия CССР", и т.п. В какой форме эти блоки на данный момент? Просто заменяют некоторые из слов запроса на синонимы? Или же берут весь текст запроса и составляют на его основе образцы, которые впоследствии ищутся в документах? (ясно, что более общим подходом является последний)
Этим письмом я, фактически начиная выступление на семинаре, хотел бы сказать следующее: по-моему мнению, именно наличие (и [совместная] разработка, если его нет) такого блока является наиболее приоритетным направлением исследований, в котором лично я был бы счастлив участвовать. Налицо - "смычка" между естественными запросами, и теми "наборами слов", на которые призваны отвечать "классические" системы. Более того, одна задача сводится к другой: а именно;
a) при ответе на естественные запросы достаточно иметь блок, который по тексту запроса сформулирует образец (образцы) поиска, то есть набор(ы) словосочетаний, которые ожидаются в искомых текстах.
б) как следует из этого письма, при ответе на "неестественные"/"классические" запросы также необходимо иметь подобный блок.
Ну а дальше - алгортифм один и тот же: искать все сгенерированные блоками образцы, и считать наиболее релевантными документы, в которых встречается хотя бы один из образцов (максимально приближенно к тексту и в той же последовательности). Если поиск точного образца - это проблема, то я со своей технологией помогу: у меня есть готовое решение.
Вот, коллеги, на мой взгляд, куда нужно прикладывать усилия при разработке поисковых систем следующего поколения. До встречи на семинаре!
С уважением,
Сергей Крылов