Компьютер смысл текста понимает или не понимает
Бэкграунд
Прогресс в машинном обучении в последние годы во многом можно описать таким сюжетом. Выбирается какая-то достаточно четко поставленная задача, с которой компьютеры пока не умеют справляться. Например, в 2014 году это было различение фотографий кошек и собак. Затем создается набор данных, на котором можно потренироваться. В примере выше это большой массив фотографий, про каждую из которых указано, какое именно животное на ней изображено. Данные из этого набора могут использоваться как для обучения алгоритма, так и для его последующей проверки.
История, о которой идет речь, в полной мере соответствует этой схеме.
Понимание юмора
Юмор — вещь сложная, — настолько сложная, что если используется в тесте Тьюринга, не каждый человек его пройдет. Можно найти строгие критерии смешному, но чтобы проверить высказывание по этим критериям, требуются часто нетривиальные выводы с использованием культурного контекста. Поэтому не все понимают юмор.
Бэкграунд
Прогресс в машинном обучении в последние годы во многом можно описать таким сюжетом. Выбирается какая-то достаточно четко поставленная задача, с которой компьютеры пока не умеют справляться. Например, в 2014 году это было различение фотографий кошек и собак. Затем создается набор данных, на котором можно потренироваться. В примере выше это большой массив фотографий, про каждую из которых указано, какое именно животное на ней изображено. Данные из этого набора могут использоваться как для обучения алгоритма, так и для его последующей проверки.
История, о которой идет речь, в полной мере соответствует этой схеме.
Понимание метафор
Метафора — это обозначение объекта именем другого объекта, выбранного по схожести свойств. Таким образом интерпретатор должен не только знать свойства обоих объектов, но еще и уметь выделить из них общие, что требует еще больших знаний, а именно знания свойств свойств.
Это круто?
Если говорить коротко — да, это круто. Но не настолько круто, как может показаться из новостей. Чтобы правильно оценивать этот результат, нужно разобраться в деталях.
Во-первых, как устроена база SQuAD и в чем состоит задача. База основана на текстах статей из английской Википедии, при этом статьи разбиты на отдельные абзацы. К каждому абзацу задано несколько вопросов. Ответы на эти вопросы обязательно содержатся в том абзаце, к которому он относится. Более того: ответом является слово или несколько подряд идущих слов из самого текста абзаца. Отвечающему нужно лишь «ткнуть» в ответ, то есть указать на его начало и конец. Придумывать ничего не нужно. Искать по всей Википедии — или хотя бы по всему тексту данной статьи — тоже не нужно. Это существенно упрощает задачу по сравнению с той, для которой требовалось бы настоящее понимание.
Во-вторых, нужно иметь в виду, как создавалась эта база и как оценивался результат человека. База создавалась усилиями участников проекта Amazon Mechanical Turk. Это своего рода биржа, где вы можете предложить всем желающим выполнить какое-нибудь не очень сложное задание за небольшое вознаграждение. В данном случае требовалось придумывать вопросы к конкретному абзацу текста и отвечать на них (в том числе на чужие вопросы), указывая начало и конец самого маленького подходящего фрагмента.
Скриншот с сайта SQuAD
Разработчики базы предприняли усилия, чтобы авторы вопросов не пытались скопировать их из того же текста и писали своими словами, но при такой постановке задачи вопросы по своей структуре и лексике все равно в той или иной мере неизбежно будут соответствовать тем фрагментам, в которых содержится ответ. И значит, для его нахождения не нужно ничего понимать, достаточно правильно соотнести вопрос с текстом. При этом язык википедийных статей — формализованный, сухой и однозначный. Обрабатывать что-то более живое было бы гораздо сложнее.
Впрочем, даже и в таких благоприятных для ИИ условиях имеющиеся сейчас алгоритмы делают совсем глупые (по человеческим меркам) ошибки. Например, оба алгоритма-победителя из предложения "By mass, oxygen is the third-most abundant element in the universe, after hydrogen and helium" («По своей массе кислород является третьим наиболее распространенным элементом во Вселенной после водорода и гелия») не смогли извлечь правильный ответ на вопрос "What is the second most abundant element?" («Какой второй наиболее распространенный элемент?»). Алгоритмы дали ответ «кислород» вместо очевидно правильного ответа «гелий».
На самом деле
Сами авторы SQuAD написали достаточно простой алгоритм, который дает верный ответ в 40 процентах случаев. Для человека этот показатель составляет 82,304 процента (почему такой большой процент ошибок — смотрите ниже). Все желающие могли предложить свою систему, чтобы авторы ее протестировали (пользуясь небольшой неопубликованной частью этой базы) и вывесили результат на своем сайте.
Чтение «между строк»
Часто текст, особенно художественный, несет в себе больше информации, чем кажется на первый взгляд — взять, к примеру, первое предложение этой статьи. Вот только для восприятия таких скрытых смыслов требуется понимание юмора, метафор и умолчаний.
Можно ли будет считать язык, обладающий всеми этими свойствами естественным? Вряд ли. Скорее он будет похож на обычный язык программирования, а именно на Prolog, и для изучения его потребуется не меньше усилий, чем для изучения любого другого языка программирования, что не есть цель создания ИИ.
Если мы говорим, что ИИ понимает текст, мы должны ожидать от него решения задач анализа текста, с которыми человек худо-бедно справляется. Например, таких как:
- По тексту определить идеологию автора (правая/левая).
- Проанализировав текст, вывести ':)', если текст велелый и ':(', если текст грусный.
- По первому предложению этой статьи определить, в каких отношениях находится автор с девушкой.
- Расшифровать смысл новой незнакомой поговорки.
- Перевести художественный текст с одного языка на другой.
- Написать сочинение на заданную тему.
- И т.д.
ИИ не просто должен быть способен решить эти задачи, он должен решать их так же быстро или быстрее, чем человек. Кроме того, для обучения ИИ должно требоваться столько же или меньше времени, чем требуется для обучения человека. В противном случае, использование ИИ будет нецелесообразным.
Почему же нельзя просто представить все знания интерпретатора-человека в виде семантической сети или множества предикат? Теоретически можно, но объем этой базы знаний будет колоссальным. Каждое слово в каждой фразе порождает определение, которое тоже является фразой из слов, каждое из которых так же порождает определение. И так, пока определения не замкнутся сами на себя. И это, не учитывая сочетаний существительное-глагол, глагол-наречие, идиом и т.д, каждое из которых может иметь свое уникальное определение. Таким образом, объем базы знаний растет экспоненциально относительно словарного запаса интерпретатора. При таких объемах, даже перевод компьютеров на элементную базу масштаба элементарных частиц (если это вообще возможно) не даст достаточных объемов памяти и производительности. В это, собственно, и упирается анализ текстов на сегодняшний день.
Определенно, человеческий мозг не использует для представления знаний ни один из известных способов. Более того, существует немало оснований полагать, что мозг работает принципиально не алгоритмически, и значит не может быть смоделирован вычислительным процессом.[2] Выдающийся английский математик Роджер Пенроуз считает даже, что в работе мозга не обходится без квантовых эффектов. В любом случае, как работает мозг, до конца никто не знает, и в этой области еще возможно множество открытий. Что же касается компьютеров в современном смысле этого слова, то можно с уверенностью утверждать, что понимать текст они не будут никогда.
Парадокс компьютерных наук заключается в том, что многие задачи, которые людям не под силу, легко выполняются компьютерными программами. При этом задачи, которые человек может выполнять безо всяких усилий, остаются сложны для компьютеров. Мы умеем разрабатывать шахматные программы, которые побеждают ведущих гроссмейстеров на Земле. Однако создать такую программу, которая сможет распознать объекты на фотографии или понять предложение даже на уровне, доступном ребенку, мы не можем.
Обучение компьютера пониманию языка остается одной из сложнейших задач искусственного интеллекта. Задача поисковой машины — найти именно то, что вам нужно. Важнейшую роль при этом играет понимание языка, в частности — синонимов.
Итак, что такое синоним? Приведем простейший пример. Слова «фото» и «фотография» означают одно и то же. Если вы ищете фразу [проявка фото в кофе], то Google должен понимать, что даже если на странице употребляется слово «фотография», а не «фото», эта страница все равно является результатом поиска. Хотя любой ребенок понимает, что слова «фотография» и «фото» — синонимы, научить этому компьютерную программу крайне трудно. Именно поэтому мы по праву гордимся системой подбора синонимов, разработанной в Google.
Наша система подбора синонимов является результатом более чем пятилетней работы команды качества поиска Google. Мы постоянно контролируем качество работы системы, но недавно мы отдельно проанализировали влияние подбора синонимов на результаты поиска. Возможно, вы обычно и не замечаете, что при поиске используются синонимы, — все это происходит в недрах поисковой машины. Однако, как показывают проделанные нами измерения, синонимы влияют на выполнение 70% поисковых запросов, осуществляемых на сотне языков, поддерживаемых Google. Мы выбрали такие запросы и проанализировали, насколько точно были подобраны синонимы. Результаты нас порадовали. На каждые 50 запросов, для которых использование синонимов существенно улучшало результаты поиска, только в одном случае наблюдался отрицательный эффект.
Пример плохого подбора синонима — поиск [проявка фото в кофе] вы видите, что в описании первого результата слово «фотографии» выделено жирным:
Заметим, что поскольку использование синонимов зависит от многих факторов, — в частности от наличия других слов в вашем запросе, — вы не обязательно увидите выделенное слово «фотографии» в поиске, содержащем слово «фото». Целесообразность выделения синонимов определяется нашими поисковыми алгоритмами.
Для обнаружения синонимов мы используем большое количество методик, и мы писали об этом в нашем блоге. Наши системы анализируют петабайты документов, доступных в сети, а также данные по истории поиска. На основании этой информации формируется тонкое понимание смысла слов в различных контекстах. В приведенном выше примере «фото» и «фотографии» — это очевидные синонимы. Но синонимы не всегда являются взаимозаменяемыми. Например, несмотря на то что «блюдо» это одно из синонимов слова «тарелка», поисковая система должна понимать что «летающая тарелка» является вполне осмысленным запросом, а сочетание «летающее блюдо» более напоминает о сцене в ресторане, чем об НЛО.
Еще один пример — это аббревиатура «ГТО». Любой автомобилист знает что это сокращение означает: «Государственный технический осмотр транспортных средств». В случае запроса [правила прохождения гто] Google выделит в результатах поиска фразу «Государственный технический осмотр». Это показывает, что в данном случае «Государственный технический осмотр» означает то же самое, что и ГТО. Есть ли еще значения у этой аббревиатуры? Многие вспомнят, что ГТО означает еще «Готов к труду и обороне» — программа физкультурной подготовки, существовавшая в нашей стране с 1931 по 1991 год. Это словосочетание будет выделено в результатах, содержащих виды упражнений и нормативы комплекса ГТО. Например, запрос [гто СССР] вернет документы рассказывающие об истории этой программы, а также информацию о нормативах и упражнениях входящих в комплекс ГТО. Помимо этого, ГТО может обозначать «гаражно-техническое объединение», для любого знатока аниме, ГТО это сериал Great Teacher Onizuka.
Ниже на скриншотах показаны результаты запросов с различным значением аббревиатуры ГТО:
Кстати, даже такие очевидные варианты слова, как «фотография» и «фотографии» (единственное и множественное число), обычным компьютером будут восприниматься как разные условия поиска. Поэтому мы также включаем такие вариации в нашу систему подбора синонимов. Слова «фотография» и «фотографии» — это однокоренные слова, формы одного и того же слова. Система, понимающая, что «фотография» и «фото» — это одно и то же, должна понимать также, что «фотография» и «фотографии» — формы одного и того же слова. Это совсем очевидно для человека, но компьютеру не так-то просто это понять. Еще один пример — слова «животное» и «живот», которые имеют одинаковый корень и сходную этимологию, но означают совсем разные вещи. Другой пример — это использование слов «право» и «права». «Право» — это не только регулятор общественных отношений или совокупность законодательных норм, но и антоним слова «лево». А в множественном числе слово «права» означают и желанный документ, разрешающий управление автомобилем. Соответственно, запросы [получить право] и [получить права] имеют совсем разный смысл. Поиск Google достаточно умен для того, чтобы отличить одно выражение от другого, т.е. он знает, что «право» и «права» — это опасные синонимы, и их использование может привести к искажению смысла. Именно такие тонкие различия между словами, только кажущимися родственными, и затрудняют понимание правильного употребления синонимов.
Вот еще несколько примеров использования синонимов, которые, по нашему мнению, будут для вас интересны:
[концерты в спб 2010] «Санкт Петербург» выделен жирным как синоним «спб»
[пользователи жж] жирным выделены «Живой Журнал», а также английское название ресурса «LiveJournal»
[клуб квн] «Клуб Веселых и Находчивых» выделен жирным как синоним сокращения «квн»
[институт маи] «маи» расшифровывается как «Московский авиационный институт»
[академия маи] ну, а в этом случае мы считаем что «маи» это «Международная академия информатизации»
Автор MIT Technology Review Карен Хао — о том, как работает искусственный интеллект OpenAI.
14 февраля некоммерческая исследовательская компания OpenAI выпустила новую языковую модель, способную генерировать убедительные отрывки текста. Настолько убедительные, что создатели решили не выкладывать полный код в открытый доступ: он мог бы стать инструментом для создания ложных новостей.
Несмотря на впечатляющие результаты, методы OpenAI не новы, и в первую очередь прорыв был обеспечен огромным количеством обучающих данных.
Тексты, созданные программой, вполне могут сойти за написанное человеком. Однако эту способность не стоит путать с подлинным пониманием языка — конечной целью учёных, занимающихся обработкой естественных языков. (В компьютерном зрении происходит то же самое — алгоритмы умеют синтезировать реалистичные изображения, совершенно не понимая зрительных образов.)
Сегодня развитие обработки естественных языков обеспечивают четыре философских подхода; начнём с того, который приняли исследователи OpenAI.
Философское обоснование: значение слова определяется его употреблением. Так, значения слов «кошка» и «собака» родственны, так как они употребляются схожим образом. Вы можете покормить и приласкать и кошку, и собаку. А вот апельсин, например, покормить и приласкать не получится.
На практике: алгоритмы на основе методов дистрибутивной семантики продвинули обработку естественных языков. Здесь исследователи полагаются на машинное обучение — отыскивают паттерны, подсчитывая, насколько часто и близко слова используются относительно друг друга.
На основе этих паттернов получающиеся в результате модели конструируют предложения или абзацы; так работают автозаполнение и другие предиктивные текстовые системы. Некоторые разработчики экспериментируют с распределением случайных последовательностей символов, а не слов, чтобы сделать модели более восприимчивыми к акронимам, пунктуации, сленгу — всему тому, чего нет в словаре. А также к языкам, где граница между словами нечёткая.
Преимущества: подобные алгоритмы очень гибкие и легко масштабируются, потому что они применимы в любом контексте и учатся на неразмеченных данных.
Недостатки: получаемые модели не понимают создаваемых предложений. По большому счёту они пишут, опираясь на словесные ассоциации.
Понимание умолчаний
Однажды, некая японская делегация прилетела в США. Руководитель делегации отправил принимающей стороне письмо с просьбой прислать автобус к отелю в 7:00 утра. На следующий день, в 7:00 утра у гостиницы стоял автобус, но без водителя. В данном случае японцы ожидали от американцев понимания умолчаний. На самом деле просьба прислать автобус может иметь или не иметь умолчаний в зависимости от ситуации, и интерпретатор должен учитывать это, анализируя обстоятельства с использованием базы знаний.
Сухой остаток
Несмотря на все сказанное выше, достигнутый прогресс очень впечатляет. Вы можете сами посмотреть вопросы в базе SQuAD и ответы различных алгоритмов, чтобы оценить сложность задачи. Однако нужно понимать: это прогресс в решении еще одной очень узкой, игрушечной задачи, спроектированной специально для того, чтобы ее можно было решить. Ничего общего с тем, чтобы действительно научить компьютеры понимать текст, да еще и лучше человека, здесь нет.
Claims that ML reading comprehension is super human as we have models that beat the human baseline on @stanfordnlp's SQuAD is madness. It's an amazing achievement but let's not overstate it. That way lies madness.
— Smerity (@Smerity) 16 января 2018 г.
Что это означает на практике? Вероятно, диалоговые агенты типа Siri станут чуть-чуть «умнее» и научатся отвечать на простые вопросы о текстах. Facebook сможет чуть лучше понимать, что вам прорекламировать на этот раз, ориентируясь на тексты ваших постов и комментариев. Google сможет сделать более умные выдержки из найденных сайтов и сэкономит вам пару кликов, еще чаще давая ответ прямо на странице поиска.
Но искать того, кто бы тебя всегда понимал, по-прежнему лучше среди людей.
Литература
Rajpurkar, Pranav. SQuAD: 100,000+ Questions for Machine Comprehension of Text /Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev, Percy Liang. — Stanford University, 2016.
Совсем недавно на Хабре появился пост, в котором автор уверенно заявляет о том, что компьютер никогда не сможет понимать текст так, как его понимает человек. В доказательство он приводит ряд непосильных для машины задач, делая упор на отсутствие эффективных алгоритмов и невозможность моделирования полноценной системы, в которой были бы учтены все возможные варианты построения текста. Однако действительно ли всё так плохо? Правда ли, что для решения подобных задач нужны невероятные вычислительные мощности? И в каком вообще состоянии находится область обработки текстов на естественных языках?
А что вообще значит «понимать»?
Первое, что меня смутило, — это сам вопрос — сможет ли компьютер когда-нибудь понимать текст так, как его понимает человек. А что, собственно, значит «понимать как человек»? Или даже не так, что вообще значит «понимать»? В книге Data Mining: Practical Machine Learning Tools and Techniques авторы задаются схожим вопросом — что значит «быть обученным». Допустим, что мы применили к «интерпретатору» некоторую технику обучения. Как проверить, обучился он или нет? Если студент ходил на все лекции по предмету, это ещё не значит, что он его выучил и понял. Чтобы проверить это, вводят экзамены, где студента просят решить некоторые задачи по теме предмета. То же самое и с компьютером — узнать обучился ли он (понял ли он текст) можно только проверив, как он решает конкретные прикладные задачи — переводит текст, выделяет факты, выдаёт конкретное значение многозначного слова и т.д. В таком ракурсе понятие смысла вообще теряет первостепенное значение — смыслом можно считать просто какое-то состояние интерпретатора, в соответствии с которым он обрабатывает текст.
Многозначные слова
Далее автор оригинальной статьи приводит пример перевода предложения «Первым Николай распечатал письмо от Сони», указывая на несколько возможных вариантов перевода слова «распечатал» с совершенно разными значениями. Человек может легко понять, о чём идёт речь, но может ли машина?
Для того, чтобы ответить на этот вопрос, рассмотрим, как сам человек принимает решение о том, в каком смысле употреблено данное слово. Думаю, все согласятся, что в первую очередь при решении такого рода задач ориентируемся на контекст. Контекст может быть представлен явно — в виде предложений, обрамляющих данное, либо неявно — в виде совокупности знаний о данном предложении (в нашем случае — знание о том, что предложение взято из романа «Война и Мир», знание о времени, когда происходит сюжет, и знание о состоянии прогресса на тот момент).
Для начала рассмотрим первый вариант — использование контекстных предложений. Предположим, что у нас есть две пары предложений: «Первым Николай распечатал письмо от Сони. При свете лучины читать его было сложно» и «Первым Николай распечатал письмо от Сони. Принтер барахлил, поэтому местами были понятны не все символы». Во втором предложении каждой пары присутствуют ключевые слова, которые позволяют нам однозначно идентифицировать смысл слова «распечатал» в предыдущем предложени — в первом случае это «лучина», во втором — «принтер». Вопрос: что мешает компьютеру проделать тот же манёвр, чтобы узнать настоящий смысл слова под вопросом? Да ничего. На самом деле системы по определению значения слова уже давно используются на практике. Так, например, индекс tf-idf широко используется в поисковых движках при вычислении релевантности. Как правило, собирается информация о совместной встречаемости слов («распечатывать» и «лучина», «распечатывать» и «принтер») и на её основе выбирается более релевантный документ или более точный вариант перевода слова.
С неявным контекстом, то есть с набором знаний о обстоятельствах, всё несколько сложней. Простым сбором статистики тут не обойдёшься — нужны именно знания. А что вообще такое знания, как их можно представить? Одним из способов представления являются онтологии. В простейшем случае онтология — это набор фактов вида , например, . Построение самих онтологий даже для конкретной предметной области — это дело, мягко говоря, немаленькое. Немаленькое, но не невыполнимое. Есть ряд инициатив, таких как Linked Data, в рамках которых люди собирают с миру по нитке и строят паутину взаимосвязанных понятий. Более того, существует ряд вполне успешных наработок по автоматическому извлечению фактов из текста. Т.е. из предложения «Первым Николай распечатал письмо от Сони» можно автоматически вывести факты , и т.д. В качестве open-source примера таких разработок может служить Stanford Parser, который довольно неплохо понимает структуру предложения на английском языке. А некоторые компании, такие как InventionMachine (ссылку вставлять не буду, ибо и так реклама) вообще строят свой бизнес на системах извлечения фактов.
Однако я отвлёкся. Итак, будем считать, что у нас уже есть более или менее полная онтология для нашей предметной области. Для простоты также предположим, что собрана она людьми, поэтому слово «распечатать» в ней представлено несколько раз — по одному разу на каждый смысл этого слова. В смысле «открыть» это слово может образовывать факты . В смысле «пустить на печать» оно может быть использовано в фактах . Наконец, предположим, что в нашей онтологии уже присутствуют знания об обстоятельствах. В таком случае задача определения правильного смысла слова сводится к отображению всех фактов предлжения на онтологию для всех возможных значений слова «распечатать» и выбору того значения, в окружении которого больше всего известных фактов (как фактов об обстоятельствах, так и фактов, извлечённых непосредственно из предложений).
Перед тем, как идти дальше, сделаю несколько выводов:
1. Статистика является мощным инструментом анализа текста.
2. Извлечение знаний (фактов) из текста является реальностью.
3. Создание базы знаний о предметной области является сложной, но выполнимой задачей.
Другие задачи
Далее автор статьи приводит, на мой взгляд довольно сумбурно, ряд конкретных задач, которые компьютеру якобы абсолютно неподвластны. Спорить не буду, некоторые задачи действительно довольно сложны. Сложны, но не неподвластны. Ниже в произвольном порядке будут приведены упомянутые задачи с возможными вариантами их решения, но сначала ещё несколько слов о самой дисциплине обработки естественных языков (natural language processing).
С точки зрения NLP, текст представляет из себя набор признаков. Этими признаками могут быть слова (корни и формы слов, падеж, регистр букв, часть речи), знаки препинания (особенно те, что ставятся в конце), смайлы, предложения целиком. На основании этих признаков могут строиться и более сложные — n-граммы (последовательности слов), оценочные группы (appraisal groups, те же последовательсности, но с указанием оценки, например, «very good»), слова из заданных словарей. И даже более сложные — аллитерация, антонимия и синонимия, омофоны и т.д. Всё это может быть использовано против вас в суде в качестве индикаторов при решении тех или иных задач обработки текста.
Итак, сами задачи.
Определение настроения текста
Вообще автор предложил не совсем понятное деление — текст весёлый и текст грустный. В голову приходят три варианта классификации:
1. Текст оптимистический/пессимистический.
2. Положительный/отрицательный (например, отзыв).
3. Юмористический/серьёзный.
Так или иначе, это задача классификации, а значит для неё могут быть использованы стандартные алгоритмы, такие как Naïve Bayes или SVM. Вопрос только в том, какие именно признаки брать из текста, чтобы добиться максимальных результатов классификации.
Классификацией текста на оптимистический и пессимистический никогда не занимался, но бьюсь об заклад, что в качестве признаков достаточно использовать корни всех слов. Результаты можно ещё улучшить, если составить словари для каждого из классов. Например, в «пессимистический» словарь могут войти такие слова как «грустно», «одиночество», «печалька» и т.д., а в «оптимистический» — «круто», «йоу», «весело».
Классификация отзывов и прочего user generated content, показывающего отношение говорящего к некоторому объекту (к новой фотокамере, к действиям правительства, к компании Microsoft) в последнее время получила настолько широкое распространение, что даже была выделена в отдельную область — извлечение мнений (opinion mining, a.k.a. sentiment analysis) ([1], [2]). Есть много подходов к извлечению мнений. Для текстов, состоящих хотя бы из 5-6 предложений хорошо себя показали оценочные группы [3] (с результатом до 90.2% правильно определённых мнений). Для более мелких текстов (например, твитов) приходиться использовать другие признаки — слова из предопределённых словарей, регистр букв, смайлы и т.д.
Задача определения юмористического текста не так популярна, но и по ней существуют определённые наработки ([4]). Как правило, для определения юмора используется антонимия, аллитерация, а также «взрослый сленг».
Стоит также заметить, что не только юмор, но и сарказм с иронией компьютер также уже умеет вполне успешно распознавать. Ну, в любом случае лучше, чем Шелдон Купер.
Идеология автора
А также его компетентность, подход к работе, отношения к семье и скрытые комплексы. Всё, что отражено в тексте, может быть найдено. Даже то, что не видит среднестатистический человек. Достаточно выделить подходящие признаки и правильно обучить классификатор. Да, возможно, результаты будут не очень точны, но, например, Википедия вообще утверждает, что и среди людей подобные вещи способны правильно определить лишь 70%, а 70% — это ниже среднего для таких классификаторов.
Метафоры, поговорки и умолчания
Все эти задачи требуют дополнительной информации. Если у вас есть готовая онтология для предметной области, найти объекты со схожими свойствами не составит труда — для этого вводится некая мера близости, расчитываемая на основании статистических данных, и ищется наиболее «релевантный» объект.
Автоматический перевод
Как я уже указал выше, проблема с определением конкретного значения многозначного слова при автоматическом переводе может быть решена с помощью статистического анализа. Поэтому единственной реальной проблемой становится генерация грамотно сформированного текста. Здесь есть две подзадачи:
1. Правильное определение связей между словами.
2. Правильное отображение найденных конструкций в новом языке.
Задача определения связей между словами по сути является всё той же задачей классификации, где классами являются все возможные отношения между словами. Такие библиотеки как Stanford Parser используют вероятностные классификаторы и теорию нечётких множеств, чтобы определить наиболее «правильный» вариант связей между словами.
А вот с отображением найденных конструкций в новый язык действительно существуют проблемы. Но проблемы эти в большей степени не компьютерного, а как раз переводческого характера. Профессиональные переводчики никогда не указывают языки, которые знают — вместо этого они указывают направления перевода. Например, переводчик может уметь переводить с итальянского на русский, но не с русского на итальянский. То есть, конечно, кое-как сделать обратный перевод они смогут, но далеко неидеально. Проблема состоит как раз в отображении конструкций одного языка в другой, в котором прямого аналога может тупо не быть. Что делать в таком случае — непонятно. Поэтому не только компьютерная, но и обычная теоретическая лингвистика продолжает развиваться, выводя всё новые и новые правила. В то же время с точки зрения компьютерной реализации нет ничего сложного в том, чтобы заложить созданные правила в программу автоматического перевода.
Большая проблема
Итак, компьютеры уже умеют выделять факты из текста, понимать настроение автора, распознавать сарказм и многое другое. Так в чём же проблема, почему до сих пор не существует универсальной «читалки», которая могла бы взять текст и решить все задачи, которые может выполнить человек? За несколько лет практики в NLP я пришёл к выводу, что системы интеллектуальной обработки текста сложно комбинировать. Создание систем из нескольких компонент не только вызывает комбинаторных рост связей между ними, но и требует учёта всех зависимостей вместе с их вероятностными показателями. Например, для извлечения мнений можно использовать машинное обучение или созданные вручную правила. Однако если совместить оба этих подхода, встаёт вопрос о том, в какой степени каждый из них должен влиять на результат: от чего это будет зависеть, какова природа этих зависимостей, как вычислить численные параметры и т.д. Область обработки естественных языков всё ещё находится в своём подростковом возрасте, поэтому пока человечество способно создавать только системы для решения локальных задач. Что получится, когда все локальные задачи будут решены, и хватит ли у человека способностей (памяти, скокрости мышления), чтобы скомбинировать всё наработанное, предсказать сложно.
Одна девушка-переводчица, задумчиво глядя в потолок, спросила меня: «А смогут когда-нибудь компьютеры понимать текст так же, как человек?» Тогда я не смог ответить на этот вопрос, но сейчас, обладая некоторыми знаниями в области семиотики текста, я уверен, что так же как человек компьютеры не смогут понимать текст никогда.
В этой статье я рассмотрю несколько примеров сложностей, которые для человека вовсе и не являются таковыми, но для компьютера практически неразрешимы.
(Под компьютером я подразумеваю не абстрактный искусственный интеллект, а именно вычислительное устройство, выполняющее некий вычислительный процесс. Это важно.)
Рассмотрим фразу: «Первым Николай распечатал письмо от Сони». Как в этом случае понимать слово «распечатал»? Если знать, что это отрывок из романа «Война и мир», значение должно быть «открыл», «снял печать», но почему? Потому что действие происходит в XIX веке, и тогда не было принтеров, а письма передавались в конвертах, которые чтобы открыть, нужно было снять печать. Однако это же слово, в этой же фразе, в современном тексте вполне могло бы иметь смысл «послать на печать». Таким образом, интерпретатор, знающий происхождение текста и обладающий некоторыми знаниями истории технологий, поймет этот текст иначе, нежели тот, кто всеми этими знаниями не обладает.
(Забавно, Google Translator в приведенной выше фразе слово «распечатал» переводит правильно, но только потому, что в сочетании со словом «письмо» слово «распечатать» всегда переводит «to open». Поэтому фразу «Он распечатал письмо, и принтер сломался» Google переводит неправильно.)
Если речь идет о художественном тексте, то чаще всего автор рассчитывает на некий определенный набор знаний читателя — культурный контекст, — однако современные постмодернистские тексты вполне могут быть рассчитаны на различное, но эквивалентно правильное, понимание носителями различных культурных контекстов. [1]
Для человека, обращаться к культурному контексту (или к базе знаний) настолько естественно, что он чаще всего этого не замечает. Однако иногда удивительно, сколь сложные логические построения требуются, чтобы доказать то, что любому человеку кажется очевидным, и компьютеру придется иметь дело именно с этими логическими построениями; от количества и сложности этих построений будет зависеть скорость понимания компьютера. Конечно можно придумать облегченный язык, для понимания которого будет требоваться не более чем знание слов, использованных в тексте. Однако такой язык будет лишен многих свойств естественного языка. Чего не должен требовать от интерпретатора такой язык?
Читайте также: