>Т.е. экспоненту и произведение вероятностей вы решили опустить?
С экспонентой получится эквивалент одного слоя нейронной сети (логистической регрессии), такая модель как известно может определять только линейно разделимые классы. Это накладывает определенные ограничения на возможности и модели в целом, в результате чего она проигрывает на ряде задач нейронным сетям.
Товарищ привёл пример работы, рассматривающей темпоральные сети
.
С каких пор сверточная сеть стала темпоральной? Я понимаю, мы бы сравнивали CRF, HMM и рекуррентные сети
Учитывя, что статья датируется 1986 годом, я бы сказал, что терминология слегка устарела, и тот же Хинтон слово «representation» сейчас использует именно в контексте RBM и AE.
От того, что сейчас он изучает представления формируемые RBM, и использует к ним это слово, никак не меняется его отношение к нему в плане обычных MLP. При желании можно найти его свежие выступления где про это сказано. AE можно замечательно построить из MLP, обучать обратным распространением ошибки и получить те же признаки. При распознавании изображений MLP можно обучить, что у него появятся детекторы краев, нейроны реагирующие на линии определенного наклона, на определенные формы, в общем, все что в других моделях считается выделением признаков. Да и векторные представления слов, на мой взгляд отличный пример формирования новых «representations». Их особенность не то, что «сеть выучила сама», а то, что происходит переход из пространства признаков где классы являются линейно не разделимыми в пространство признаков где они таковыми являются.
Вы всё пытаетесь доказать, что в нейронных сетях есть что-то такое, что делает их уникальными. Увы, нет. Практически у любой более или менее сложной модели можно найти все те же свойства, пусть даже немного в другом виде
Если бы это было так, все модели были бы «одинаково полезны», однако есть задачи на которых нейронные сети показывают лучшие результаты, чем другие модели. Хотя, в значительной степени, нейронные сети это способ мышления о моделях, и можно сформулировать эквивалентные структуры в терминах других моделей. А вообще мне не надо ничего доказывать и смысла нет. Лично для меня, чем больше народу верит в противоположное — тем лучше.
О чем мы говорим? Вот то, что используется в задачах анализа текстов
(здесь y — вектор классов в последовательности, а x — вектор представляющий исходную последовательность).
Выделенная красным кругом функция под экспонентой является линейной комбинацией признаков. Об этом идет речь и именно это подразумевается в узком смысле под CRF в контексте разметки последовательностей слов. Сам смысл CRF как правило в сопоставлении класса каждому элементу последовательности, а не в классификации последовательности в целом. Но даже не об этом речь. В общем случае можно подставить сюда нелинейную функцию и даже нейронную сеть, тогда получится то, что называется neural conditional random field (http://jmlr.org/proceedings/papers/v9/do10a/do10a.pdf). Однако, при этом неправильно будет противопоставлять CRF как математический формализм нейронным сетям т.к. это вещи не взаимоисключающие, а взаимодополняющие.
обычные деревья решений работают в терминах исходных признаков и неспособны формировать новые признаки (преобразовывать исходные признаки в другие представления).
Равно как и обычный MLP
Но вот это совсем неправда. MLP может. См. хотя бы классическую статью о методе обратного распространения ошибки «Learning representations by back-propagating errors» (http://www.iro.umontreal.ca/~vincentp/ift3395/lectures/backprop_old.pdf)
«As a result of weight adjustments, internal „hidden“ inits which are not part of the task domain or outpit come to represent important features of the task domain, and regularities in the task are captured by interaction of these units».
И я имел в виду linear-chain CRF, который обычно имеется в виду когда говорят о разметке частей речи. Потом, что иначе
при желании можно получить модель практически полностью идентичную сети
Что возвращает нас к тому факту, что дискуссия ни о чем. Графические модели и нейронные сети можно двумя разными способами представления одних и тех процессов т.е. это по сути разные способы мышления об одном и том же.
А вопрос весь начинался, если вернуться к началу вообще не про то, а про то, что обычные деревья решений работают в терминах исходных признаков и неспособны формировать новые признаки (преобразовывать исходные признаки в другие представления). Вот о чем шла речь.
CRF можно использовать для классификации длинных текстов исходя из последовательности букв. Почему? Потому что " уже давно используется для выделения частей речи, именованных сущностей и всего в таком духе". Согласитесь, тоже не конкретное утверждение.
Если вы утверждаете, что можно, ваше дело это и доказать. Для этого надо:
1. Описать метод, каким образом задача, описанная в указанной статье решается с помощью CRF
2. Продемонстрировать его работу.
пункт 2 можно заменить ссылкой на статью, где это продемонстрировано.
Утверждение что CRF можно применить в этом случае потому что «они уже используются для выделении частей речи и.т.п.» не доказывает ничего, потому что а) это совсем другие задачи б) CRF показывает сопоставимые с нейронными сетями результаты даже по тем задачам, для которых они предназначены, только при условии выделения экспертами большого числа признаков. И даже в этом случае они уступают нейросетям на ряде задач, см хотя ссылки внутри этой статьи (Mikolov et al, 2013). Это наблюдаемая реальность.
Почему одни модели работают лучше чем другие, это другой вопрос, на него ответ не всегда известен. В данном случае, я бы сказал, что CRF это по своей природе линейный классификатор, который не может моделировать нелинейные зависимости. Точнее может, если ему дать на вход такие признаки, что классы в их пространстве будут линейно разделяемыми. Последовательность букв таковыми видимо не является, и все упирается в подбор правильных признаков, или правильное преобразование признаков, чего CRF сам по себе не умеет.
Запутали вопрос окончательно, так что непонятно уже о чем идет речь. AE и RBM не единственные средства выделения признаков в нейросетях, и вообще AE это сами по себе нейросети, и RBM/DBM в общем тоже создавались как нейросети. Если сверху к нейросети подключить дерево решений или SVM или еще какую другую модель, то да она будет работать лучше, но о чем это говорит?
Если, например, на вход SVM или другой линейной модели подать пиксели с картинки, качество результата будет плохим. Если, скажем, снять потенциалы с зон зрительной коры мозга, смотрящего на ту же картинку, то результат будет намного лучше (подобные опыты проводились). Далее можно сказать, что мозг «всего лишь» выполняет преобразование признаков в другое представление, и вообще мозги применимы таким образом к любым моделям. Это безусловно верно, но чего содержательного мы доказали этим утверждением? Что SVM здесь выполняет главную работу, а мозг некую вспомогательную?
К вопросу о признаках/случайных величинах. Понятно, что ни одна система в принципе не может создать новую информацию (новые «признаки») сверх тех, которые можно измерить в физической системе. Если мы измеряем интенсивность цвета, то нейронная сеть не начнет чувствовать запах на основании данных о цветах. Это очевидно, и я не думаю, что есть смысл на эту тему спорить.
Формально, однако, мы можем сказать, что если мы подали на вход одни случайные величины, а получили на выходе другие (пусть коррелированные с первыми, но другие т.к. они имеют другое распределение), то мы получили новые признаки. Вероятность того, что две монетки упадут одновременно решкой есть случайная величина, и она ничем не хуже вероятностей выпадения решки у каждой монетки по отдельности.
Если мы взяли текст как набор букв, или я не знаю, набор пикселей, или набор координат атомов чернил, и выделили лингвистические признаки, такие как части речи, корни слов, роли слов в предложении, то в научной литературе именно это и будет называться признаками (features), а не результатом преобразования координат атомов чернил, или последовательности букв. Формально мы взяли некий преобразователь (мозг человека) и с помощью него сделали преобразование признаков, которое затем подали на вход классификатора. На практике это называют выделением признаков, и именно об этой операции идет речь, как о том, что может делать нейросеть.
В значительной степени тому причина что суть дерева решений понять легко, а нейронную сеть надо «уметь готовить». Правильнее сказать, что разных задач и условий хороши разные методы
Но это специфика области — сделать аналогичное суждение по поводу, например, обработки языка гораздо сложнее («в этом предложении есть такие-то слова с такими-то весами»? ну так себе «признак»).
Не совсем так. В обработки текстов выделяемые вручную признаки имеют как правило ключевое значение. Допустим у нас есть некий текст. В общем, текст это последовательность символов, и, наверное, мы можем считать значение каждого символа за «случайную переменную». И есть задача, например, от простых (классификация текстов на категории, вроде положительный/отрицательный отзыв, спам/не спам и.т.п.) до более сложных — прочитать текст и составить краткое резюме, или ответить на вопросы по прочитанному тексту. деревья решений по признаку наличия букв в определенной позиции ничего хорошего не делают (а как было бы все просто). Поэтому садятся лингвисты и начинают придумывать признаки — вхождения слова в разные словари лексики, часть речи, место в дереве синтаксического разбора, TD/IDF слова, является ли слово частью первого предложения абзаца и так далее очень много. И на основании всего этого обычно строятся системы понимания и обработки текста, которые работают хорошо. С другой стороны, как недавно показано, нейросети можно скормить текст в виде последовательности символов непосредственно. И дальше она может все нужные лингвистические признаки обнаружить самостоятельно, понять, что есть слова, слова складываются в предложения, предложения в абзацы и так далее. Может быть формально разбиение текста на слова и грамматический разбор предложения это действительно «преобразования», но чем это отличается принципиально «от того что на изображении есть такая-то дуга»? И самое главное на практике есть большая разница между необходимостью выделять лингвистические признаки вручную (не малый труд, не всегда очевидный в выполнении), и возможностью просто использовать текст как есть.
Надо учитывать еще тот факт, что random forests работают хорошо кроме всего прочего еще и потому, что им дают признаки, которые люди выделили на основании своего опыта наблюдения больших выборок разных данных за всю жизнь. А когда этих признаков не хватает, то прекращается и рост результатов. А нейронные сети могут при правильном подходе формировать признаки сами, и соответственно улучшать результаты при получении новых данных без участия человека.
Задача была не раскрыть некую «тайну», а показать несколько интересных практических примеров, о чем и сказано в самом первом абзаце. Насколько примеры получились действительно интересными нам сложно судить, лично мне в свое время эти сведения сэкономили бы немало времени и нервов.
За информацию спасибо. Вообще на 50 тыс. предложений можно много чего сделать, это не новость, и мы в курсе общего положения дел. Тут мы писали для тех, у кого нет 50 тыс. размеченных предложений для своей задачи, о том как быть, и на что можно рассчитывать. Ну и кстати говоря, все это довольно чувствительно к области применения — NER на новостных текстах может показывать 92%, а на, скажем постах в форумах цифры сильно упадут. Также и с другими задачами.
О новизне речи и не идет, мы просто рассказываем о полезном методе и показываем, что можно получить результаты быстро, с примером, исключительно в демонстрационных и учебных целях. Объем обучающей выборки указан в тексте статьи (100 предложений), тестовой 35 предложений. По причине столь малого объема данных точность и полноту в плане извлеченных фактов не считали. В плане аннотации последовательности, F1 для извлечения объектов получается где-то 59.7, но опять таки неопределенность в связи с маленькой выборкой велика. Задачей было убедится, что приводимый пример вообще работоспособен, и результаты имеют смысл. Что касается частицы не, мы решили объединить не_вываливается, не_совпадает и т.п. в одну сущность, поскольку других средств для учета отрицания в описанном методе не предусмотрено, и если их вводить, то придется добавлять еще усложнения.
Посмотрите, например, Exploiting FrameNet for Content-Based Book
Recommendation. Вообще, то что вы описываете, это baseline для таких задач, но довольно хороший, а использовать можно все что наработано в области классификации текстов (мы немного об этом писали здесь), и сопоставления текстов (text matching), а это довольно много всего и явно в рамках комментария не охватить. На мой взгляд интересны методы, которые пытаются учитывать порядок слов, и даже, в какой-то степени содержание истории, которая рассказывается в книге.
Есть разные способы. Обычно делается какая-то обучающая выборка, предложений, где выделены нужные термины, на основании чего создается классификатор, который умеет выделять термины сам, при этом обобщая до определенной степени понятие термина на новые случаи, которых не было обучающих примерах. (последовательность шагов мы расписывали например здесь). Есть лингвистические алгоритмы без обучающих выборок, они работают обычно хуже, но требуют меньше ручного труда вначале.
Что касается книг. Как сделано на imhonet я точно не знаю. Современные системы обычно используют всякие признаки, в том числе и коллаборативный фильтр (оценки других пользователей), информацию о жанре, авторе, информацию о вкусах пользователя и т.п. Есть алгоритмы рекомендации книг и по их тексту, но они несколько хуже работают, чем гибридные системы, за исключением правда ситуации, когда у нас много новых книг, которые мало кто читал и соответственно поставил оценки. То есть, если мы хотим рекомендовать книги новых авторов, различные рассказы, которые выложены в свободный доступ, а также произведения с малой читательской аудиторией, то рекомендатор на базе контента конечно вне конкуренции, но когда мы рекомендуем популярные книги известных авторов, факт их известности играет более существенную роль нежели содержание.
Ну и с точки зрения пользы для литературы рекомендация по контенту была бы лучше. Просто потому, что не зависела бы от «именитости» автора, и позволила бы начинающим авторам найти свою аудиторию. Но польза для литературы обычно мало кого заботит.
Когда-то я думал на тем, чтобы сделать нечто вроде поисковой системы для книг, которая бы проиндексировала все что есть в свободном доступе и позволила бы искать по содержанию. Но в виду масштабности задачи и неизвестной востребованности, пришлось отложить в долгий ящик.
Тут многогранная тема на самом деле. С одной стороны да, задача вроде как решена в рамках аспектного анализа (у нас кстати по SentiRuEval-2015 первый результат по извлечению всех аспектных терминов, относящихся к автомобилям). Но, классический аспектный анализ, он работает в несколько этапов —
1. Извлечь термины, вроде «коробка», «двигатель».
2. Оценить тональность, т.е. положительное упоминание или отрицательное
3. Разбить все термины на категории, вроде «Управляемость», «Надежность» и т.п.
4. Построить общую статистику — Т.е.: Надежность — 70%, Внешний вид — 85%, Управляемость — 65%.
Но когда мы дошли до последнего пункта, мы основную информацию потеряли. И как вы правильно заметили, это есть на Маркете, и более того, на любом сайте-отзовике есть такие индикаторы, которые выставляют сами пользователи, отчего реальная польза классического аспектного анализа тональности резко снижается, т.к. он мало что добавляет к тому, что уже известно. Мы немного уже рассуждали об этом в записи про анализ отзывов о ресторанах.
Другое дело извлечение фактов. Например, «Ломается коробка», «туго переключаются передачи», «через 50 000 км коробка подлежит замене», это не то же самое, но в классическом варианте все это станет просто одним: «недостатки: коробка передач». А к чему недостатки, почему они — кто знает? Причем проблема даже не в том, как эти знания из текста извлечь, проблема в том, как имея эти знания сделать что-то полезное для пользователя. В теме про генерацию текстов у нас была дискуссия об этом, видно, что пока решение не очевидно. Вот и получается, что вроде дело полезное, а применить невозможно.
Просто следую вашей логике. В первом комментарии вы предложили посадить всех разработчиков. А дальше хотите, чтобы они вам (видимо из тюрьмы) доказывали, что их программа таки работает правильно. Сначала всех посадим, потом будем разбираться. Кстати, то, что вы проверяли работу системы, находили и публиковали ошибки, делает вас соучастником разработки, что тоже должно быть наказуемо.
Более того, если предположить, что запрет принят, он коснется также:
— Всех систем машинного перевода. Ведь переводчик делает как раз то, что вы не любите — генерирует текст на основании другого текста. Технически эти задачи никак не отличаются, разделить их невозможно. Любой машинный переводчик можно использовать для уникализации текста — перевести русский на английский и обратно, и вот готова уникальная «чушь» на заданную тему.
— Всех «умных» помощников типа Siri и Cortana — они генерируют текст для ответа на вопросы пользователя
— Много чего еще.
При этом никак не повлияет на возможность спамеров генерировать тексты — ибо для генерации бессмысленных текстов особая технология не нужна, достаточно базовой программы, которую можно свободно скачать с интернета, вместе с исходными кодами. Чтобы запретить и это, потребуется запретить использование моделей языка, что запретит:
— Современные системы распознавания речи
— Спеллчекеры
— Современные системы распознавания отсканированного текста
и — внимание — современные поисковые системы. В результате чего мы вернемся в до-интернетовскую эпоху, и тут уже — «единственный реальный способ что-то узнать — опять спросить у студента из техподдержки, как и 20 лет назад», т.е. вы получаете то, против чего боролись.
Все это я пишу для того, чтобы попытаться еще раз объяснить вред непродуманных запретов. Запрет — крайняя мера, сродни ампутации конечности, его последствия часто приносят вреда больше, чем само явление, против которого боролись. Вместо запретов, необходимо больше усилий направить на создание условий для правильного развития интернета и вообще общества, и тогда станет не нужно никого сажать в тюрьму.
С экспонентой получится эквивалент одного слоя нейронной сети (логистической регрессии), такая модель как известно может определять только линейно разделимые классы. Это накладывает определенные ограничения на возможности и модели в целом, в результате чего она проигрывает на ряде задач нейронным сетям.
С каких пор сверточная сеть стала темпоральной? Я понимаю, мы бы сравнивали CRF, HMM и рекуррентные сети
От того, что сейчас он изучает представления формируемые RBM, и использует к ним это слово, никак не меняется его отношение к нему в плане обычных MLP. При желании можно найти его свежие выступления где про это сказано. AE можно замечательно построить из MLP, обучать обратным распространением ошибки и получить те же признаки. При распознавании изображений MLP можно обучить, что у него появятся детекторы краев, нейроны реагирующие на линии определенного наклона, на определенные формы, в общем, все что в других моделях считается выделением признаков. Да и векторные представления слов, на мой взгляд отличный пример формирования новых «representations». Их особенность не то, что «сеть выучила сама», а то, что происходит переход из пространства признаков где классы являются линейно не разделимыми в пространство признаков где они таковыми являются.
Если бы это было так, все модели были бы «одинаково полезны», однако есть задачи на которых нейронные сети показывают лучшие результаты, чем другие модели. Хотя, в значительной степени, нейронные сети это способ мышления о моделях, и можно сформулировать эквивалентные структуры в терминах других моделей. А вообще мне не надо ничего доказывать и смысла нет. Лично для меня, чем больше народу верит в противоположное — тем лучше.
О чем мы говорим? Вот то, что используется в задачах анализа текстов
(здесь y — вектор классов в последовательности, а x — вектор представляющий исходную последовательность).
Выделенная красным кругом функция под экспонентой является линейной комбинацией признаков. Об этом идет речь и именно это подразумевается в узком смысле под CRF в контексте разметки последовательностей слов. Сам смысл CRF как правило в сопоставлении класса каждому элементу последовательности, а не в классификации последовательности в целом. Но даже не об этом речь. В общем случае можно подставить сюда нелинейную функцию и даже нейронную сеть, тогда получится то, что называется neural conditional random field (http://jmlr.org/proceedings/papers/v9/do10a/do10a.pdf). Однако, при этом неправильно будет противопоставлять CRF как математический формализм нейронным сетям т.к. это вещи не взаимоисключающие, а взаимодополняющие.
Но вот это совсем неправда. MLP может. См. хотя бы классическую статью о методе обратного распространения ошибки «Learning representations by back-propagating errors» (http://www.iro.umontreal.ca/~vincentp/ift3395/lectures/backprop_old.pdf)
«As a result of weight adjustments, internal „hidden“ inits which are not part of the task domain or outpit come to represent important features of the task domain, and regularities in the task are captured by interaction of these units».
Там это очень хорошо показано и разобрано.
Что возвращает нас к тому факту, что дискуссия ни о чем. Графические модели и нейронные сети можно двумя разными способами представления одних и тех процессов т.е. это по сути разные способы мышления об одном и том же.
А вопрос весь начинался, если вернуться к началу вообще не про то, а про то, что обычные деревья решений работают в терминах исходных признаков и неспособны формировать новые признаки (преобразовывать исходные признаки в другие представления). Вот о чем шла речь.
Если вы утверждаете, что можно, ваше дело это и доказать. Для этого надо:
1. Описать метод, каким образом задача, описанная в указанной статье решается с помощью CRF
2. Продемонстрировать его работу.
пункт 2 можно заменить ссылкой на статью, где это продемонстрировано.
Утверждение что CRF можно применить в этом случае потому что «они уже используются для выделении частей речи и.т.п.» не доказывает ничего, потому что а) это совсем другие задачи б) CRF показывает сопоставимые с нейронными сетями результаты даже по тем задачам, для которых они предназначены, только при условии выделения экспертами большого числа признаков. И даже в этом случае они уступают нейросетям на ряде задач, см хотя ссылки внутри этой статьи (Mikolov et al, 2013). Это наблюдаемая реальность.
Почему одни модели работают лучше чем другие, это другой вопрос, на него ответ не всегда известен. В данном случае, я бы сказал, что CRF это по своей природе линейный классификатор, который не может моделировать нелинейные зависимости. Точнее может, если ему дать на вход такие признаки, что классы в их пространстве будут линейно разделяемыми. Последовательность букв таковыми видимо не является, и все упирается в подбор правильных признаков, или правильное преобразование признаков, чего CRF сам по себе не умеет.
Если, например, на вход SVM или другой линейной модели подать пиксели с картинки, качество результата будет плохим. Если, скажем, снять потенциалы с зон зрительной коры мозга, смотрящего на ту же картинку, то результат будет намного лучше (подобные опыты проводились). Далее можно сказать, что мозг «всего лишь» выполняет преобразование признаков в другое представление, и вообще мозги применимы таким образом к любым моделям. Это безусловно верно, но чего содержательного мы доказали этим утверждением? Что SVM здесь выполняет главную работу, а мозг некую вспомогательную?
К вопросу о признаках/случайных величинах. Понятно, что ни одна система в принципе не может создать новую информацию (новые «признаки») сверх тех, которые можно измерить в физической системе. Если мы измеряем интенсивность цвета, то нейронная сеть не начнет чувствовать запах на основании данных о цветах. Это очевидно, и я не думаю, что есть смысл на эту тему спорить.
Формально, однако, мы можем сказать, что если мы подали на вход одни случайные величины, а получили на выходе другие (пусть коррелированные с первыми, но другие т.к. они имеют другое распределение), то мы получили новые признаки. Вероятность того, что две монетки упадут одновременно решкой есть случайная величина, и она ничем не хуже вероятностей выпадения решки у каждой монетки по отдельности.
Если мы взяли текст как набор букв, или я не знаю, набор пикселей, или набор координат атомов чернил, и выделили лингвистические признаки, такие как части речи, корни слов, роли слов в предложении, то в научной литературе именно это и будет называться признаками (features), а не результатом преобразования координат атомов чернил, или последовательности букв. Формально мы взяли некий преобразователь (мозг человека) и с помощью него сделали преобразование признаков, которое затем подали на вход классификатора. На практике это называют выделением признаков, и именно об этой операции идет речь, как о том, что может делать нейросеть.
Не совсем так. В обработки текстов выделяемые вручную признаки имеют как правило ключевое значение. Допустим у нас есть некий текст. В общем, текст это последовательность символов, и, наверное, мы можем считать значение каждого символа за «случайную переменную». И есть задача, например, от простых (классификация текстов на категории, вроде положительный/отрицательный отзыв, спам/не спам и.т.п.) до более сложных — прочитать текст и составить краткое резюме, или ответить на вопросы по прочитанному тексту. деревья решений по признаку наличия букв в определенной позиции ничего хорошего не делают (а как было бы все просто). Поэтому садятся лингвисты и начинают придумывать признаки — вхождения слова в разные словари лексики, часть речи, место в дереве синтаксического разбора, TD/IDF слова, является ли слово частью первого предложения абзаца и так далее очень много. И на основании всего этого обычно строятся системы понимания и обработки текста, которые работают хорошо. С другой стороны, как недавно показано, нейросети можно скормить текст в виде последовательности символов непосредственно. И дальше она может все нужные лингвистические признаки обнаружить самостоятельно, понять, что есть слова, слова складываются в предложения, предложения в абзацы и так далее. Может быть формально разбиение текста на слова и грамматический разбор предложения это действительно «преобразования», но чем это отличается принципиально «от того что на изображении есть такая-то дуга»? И самое главное на практике есть большая разница между необходимостью выделять лингвистические признаки вручную (не малый труд, не всегда очевидный в выполнении), и возможностью просто использовать текст как есть.
Recommendation. Вообще, то что вы описываете, это baseline для таких задач, но довольно хороший, а использовать можно все что наработано в области классификации текстов (мы немного об этом писали здесь), и сопоставления текстов (text matching), а это довольно много всего и явно в рамках комментария не охватить. На мой взгляд интересны методы, которые пытаются учитывать порядок слов, и даже, в какой-то степени содержание истории, которая рассказывается в книге.
Что касается книг. Как сделано на imhonet я точно не знаю. Современные системы обычно используют всякие признаки, в том числе и коллаборативный фильтр (оценки других пользователей), информацию о жанре, авторе, информацию о вкусах пользователя и т.п. Есть алгоритмы рекомендации книг и по их тексту, но они несколько хуже работают, чем гибридные системы, за исключением правда ситуации, когда у нас много новых книг, которые мало кто читал и соответственно поставил оценки. То есть, если мы хотим рекомендовать книги новых авторов, различные рассказы, которые выложены в свободный доступ, а также произведения с малой читательской аудиторией, то рекомендатор на базе контента конечно вне конкуренции, но когда мы рекомендуем популярные книги известных авторов, факт их известности играет более существенную роль нежели содержание.
Ну и с точки зрения пользы для литературы рекомендация по контенту была бы лучше. Просто потому, что не зависела бы от «именитости» автора, и позволила бы начинающим авторам найти свою аудиторию. Но польза для литературы обычно мало кого заботит.
Когда-то я думал на тем, чтобы сделать нечто вроде поисковой системы для книг, которая бы проиндексировала все что есть в свободном доступе и позволила бы искать по содержанию. Но в виду масштабности задачи и неизвестной востребованности, пришлось отложить в долгий ящик.
1. Извлечь термины, вроде «коробка», «двигатель».
2. Оценить тональность, т.е. положительное упоминание или отрицательное
3. Разбить все термины на категории, вроде «Управляемость», «Надежность» и т.п.
4. Построить общую статистику — Т.е.: Надежность — 70%, Внешний вид — 85%, Управляемость — 65%.
Но когда мы дошли до последнего пункта, мы основную информацию потеряли. И как вы правильно заметили, это есть на Маркете, и более того, на любом сайте-отзовике есть такие индикаторы, которые выставляют сами пользователи, отчего реальная польза классического аспектного анализа тональности резко снижается, т.к. он мало что добавляет к тому, что уже известно. Мы немного уже рассуждали об этом в записи про анализ отзывов о ресторанах.
Другое дело извлечение фактов. Например, «Ломается коробка», «туго переключаются передачи», «через 50 000 км коробка подлежит замене», это не то же самое, но в классическом варианте все это станет просто одним: «недостатки: коробка передач». А к чему недостатки, почему они — кто знает? Причем проблема даже не в том, как эти знания из текста извлечь, проблема в том, как имея эти знания сделать что-то полезное для пользователя. В теме про генерацию текстов у нас была дискуссия об этом, видно, что пока решение не очевидно. Вот и получается, что вроде дело полезное, а применить невозможно.
Более того, если предположить, что запрет принят, он коснется также:
— Всех систем машинного перевода. Ведь переводчик делает как раз то, что вы не любите — генерирует текст на основании другого текста. Технически эти задачи никак не отличаются, разделить их невозможно. Любой машинный переводчик можно использовать для уникализации текста — перевести русский на английский и обратно, и вот готова уникальная «чушь» на заданную тему.
— Всех «умных» помощников типа Siri и Cortana — они генерируют текст для ответа на вопросы пользователя
— Много чего еще.
При этом никак не повлияет на возможность спамеров генерировать тексты — ибо для генерации бессмысленных текстов особая технология не нужна, достаточно базовой программы, которую можно свободно скачать с интернета, вместе с исходными кодами. Чтобы запретить и это, потребуется запретить использование моделей языка, что запретит:
— Современные системы распознавания речи
— Спеллчекеры
— Современные системы распознавания отсканированного текста
и — внимание — современные поисковые системы. В результате чего мы вернемся в до-интернетовскую эпоху, и тут уже — «единственный реальный способ что-то узнать — опять спросить у студента из техподдержки, как и 20 лет назад», т.е. вы получаете то, против чего боролись.
Все это я пишу для того, чтобы попытаться еще раз объяснить вред непродуманных запретов. Запрет — крайняя мера, сродни ампутации конечности, его последствия часто приносят вреда больше, чем само явление, против которого боролись. Вместо запретов, необходимо больше усилий направить на создание условий для правильного развития интернета и вообще общества, и тогда станет не нужно никого сажать в тюрьму.