Pull to refresh

Comments 31

Отличная обзорная статья, спасибо, чего-то такого (ну, без нейросетей) мне не хватало в Книге дракона. Только введение слишком водянистое, чуть статью не закрыл, посмотрите его еще раз, а?
И сейчас продолжают ломать много копий на тему того, насколько важен порядок слов.
Копья ломают только те кто положил болт на изучение ретроспективы. Шрейдер и Орлов еще в начале 60-ых писали, что рассматривать слово в тексте как случайное событие, чтобы через это притащить туда теорию вероятности, некорректно. Потому что слово в тексте никогда не стоит случайно — иначе бы нарушился принцип связности и последовательности текста.
У нас есть один известный пример — магистр Йода. Он расставляет слова в предложении хаотично. Речь Йоды необычна, но мы её свободно понимаем: т. е. человеческий мозг достаточно легко восстанавливает информацию даже при потерянном порядке.
Йода расставляет слова не хаотично — у него есть паттерны. Восприятие речи Йоды во многом зависит от первого языка, которому научили человека. Нам легко воспринимать речь Йоды потому, что русский язык поддерживает все известные типы порядка слов.

И структура языка у нас такая, что вкупе с инкапсуляцией контекста делает разницу перестановки слов очень условной (разницу слов перестановки, с контекста вкупе инкапсуляцией, условной очень делает языка у нас структура).

А юмор в речи Йоды как-раз связан с тем, что в английском порядка слов всего 2 — прямой и обратный. Поэтому перестановки Йоды для англоговорящих звучат намного забавнее, чем для русскоговорящих. Ведь у них фактический смысл речи намного сильнее привязан к ее форме. Вспомните ошибки при построении предложений всех кто начинает учить английский, когда они пытаются строить фразы как привыкли на русском. У нас тут пол-планеты таких «Йод».

Все интересующиеся легко могут загуглить эту тему — corp.lingualeo.com/ru/2017/12/13/poryadok-slov-v-angliyskom
Ошеломляющего успеха, как в области анализа изображений, добиться не удалось, в первую очередь — из-за низкой интерпретируемости моделей, что для текстов гораздо важнее.
Потому что все радостно кинулись играться в Word2Vec и нейросети, сделав вид что в классической структуре онтологии по Томасу Груберу O = {X, R, F} больше нет F — функций интерпретации. Когда этот хайп по векторизации исчерпает себя — все про них внезапно вспомнят и мы услышим про новые чудесные открытия.

А вообще, все это выглядит просто позорно. Когда читаете такие простыни о том как все прекрасно в компьютерной семантике — откройте любого голосового помощника, и скормите ему что-нибудь из теста Тьюринга. Мое любимое — сначала спросить сколько будет 2+2, а потом сколько будет 2 огурца + 2 огурца, или вариации этого вопроса.

С реализацией краткосрочной памяти вообще лажа полная. Спросите бота знает ли он какой-нибудь анекдот, вроде «Знаешь анекдот — заходит как-то единорог в бар?» Потом резко смените тему — например спросите рецепт салата с креведками. А потом спросите — «о чем я хотел рассказать анекдот?»

Ни один существующий бот не сможет «вспомнить» на 2 строчки текста выше. И это мы говорим не о поделках студентов, а об огромных корпорациях вроде Google, Amazon, Microsoft, Yandex — которые покупают стартапы пачками, тратя миллиарды по щелчку пальцев. Где в исследовательских отделах работают сотни и тысячи людей, которых тщательно отбирали из орд кандидатов. И это уже не один год продолжается.

Позорище.
В том то и дело, что успех в корпусной лингвистике есть, а в чат ботах и персональных ассистентах так себе. Это харрактерно для МЛ в принципе — решая задачу в массе мы легко получаем ощутимую отдачу, но стоит присмотрется к деталям и сразу понятно насколько часто алгоритм делает ошибки, особенно если попытатся найти в нем лазейку целенаправленно. Ни один «семантический анализатор» не сравнится с человеком, но ни один человек или группа людей не проанализирует десяток миллардов документов за пару минут.
Я о том и пишу, что до тех пор пока успех в корпусной лингвистике достигается ради успеха в корпусной лингвистике — это все ни о чем. Заметьте, я ни слова не написал о какой-то сложной интерпретации — я привел примеры про арифметику и элементарную память. Что дает анализ десятков миллиардов документов, если даже эти задачи так и не решаются?
Больше классов в соцсетях, больше успешно найденных документов в поисковом движке, больше кликов на рекламные объявления… «Ничего личного, только бизнес» (с)
Больше классов в соцсетях, больше успешно найденных документов в поисковом движке, больше кликов на рекламные объявления…
Такие вещи успешно решаются и хорошо проработанными регулярками с парсингом базовой морфологии, а также дизайном-психологией-маркетингом.

Вспомните какие надежды возлагали на онтологии предметных областей 10-15 лет назад. Все строили различные онтологии от RDF/OWL до самописных моделей. И все тоже докладывали об успешных результатах и вдохновляющих перспективах. И где все это теперь?

Сейчас с корпусной лингвистикой и нейросетями происходит ровно то же самое — мы придумали новый молоток и опять искренне надеемся, что им одним получится забить все гвозди, даже железнодорожные клинья и железобетонные сваи.

Я что-то не припоминаю никого, кто доказал бы — что человеческий разум даже в том что касается языка и речи, опирается на какой-то единственный механизм.
Ну разница-то принципиальная — в количестве внедрений и полученному эффекту. Корпусная лингвистика это не только теория, а успешно применяемы на практике инструмент. И да, А/Б тестами с другими методами его челенджат регулярно все мэйджоры и не только :).

RDF, кстати ни разу не забыт — LOD вполне живой проект, хотя по количеству внедрений до корпусной лингвистики не дотягивает.

История часто развивается по спирали и, скорее всего, новые интересные формальные модели у нас впереди. Но строить их уже вряд ли будут «руками», большая часть работы уйдет машине.
UFO just landed and posted this here
Я бы не был так пессиместичен. МЛ в принципе и НЛП в частности помогает не только клики бустить, но и спасать редкие виды, находить дом для детей-сирот, интегрировать слабослышаших в социум, искать новые элементарные частицы и т.д.

Если говорить про семантику и интеллект в «классическом смысле», то наиболее продвинутой системой, активно развивающейся, является IBM Watson. Внешне похожий на олдскульные экспертные системы внутри он базируется на многих новых наработках именно из корпусной лингвистики и МЛ.
Львиную долю успеха IBM Watson обеспечивают космические объемы ручного труда по разметке данных. IBM, в отличие от многих, может себе позволить скупать компании по 5-10 тысяч китайцев для этого.

Об этом хорошо рассказал Alessandro Moschitti
из Qatar Computing Research Institute, Hamad Bin Khalifa University, Qatar
на конференции Диалог-2016
в докладе «Deep Learning and Structural Kernels for Semantic Inference: Question Answering Applications to Formal Text and Web Forums»

У него там была шикарная презентация о том как Ватсон оперирует ранжированием «case-карточек» заменяющих ему Груберовские F — функции интерпретации. И о том, что все они делаются вручную. И о том в какие проблемы влетели со всего разгона эти ребята из университета в Катаре, которые работают над арабским языком для Ватсона, потому что с корпусами у них как-раз совершенно ничерта не получилось.

Сомневающимся я цитирую из аннотации к его статье: «For example, no effective neural network model has been proposed so far for accurately performing discourse and dialog parsing or deep semantic inference, which is, for example, needed in Question Answering, Textual Entailment and Paraphrasing Identification… For this purpose, I will also capitalize on my direct experience with the techniques and models used for engineering the famous IBM Watson system.»

А русский язык это нифига не арабский — 3 падежа против 6, определенные схемы склонения глаголов, в отличие от нашего бардака. Да, письменность отличается — но от почерка наших врачей в целом не очень))
Верно подмечено — любая хорошая система требует труда людей, но многое меняется на глазах.

Во первых, «найм 5-10 тысяч китайцев» становится доступен не только гигантам типа IBM, а даже простым исследовательским лабораториям с лимитированным бюджетом. Краудсорсинг (в том числе Толока и Mechanical Turk) повлиял на МЛ не меньше чем нейросетки. Без больших размеченных людьми датасетов многих успехов бы не было.

Во вторых благодаря этому меняется парадигма — мы не пытаемся научить машину решать задачу полностью сформулировав то, КАК дожен проходить процесс решения. Вместо этого мы просто показываем машине примеры решенных задач и предлагаем самой определить как именно дойти от задачи до решения.

Ну и в третьих, конечно, количество ошибок которые допускает машина при таком подходе часто выше того, что допустил бы человек, а задачи поддающиеся ей значительно проще (если говорить про NLP, в CV это уже не так). Но при «массовом производстве» машина позволяет выйти на принципиально иной уровень продукта и сервиса, по сравнению с кропотливой ручной работой.

Ну а скептицизм по поводу нейросеток в NLP я в целом тоже разделяю. ИМХО, в этой области модель не должна быть «черным ящиком», поэтому при прочих равных всегда отдам предпочтение интерпретируемой модели. Но строить её буду автоматически, потому как в «ручном режиме» с нужными моделями не справится и сотня высококласных лингвистов за имеющееся время.
Спасибо за статью, хотел векторизацию, хотел подробнее, не ожидал что будет, приятно удивлён.

1. Вопрос, какой тип БД используется для хранения векторной модели.
2. Правильно ли я понимаю, что редакционное расстояние == Расстояние Дамерау — Левенштейна, почему не назвали как есть?
3.
человеческий мозг достаточно легко восстанавливает информацию даже при потерянном порядке
По текстам в основном используем паркет в хадупе + простой самописный in-memory сторадж (на базе github.com/odnoklassniki/one-nio) для потоковой обработки на Apache Samza. Есть неплохая библиотека от фэйсбука для поиска (https://github.com/facebookresearch/faiss).

Редакционное расстояние это концепция, а расстояние Левенштейна и расстояние Дамерау-Левенштейна это частные случаи её реализации. Под разные задачи лучше могут подойти разные варианты — злоумышленники при фишинге и пользователи при вводе поискового запроса по разному «ошибаются».

Ну а тему порядка давно закрыли биртанские исследователи: «По рзеузльаттам илссоевадний одонго анлигсйокго унвиертисета, не иеемт занчнеия, в каокм проякде рсапжоолены бкувы в солве. Галовне, чотбы преавя и пслонедяя бквуы блыи на мсете. осатьлыне бкувы мгоут селдовтаь в плоонм бсепордяке, все-рвано ткест чтаитсея без побрелм» :)
Благодарю за ответ, да, про '3' знал, просто не сразу понял о чём идёт речь, думал о порядке слов, а не о порядке букв. Ещё раз спасибо за статью.
«Не критичен слов в языке русском порядок также.»

По опыту есть только несколько случаев когда порядок существенно влияет на качество работы модели. Наиболее значимые:

1. Частица «не» в задачах анализа эмоциональной окраски — важно понимать к чему она применялась (часто простая линейная модель после добавления биграмм с не подскакивает по качеству на уровень LSTM/GRU).
2. Именованные сущности выделенные явно помогают поднять качество семантического анализа (надо понимать что Брэд Пит не два разных человека, а один конкретный)
3. В задачах типа кореференс анализа, аттрибуции эмоций и т.д., когда от очень грубой разметки «текст об автомобилях» переходим к экстракции более тонких аспектов типа «в тексте сравнивают автомобили ауди и мерседес, у первых лучше дизайн и эргономика, а у вторых двигатеьль».
А как же двойное отрицание? Или, например фразы вроде 'Казнить нельзя помиловать' (запятую не ставил специально, и здесь скорее не про порядок, но всё равно интересно как разрешаются конфликты подобного рода)

ну и в языках с латиницей (для них думаю проще), там вроде как есть правила для порядка слов, у нас же можно располагать как угодно, если конечно это не искажает смысл )

смотрели 'Star Wars' в оригинале?, у нас — это просто немного необычно, в оригинале — стоит немного голову поломать, чтобы понять о чём речь и кстати для русскоговорящего — это не составляет особого труда :)
«Казнить нельзя помиловать» это уже за пределами рассмотренных моделей. Они могут только достаточно грубо разметить текст, но не преобразовать его автоматом в действие. Т.е. понять что речь идет о жизни и смерти машина сможет, а вот «казнить» уже нет.
а где тут про анализ эмоциональной окраски? И почему на уровне предложения ее нельзя сделать?

Вот пример:
«Что за хрень я только что прочитал?»
Эмоциональную окраску затронули бегло. Повторюсь — сейчас задачу анализа эмоциональной окраске часто сводят к задаче классификации (бинарной позитивно/негативно или «многомерной» по каждой «эмоции» выраженна/не выражена) или регрессии (тоже самое, но вместо флага есть/нет предсказывают силы выражености). В академии и на кегле сейчас доминируют подходы на базе LSTM/GRU и дают неплохие результаты. На практике же при грамотном подходе к предварительной подготовке и векторизации вполне неплохо с задачей справляются и другие модели, в том числе линейные.

Касательно масштаба — изначально эмоциональную окраску анализировали для отзывов, поэтому в «классической» постановке она относится скорее к уровню документа. Позднее появились работы и для «коротких текстов» (в первую очередь для Твитера и других соцсетей), которые уже логичнее ставить на уровень предложения. Один из примеров инструментов, ориентированного именно на короткие тексты SentiStrengh.

Работа с короткими и длинными текстами отличается своими подводными камнями. В коротких текстах часто сложнее уловить сигнал, но почти никогда не возникает двусмысленности, тогда как в длинных все наоборот — сигнал сильнее, но часто в разных частях выражены разные эмоции, что ведет к двусмысленности.
Современный компьютер – это электронно-вычислительная машина, способная обрабатывать ДАННЫЕ на программно-аппаратном уровне. И хотя с каждым новым днём ЭВМ это делает быстрее и качественнее, она, тем не менее, остаётся калькулятором.

А вот Сознание человека – это уже мыслительный аппарат, оперирующий ЗНАНИЯМИ, на что машина пока совершенно не способна. Прошу не путать со всякого рода «онтологиями» и прочими лингво-математическими ухищрениями, претендующими на функции того, что понимается под Знаниями.

Почувствуйте разницу!

Чтобы заставить машину мыслить, надо научить её оперировать Знаниями также, как это легко умеют делать люди. Однако, ни один из мировых лидеров в разработке информационных технологий пока не сумел не только достичь этого, но и даже не предполагает, как это вообще можно сделать. Отсюда всем приходится прибегать к разного рода статистическим ухищрениям при обработке текстов на естественных языках и довольствоваться только извлекаемыми Данными.

Отметим, что все известные технологии «машинного обучения» являются, по сути, инструментами выявления каких-либо заданных или случайных закономерностей в процессе обработки Данных.

Сегодня мы находимся на начальном этапе развития информационного технологического уклада, именуемого «Машинная Обработка Данных» (МОД). Следующий этап – это развитие «Машинной Обработки Знаний» (МОЗ) или «знаниевых технологий».

Для МОД достаточен всего лишь один Операнд, который называется «Импликативный (условный) Оператор» — «Если А=Х, то делать Y, иначе делать Z».

Наше же сознание использует 8 Операндов, включая сюда и этот условный Операнд.

Да, мы научились хорошо программировать данный импликативный Операнд, теперь осталось научиться это делать и для остальных семи Операндов.

Следующее, что предстоит сделать разработчикам «искусственного мышления» — это создать «машинный формат Знаний», что, собственно, не должно представлять особых трудностей. Если кому-то это будет интересно, пишите в личку.

Но и это ещё не всё. Надо машину научить дешифровке естественно-язычных текстов (ЕЯТ), которыми их авторы кодируют свои Мысли. Однако, этого нельзя достичь технологией обработки Данных. Здесь нужны Знания и только Знания, с помощью которых человек извлекает Смысл из ЕЯТ. Если вы не различаете, например, корейских иероглифов, то вы не сможете прочесть книгу на корейском языке, не говоря уже о понимании прочтённого. То есть, Знания нужны для раскодировки исходной авторской Мысли. Другими словами, с помощью Знаний извлекается Смысл из ЕЯТ. В целом, эта процедура называется «пониманием Смысла», что невозможно сделать с помощью одних лишь Данных. Тут без Знаний никак не обойтись.
Наконец, для полноценного извлечения (дешифровки) Смысла ЕЯТ требуется «База Знаний», чего пока тоже ни у кого нет.

Но дело не такое уж и безнадёжное. Отечественные разработчики уже создали машинный формат Знаний и идут впереди планеты всей.

А можно ссылку на эти отечественные разработки?
Может, ещё дать и ключи от квартиры, где деньги лежат?
По существу поста вопросы, опровержения, непонятое… есть? Если есть, то обсудим.
По существу — философы над тем что есть знание бьются уже не одну тысячу лет. Последние лет 100 им стали активно помогать математики. Первый заход с формальными логиками уперся в алгоритмическую неразрешимость с одной стороны и неспособность человека выразить свой подход к работе со «знанием». Формальные подходы к анализу текста уперлись примерно в это же.

Собственно поэтому системы в которых машина «сама» учится обобщениям на базе имеющихся примеров (а процесс обучения самого человека идет именно на базе примеров, которые он обобщает) сейчас рассматриваются как наиболее перспективные. Базовые элементы знаний в них начинают возникать, по способностям их уже вполне можно поставить на уровень крысы.

В каком направлении будут развиваться подобные системы время покажет. Но, имхо, для успеха нужно максимально снизить нагрузку на «слабое звено» в этом процессе — человека.
Вы своим постом разгромили «машинное обучение» в прах! Браво!

Первое зачаточное мышление на уровне Знаний машина сможет осуществить, добавив к импликативному Операнду ещё и каузативный: «Почему А=X, когда В=Y или когда С=Z».

СМОГЁТЕ?
Хм, вроде как давно добавили еще в Баесовском выводе…

Но суть ведь не в этом — пока человек пытается сам описать как он думает в рамках формально модели успех маловероятен. Потому что он, в общем-то, не понимает как он думает. И не понятно может ли в принципе это понять — многие достижения математиков говорят что весьма вероятно нет. Собственно алгоритмическая неразрешимость появляется во многом из-за невозможности «познать самое себя» не перестав быть собой.
//Потому что он, в общем-то, не понимает как он думает. И не понятно может ли в принципе это понять — многие достижения математиков говорят что весьма вероятно нет.//
Это Ваше личное мнение или Вы транслируете общепринятую позицию?
Общепринятой позиции нет даже по таким вопросам «считать ли Землю плоской или шарообразной».

Мнение о принципиальной ограниченности возможностей познания человека ± мэйнстрим. А вот вопрос входит ли возможность познания механизма познания в эти границы дискуссионный. При этом сложность перевода подобных вопросов в позитивистское русло приводит, в сущности, к тому что занимаются ими часто в схоластическом ключе.
Полагаю, что мейнстрим рассматривает только лингвистические и математические (статистико-стохастические) технологии обработки текстов на естественных языках.
В последние годы начали развиваться и иные виды технологий обработки ТЕЯ.
Одной из них занимается известная мне группа энтузиастов, которая разработала новый надлингвистический и надматематический подход в этой проблематике. Если бы в России была солидная компания, заинтересованная в развитии данной технологии, то Россия смогла бы утереть нос многим западным разработчикам…
Напишите представителю солидной Российской компании, заинтересованной в инновационных методах обработки ТЕЯ в чем суть и как эта группа энтузиастов видит сотрудничество. Мы давно и успешно сотрудничаем с исследовательскими коллективами в этой области. Можно «в личку» на хабр
Sign up to leave a comment.