Русский
Русский
English
Статистика
Реклама

Лингвистика

Анонс прямой эфир с Татьяной Ландо, лингвистом-аналитиком Google

23.08.2020 20:09:46 | Автор: admin

Завтра, в 20:00 в наших соцсетях пройдет прямой эфир с Татьяной Ландо, лингвистом-аналитиком в Google.

Татьяна работает над Google-ассистентом и занимается проектами между продакшеном и рисерчем. Она исследует, как люди разговаривают друг с другом и какие стратегии используют, чтобы использовать это в обучении ассистента более человеческому поведению. В Google пришла работать над ассистентом для русского рынка и русского языка.

До этого 8 лет работала в Яндексе. Занималась лингвистическими технологиями, изучением фактов из неструктурированного текста. Одна из основателей конфернции AINL: Artificial Intelligence and Natural Language Conference.

Стрим можно будет посмотреть в любых наших соцсетях где удобно, там и смотрите.



О чем Татьяна расскажет:


  • Чем она сейчас занимается.
  • Как она пришла в лингвистику и как оказалась в Google.
  • Что такое компьютерная лингвистика (и почему не надо спрашиваь лингвистов, сколько языков они знают).
  • Основные проекты, которыми она занимается.
  • Зачем нужны лингвисты: почему нельзя просто засунуть кучу текста в нейроночку и она не сделает все сама?.
  • Почему лингвист в Google человек в эпицентре разработки голосового помощника.
  • Почему с русским работать сложнее чем с английским и при чем тут морфология.
  • Как в Google адаптировали англоязычного помощника для работы с русским языком.
  • Исследовательский проект, в котором Татьяна сейчас работает: как изучается общение между людьми, чтобы сделать общение с ассистентом более естественным.
  • Как научить систему держать контекст и правильно его использовать.
  • Какие данные для этого нужно собрать, как их разметить (и нужно ли) для машинного обучения.

Куда жать, чтобы не пропустить эфир?


Жмите на колокольчик на ютубе или подписывайтесь на наш инстаграм, тогда вам придет уведомление о начале эфира.

Если собираетесь смотреть в записи подписывайтесь, чтобы не потерять.



Еще раз напоминаем дату и время: понедельник, 24 августа, 20:00.

До встречи в эфире!

Подробнее..

Мечтают ли голосовые ассистенты о электропоэзии? Интервью с Татьяной Ландо лингвистом-аналитиком Google

13.09.2020 14:09:40 | Автор: admin

24 августа мы поговорили в прямом эфире с Татьяной Ландо, лингвистом-аналитиком в Google. Татьяна работает над Google-ассистентом и занимается проектами между продакшеном и рисерчем. Она исследует, как люди разговаривают друг с другом и какие стратегии используют, чтобы использовать это в обучении ассистента более человеческому поведению. В Google пришла работать над ассистентом для русского рынка и русского языка. До этого 8 лет работала в Яндексе. Занималась лингвистическими технологиями, извлечением фактов из неструктурированного текста. Татьяна одна из основателей конфернции AINL: Artificial Intelligence and Natural Language Conference.

Делимся с вами расшифровкой эфира.




Когда я говорю, что я лингвист, в лучшем случае меня спрашивают, читала ли я Стругацких, где было про структуральнейших лингвистов. В худшем случае меня спрашивают, сколько языков я знаю. Лингвисты это не те люди, которые знают много языков. Много языков могут знать люди с любой специальностью, это не связано. Лингвист это такой человек, который понимает, как устроен язык, как устроено общение между людьми. Это большая научная дисциплина, в ней очень много аспектов кроме того, чем занимаюсь я. Есть анализ текстов для установления авторства, есть лингвистика в криминалистике когда лингвисты определяют, есть ли в тексте экстремизм, например. Это как пример.

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

До того, как переехать в Лондон и начать работать в Google, я 7.5 лет работала в Яндексе, где тоже занималась компьютерной лингвистикой. Задачи, которыми я занималась в Яндексе, покрывали довольно широкий спектр задач компьютерной лингвистики. Мы занимались морфологией, синтаксисом то, как слова изменяются, то, как слова сочетаются; русский язык в этом плане сложнее английского, так как в английском нет падежей, есть только две формы существительных, все сравнительно просто (в русском 6-9 падежей, странное образование множественного числа ну, все носители языка знают эти особенности). Поэтому, когда я перешла в Google, меня взяли как специалиста по русскому языку, хотя теперь я уже занимаюсь другим.

Есть ли вакансии, связанные с разработкой русской версии Google-ассистента? Как попасть к вам на работу, связанную с Google-ассистентом?


Специальных вакансий, связанных с русской версией Google-ассистента, нет. Google старается разрабатывать методологии, направленные на максимальное количество языков сразу, и специфика языков должна решаться с помощью данных, а не с помощью специальных методологий. То есть, алгоритмы для русского, английского, немецкого, китайского всех поддерживаемых языков сделаны одинаково, хотя и с нюансами. Там очень много общих частей, и люди, которые занимаются определенным языком, в основном следят за качеством данных и добавляют специальные модули для отдельных языков. Например, для русского и других славянских языков нужна морфология (это то, о чем я только что говорила падежи, образование множественного числа, сложные глаголы). А в турецком языке еще более сложная морфология если в русском языке только 12 форм существительных, то в турецком намного больше. Поэтому нужны какие-то специальные модули, которые обрабатывают языкозависимые части. Но это делается с помощью лингвистов, которые знают свой родной язык, и языковых инженеров широкого профиля, которые пишут алгоритмы с помощью данных; мы вместе работаем над качеством этих алгоритмов и данных. Соответственно, специальных вакансий для русского языка у нас нет, но есть вакансии в разработке Google-ассистента, в основном, в Цюрихе, в Калифорнии, в Нью-Йорке, совсем немного Лондоне.

Почему Лондон, а не Европа или США?


4 года назад, когда я переезжала, Лондон все еще был Европой. Собственно, он и сейчас Европа, хотя и не ЕС. Мне очень нравится Лондон, все говорят по-английски, не нужно учить другой язык. Не то чтобы мне не хотелось учить другой язык, но вхождение в переезд было минимальным. Еще здесь отличные театры, я очень люблю ходить в театр. Конечно, сейчас этот все плюсы Лондона с культурой и развлечениями несколько нивелируются, но будем надеяться на лучшее. К тому же, с визой здесь гораздо проще, чем в Цюрихе в Швейцарии почему-то регулярно меняется визовое законодательство. Оказалось гораздо проще посадить меня и еще нескольких ребят в Лондон, и мы тут осели. Мне здесь нравится, никуда не хочу переезжать. Командировки в Калифорнию меня вгоняют в тоску там нужно брать машину, огромные расстояния. Хотя карьерных возможностей там больше.

Сложный ли русский язык?


Он сложнее, чем английский. Собственно, почти все языки сложнее, чем английский. У этой сложности есть две разных стороны. Во-первых, та самая сложная морфология. Кроме того, в русском языке свободный порядок слов, что усложняет работу при построении алгоритма. Если он фиксирован, то для условного мама мыла раму нужно одно предложение, чтобы научить систему понимать подлежащее-сказуемое-дополнение. Но если эти слова могут стоять в любом порядке, данных нужно больше. При этом для английского языка есть очень много готовых ресурсов; весь научный мир занимается английским языком, все корпорации занимаются английским языком, потому что конкурируют на американском рынке. А другими языками занимаются гораздо меньше, там меньше финансирования, меньше компаний. Если для немецкого или французского еще есть готовые куски или готовые данные, которые можно переиспользовать, то с русским языком хуже. Готовые корпуса есть, но они небольшие и не для всего подходят. То есть, данных для русского языка требуется гораздо больше, чем для английского, но их меньше доступно. Плюс дополнительные грамматические слои; ту же морфологию можно пытаться понимать отдельно, тогда можно сократить количество данных, которые нужны для качественной работы парсера на русском (по сравнению с английским).

Поэтому получается, что русский язык довольно тяжелый, как и другие славянский языки. Тюркские языки еще тяжелее; у восточных языков есть другие проблемы: например, у китайского нет пробелов между словами, надо понимать, как разбивать массив текста на кусочки, чтобы определять, что в каждом кусочке говорится. В общем, у каждого языка -свои приколы, но все в основном можно решить за счет больших объемов языковых данных, на которых решаются задачи. Все упирается в то, что для русского языка их не очень много, и поэтому с ним тяжело работать, а для английского наоборот.

Может ли компьютерная лингвистика восстанавливать непонятные места, например, в переговорах пилотов с землей?


Да, конечно. В принципе, алгоритм, который бы это делал, был бы похож на поисковые подсказки. Когда вы вводите запрос в поиск (для любого языка), система предлагает вам самые популярные запросы, с некоторой фильтрацией. Алгоритм, конечно, несколько более сложный, но замнем для ясности. Система подсказывает наиболее частые комбинации слов в запросе, начиная с тех, что вы уже ввели. Похожую методику можно использовать для восстановления непонятных мест. Переговоров очень много, это огромный корпус текстов, и их можно анализировать и смотреть, какие куски чаще всех встречаются. Я сама никогда не занималась темой переговоров летчиков с землей, но я подозреваю, что похожих предложений должно быть много, структура информации довольно кодифицирована, способ общения стандартен такие вещи довольно легко предсказывать, поэтому можно легко восстановить.

Расскажите про акустику и очищение звукового сигнала в голосовых ассистентах


Про это я почти ничего не знаю, я занимаюсь только письменным текстом. Фонетика, акустика это не мои области. Но я уверена, что есть звуковые методы, которые помогают очистить сигнал, и на пересечении между звуковыми сигналами и предсказательным механизмом можно отфильтровать гипотезы и восстановить текст.

Какой язык самый сложный в плане обработки и понимания?


Они все сложные. Нет такого, что какой-то из них сложнее или проще сам по себе; для английского есть очень много данных, поэтому работать с ним проще, и им все занимаются.

Получается замкнутый круг: когда люди на конференциях хотят опробовать новый алгоритм, они берут известные корпуса и смотрят, как растут цифры на метриках. Чтобы померить свой алгоритм, нужен хороший корпус; на английском есть много хороших корпусов, поэтому они гоняют алгоритмы на английском на них, получают прирост, и тем самым стимулируют других исследователей делать еще больше корпусов, чтобы находить дырки в алгоритмах. Это задача, на которую легко получить грант. Например, есть 10 алгоритмов автоматического ответа на вопросы; на имеющихся корпусах эти алгоритмы более-менее похожи, и исследователи решают сделать новый корпус, чтобы увидеть разницу между ними. Это хорошая задача, она позволяет лучше настроить алгоритмы. Они это делают, и появляется еще больше корпусов для английского а чем больше корпусов, тем больше появляется алгоритмов. Если посмотреть на работы в области NLP за последние несколько лет на конференциях измеряются даже не проценты, а доли процента прироста качества.

В целом, это не слишком помогает в практических задачах, и это не совсем компьютерная лингвистика. Это то, как инженеры занимаются языком, если они не работают с лингвистами (то есть, или посредственно, или очень теоретически).

Почему для русского языка мало данных?


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

Я не знаю. Может, в русской науке просто мало денег, и поэтому для русского языка делается мало данных. Конференции в России в целом немного устаревшие; есть конференции по прикладной лингвистике, по автоматической обработке естественного языка, но очень мало больших коллективов, которые этим занимаются. Ученые уходят в большие компании Яндекс, ABBYY, сейчас МТС тоже нанимает лингвистов; профессия стала более востребована с появлением голосовых ассистентов. За рубеж тоже уезжают; лингвистов много в стартапах, в Amazon и Google.
Единственный большой корпус это Национальный корпус русского языка. Есть еще корпус, который сделали мои приятели Открытый корпус русского языка; но, в целом, под это очень сложно получить финансирование, и это мало кому интересно.

Были соревнования алгоритмов, под которые создавались небольшие корпуса под конкретные задачи например, сравнение того, как система отвечает на вопросы на русском языке или понимает команды на русском языке но этих данных недостаточно для тренировки больших систем. Получается тоже замкнутый круг в другую сторону: тренировать не на чем, поэтому тренировать нечего, поэтому мерить тоже нечего, поэтому нет данных. Плюс, данных нужно больше, чем для английского. После получения диплома я почти сразу ушла в Яндекс, поэтому мне сложно сказать, почему здесь не получается.

Какой подход в обработке языка больше используется Google? Нейросети или алгоритмы?


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

Самые исторически старые подходы это подходы, основанные на правилах. Лингвисты руками пишут правила, практически как язык программирования. Допустим, в воспринимаемом тексте сначала стоит подлежащее, потом глагол, потом сказуемое; если сказуемое в одном падеже, тогда один вывод, и так далее. Например, для случаев, когда пользователь говорит что-то вроде окей Гугл, поставь будильник на 7 утра, можно сделать такое правило: поставь любое слово будильник на цифра утра. Это шаблон, который можно описать и научить систему: если ты применяешь такой шаблон, и он срабатывает, то надо поставить будильник на указанное в виде цифры время. Конечно, это очень примитивный шаблон, можно делать гораздо сложнее. Они могут комбинироваться: например, один шаблон извлекает дату и время, потом поверх него пишется шаблон для установки будильника.

Это очень старый подход, ему лет 70 уже так была написана Элиза, первый чат-бот, притворявшийся психоаналитиком, в 1966 году. Тогда люди очень удивлялись. Ходили байки, что создатели этого чат-бота показывали его коллегам, и те выгоняли их из комнаты, чтобы поговорить с настоящим психоаналитиком. И этот бот был написан только на правилах тогда это был прорывной подход. Сейчас, конечно, мы не хотим так делать, потому что правил нужно очень много представьте, сколько разных фраз можно использовать только для того, чтобы ставить будильник, при использовании чистых правил приходилось бы описывать каждую из них вручную. Мы давно перешли на гибридные системы: они могут воспринимать шаблоны, но в целом мы стараемся использовать нейронные сети для машинного обучения и применять supervised-подходы к обучению с учителем. То есть, мы размечаем данные и говорим: ок, в этом массиве того, что может сказать пользователь, эта часть время, и она нормализуется так-то; эта часть девайс, на котором пользователь хочет поставить будильник, а эта допустим, имя будильника. Чтобы можно было конкретно на iPhone поставить будильник на 7 утра с названием Школа. Дальше мы задаем большой корпус, обучаем на нем парсер, дальше парсер применяется к запросам пользователей, и мы таким образом их распознаем. Так сейчас работает Google-ассистент, и такой подход мы сейчас используем.

Это звучит примитивно, сейчас в литературе и новостях часто проскакивает информация про то, как нейронные сети обучаются сами на огромных корпусах, на все отвечают и поддерживают беседы. Это, конечно, так, и это классно, но подобные подходы бесполезны в случаях, когда нужно, чтобы система не только ответила, но и изменила свое состояние хотя бы с установкой будильника. Все равно требуется внутреннее представление, к которому надо как-то привести то, что сказал пользователь. Даже если у нас будет огромный массив текстов, в которых пользователь просит поставить будильник, и он не будет размечен, то мы не сможем так обучить парсер, чтобы он менял систему. Мы сможем обучить его так, чтобы он впопад ответил Да, я ставлю будильник и ничего не сделал. Но обучить систему так, чтобы она меняла свое состояние, с использованием неразмеченных данных, пока невозможно. Поэтому то, что недавно выпускали OpenAI и DeepMind часть Alphabet, родительской компании Google это круто, это хорошие методики для чат-ботов, которые отвечают человеку, но методик, исключающих ручной труд для изменения состояния системы, нет. Поэтому, к сожалению, сейчас в индустрии довольно низкие стандарты в этом смысле применительно не только к Google-ассистенту; все ассистенты работают на приблизительно одинаковых подходах с большим количеством ручной работы либо по обработке данных для парсеров, либо по написанию правил (чего мы не хотим делать). Ручную работу мы стараемся делать с помощью партнерских компаний.

Расскажите о перспективных направлениях в разработке Google-ассистента.


Собственно, то, что мы только что обсуждали. Направление придумать новую систему обучения, которая могла бы из данных менять состояние системы, не требуя ручной обработки данных. Вот это было бы круто. Но пока, хотя у меня уже есть большой опыт работы с ассистентами, мне трудно представить даже то, как такая система работала бы в принципе. Я понимаю, как сейчас усложняются нейронные сети, методы обучения, гибридные подходы, как усложняется подготовка данных для обучения но того, как сделать прямую связку между данными без учителя и изменением системы, я не понимаю. Должно быть какое-то внутреннее представление, которое позволило бы так сделать. Если кто-то сможет произвести революцию и придумать эту часть заново, было бы классно.

Плюс, сейчас много вкладываются в генерацию этого внутреннего представления то есть, если мы не можем перейти напрямую от данных без разметки к изменению состояния системы, надо сделать алгоритм, который поможет сделать что-то среднее. Допустим, сгенерировать представление системы из текста, а потом люди почистили бы его вместо того, чтобы создавать с нуля. Это очень перспективное направление, и хотя прогресса в нем пока мало, исследователи смотрят именно туда.

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

Отдельно стоит гибридное изучение, которым я занимаюсь больше всего сейчас в последний год я перешла с русского языка на эту тему. Я занимаюсь проектами по тому, как сделать Ассистента более разговорным, более естественным. Мы смотрим, как люди разговаривают друг с другом. Здесь важно не только то, какие слова используются (поставь/сделай будильник); собственно, эта части примитивна и уже решена, хотя осталось доделать много рутины. Нерешенные задачи это, например, когда пользователь говорит в разных формах: Поставь мне будильник, Можешь поставить будильник?, Ты не мог бы поставить будильник?. Примерно одно и то же, но в одном случае применяется команда, в других вопросы. Мы смотрим на этот уровень лингвистики прагматику, то есть то, что идет над смыслом семантикой. Для тех, кто занимался лингвистикой или языком, семантическая разметка в тексте это не новый термин, но прагматика добавляет к ней дополнительный контекст; то есть, не только что говорят, но и как говорят, зачем говорят. Грубо говоря, если пользователь говорит ассистенту ты что, глупый?, он не хочет ответа да/нет это другой сигнал, и надо спросить, что до этого было не так в поведении системы; это надо классифицировать не как вопрос, а как жалобу.

Моя группа у меня сейчас осталось три лингвиста после перехода в другой отдел занимается сейчас попыткой понять, как люди взаимодействуют друг с другом, как люди взаимодействуют с ассистентами, и как это превратить в сигналы для машинного обучения и реально натренировать систему на лучшее понимание вещей, передающихся невербально и не напрямую.

Как насчет количества переспросов и выходов на заглушки по отношению к вопросу в постановке задачи?


Это неплохая метрика, но, к сожалению, она учитывает только количество не понятых ассистентом фраз, которые сказал пользователь. Она не говорит нам о том, насколько сложны были эти фразы, насколько приятным был опыт пользователя. Напишите мне потом после эфира все, у кого есть идеи по сравнению ассистентов, об этом можно поговорить отдельно но там требуется что-то очень сложное. По отдельным срезам мы уже научились что-то понимать например, какой процент запросов пользователя система не понимает, или понимает с N-го раза, и где были ошибки в переводе речи в текст, на самом тексте, где-то дальше при изменении системы. А вот оценить, насколько адекватно ответила система это уже сложнее: собственно, что такое адекватный ответ? Есть еще всякие вишенки на торте вроде случаев, когда пользователь обращается к системе на вы, а она отвечает на ты это хорошо или плохо? Вроде бы плохо, ассистент же подчиненная фигура.

В общем очень много маленьких фишек, которые сложно учесть в количественных измерениях.

Существует ли промежуточный, общий язык для упрощенной обработки с последующим переходом на нужный язык?


Это прекрасный вопрос, но задавать его следует не мне, а представителям ABBYY, которые много лет пытались сделать именно это. То есть, в лингвистике есть идея о том, что все языки строятся похожим образом, и можно создать универсальную грамматику, словарь и все остальное, чтобы получилось среднее звено между всеми языками. Тогда можно было бы переводить с одного языка на мета-язык и потом на любой другой язык. Очень много человеко-лет было потрачено на эту задачу, но оказалось несмотря на всю красоту идеи что языки все-таки довольно разные, и провести подобный маппинг практически невозможно. И непонятно, как это сделать автоматически не руками. В итоге тема заглохла.

Оказалось, что, если влить очень много данных и напустить нейросеть, то машинный перевод получается достаточно качественным и без мета-языка. Нейросети хорошо вычисляют закономерности, в том числе грамматические, поэтому, если объем данных достаточен, то они сами справляются без подсказок от промежуточного звена. В машинном переводе все хорошо работает, когда есть хорошие параллельные тексты. Например, между русским и английским есть много параллельных текстов, но между русским и каким-нибудь языком американских индейцев их вообще нет но есть много параллельных текстов между ним и английским, то есть, английский может выполнять роль промежуточного языка. Часто перевод с русского делается сначала на английский, потом на третий язык; эта техника распространена достаточно, чтобы английский на практике заменял собой тот самый мета-язык ведь переводных данных больше всего именно на английский язык и с него. Качество страдает, конечно, но это лучше, чем ничего. Если систему не на чем обучать, то лучше обучить на таком пошаговом переводе, чем не делать ничего.
В общем, с теоретической точки зрения идея красивая, но на практике применяется английский.

Можете ли вы привести примеры задач, над которыми работаете в Google? Какое процентное соотношение интересных и рутинных задач?


Когда я запускала русского Ассистента, было очень много рутинных задач просто потому, что алгоритмы универсальны, и большая часть работы сводилась к ручной правке багов и подготовке данных русского языка. Мы проверяли качество, иногда руками писали данные; это звучит очень грустно, но мы не могли использовать пользовательские данные, а брать их откуда-то надо было. Для того, чтобы взять данные, можно было еще написать правило и сгенерировать данные; или открытые данные. Из интересного можно было разбираться с морфологией, смотреть, чтобы генерация и понимание текста были поумнее и не нужно было в столбик выписывать все формы слова будильник. К сожалению, было очень много циклов прогнать-посмотреть качество-исправить-снова прогнать-исправить данные-и так далее; поначалу это было весело, но быстро стало рутиной. Сейчас, так как я больше в research (исследованиях), мы сами себе составляем повестку, в некотором смысле. Я занимаюсь как раз созданием новых данных, которые в будущем могут быть полезны для метрик, и исследованием того, как люди разговаривают друг с другом и с ассистентами, чтобы понять, какие сигналы можно использовать для обучения моделей. Мы анализируем качество. Часть работы, которой я сейчас занимаюсь продуктовая, мы пытаемся создать дорожную карту проблем в диалоговых взаимодействиях между человеком и ассистентом, понять, как это расклассифицировать, понять, что мы можем решить сейчас, что потом. То есть, сейчас у меня рутинных задач почти не осталось, и я довольна своим сетапом.
У разных лингвистов этот баланс выглядит по-разному. Недавно у нас был юбилей 100 лингвистов в компании, сейчас уже немного больше. Это круто, потому что, когда я приходила в компанию 4 года назад, нас было человек 30. Наша востребованность однозначно растет.

Используете ли вы определение контекста для анализа текстов?


Я не знаю, смотрит ли еще автор вопроса переформулируйте, пожалуйста, я не поняла.
Конечно, мы используем контекст; без него не бывает никакого диалогового взаимодействия. Конечно, мы пытаемся решать проблемы, чтобы пользователь, например, не каждый раз говорил будильник, а мог использовать естественные местоимения (поставь будильник на 7, нет, поменяй его на 8). Для английского это уже хорошо работает; не помню, запустили ли уже для русского.

Почему не запущена колонка для русского языка?


Из того, что я могу сказать у Google очень много разных языков. Приоритеты выстраиваться по объему и ценности рынков, и российский рынок не самый интересный. Немного стимулирует то, что в России есть Яндекс, и с ним можно конкурировать, но с практической точки зрения никому не хочется. Плюс, Google закрыл офисы разработки в России после принятия закона о персональных данных.

Есть ли открытые библиотеки распознавания и генерации речи, массивы данных для тренировки нейросетей? Насколько эта технология открыта?


Да, полно открытых алгоритмов. Google выпустил недавно Bert это супер-новая библиотека; теперь конференции полны апдейтов к ней, которые называют разными смешными словами, внутри которых есть Bert (Albert). Это все open source, сделали наши прекрасные ученые в Берлине. Можно тренировать что угодно; в научных сообществах есть данные, на которых можно тренировать нейронные сети и смотреть, что получается. Как я уже говорила, для русского этих данных мало, для английского больше, поэтому все развлекаются с ним.

То есть, у вас нет текстов пользовательских логов?


Мы не можем читать пользовательские логи. Единственное исключение это те случаи, когда пользователи жалуются, и у них специально запрашивают разрешение на то, чтобы расшарить последние столько-то высказываний. Но даже в таких случаях мы видим только пересказ проблемы от специально обученных саппортов и агрегированную статистику вида ассистент ответил, что не понимает, такой-то процент раз. Google очень внимательно относится к пользовательским данным. Часть того, чем занимается моя команда это как раз думать над тем, как можно было бы генерировать реалистичные данные или собирать их со специально оплаченных людей. Это важное направление для всех индустриальных команд, потому что privacy ни в коем случае нельзя нарушать. Нам приходится искать новые методы сбора данных, писать новые инструменты; последние полгода я довольно плотно занимаюсь этим. К сожалению, детали пока не подлежат публикации. Мы хотели написать статью для конференции, но эпидемия помешала. Когда ты работаешь в компании, статья тебе, в принципе, нужна только для того, чтобы за счет компании поехать на конференцию и потусить. А теперь все конференции перешли в онлайн, и потусить не получится реально пропала мотивация писать статью. Сейчас вот эпидемия закончится, и мы все-таки это сделаем.

Можете рассказать, как проходит собеседование в вашу команду, и показать примеры тестовых заданий?


Тестовых заданий не буду показывать, но рассказать про собеседование могу. Как я говорила, у нас сейчас 100 лингвистов, и собеседования теперь проходят в известном инженерам формате собеседование в пул. Мы подряд собеседуем лингвистов, и, когда есть хороший лингвист, смотрим, где есть вакансия, и распределяем по командам. У нас есть лингвисты разных профилей; кто-то программирует, кто-то практически не программирует. Я из второй категории: я больше в исследовательской части, модели я сама не тренирую в команде есть ребята, которые этим занимаются. У нас сейчас 8 команд лингвистов разного размера, и еще есть команда интернализации, в которой я была специалистом по русскому языку: это люди, которые следят за качеством ассистента (сейчас я просто лингвист-исследователь и занимаюсь задачами, не связанными с конкретным языком). В зависимости от своего профиля, лингвисты попадают в одну из этих команд.

Там, где задачи под конкретный язык, нужны носители конкретных языков; они получают специальные задания по этому языку мы пытаемся выяснить, хорошо ли человек понимает особенности. Например, если бы мы нанимали на позицию с русским языком (сейчас её нет, правда), мы бы спрашивали, чем русский сложнее английского, какие существуют методы преодоления этих сложностей, как устроена русская морфология, что нужно чтобы компьютер это понимал, как это влияет на объем данных. Если роль общая, то мы будем спрашивать про то, насколько человек хорошо понимает текущие реалии лингвистики, насколько он может обдумывать алгоритмы. Хотя я сама почти не программирую, я хорошо понимаю, как устроен Machine Learning, что нужно, чтобы тренировать систему, про сигналы, supervised / unsupervised learning и так далее. Собственно, это то, что я обычно спрашиваю на собеседованиях. Самый банальный пример: Как бы вы сделали исправление опечаток? Есть бесконечное количество денег и разработчиков, но продукта еще нет как построить его с лингвистической точки зрения, какие будут шаги? В целом, можно спрашивать про любой компонент, который включает в себя естественный язык. Как он построен, по мнению опрашиваемого? Как человек собирается строить аналогичный, какие проблемы видит? Как перенести опыт с английского языка на китайский, с китайского на русский, с русского на хинди? Как он будет выстраивать работу с языком, которого он не знает? Вариантов очень много.

Мониторите ли вы пользовательское поведение: какую команду дал пользователь, какое действие выполнилось устройством?


Мы не можем мониторить пользовательское поведение. Мы можем только придумывать методы, чтобы симулировать его и проверять, как отвечает система. Это то, чем мы, собственно, занимаемся: пытаемся придумать, как померить, и пытаемся собрать данные для тренировки алгоритмов.

Каким образом отслеживается контекст беседы? Много ли для этого используется памяти? Есть ли персистентность между сессиями?


Много ли используется памяти я не знаю деталей, это даже не к тому отделу, где я работаю. Наш отдел больше занимается качеством, но есть отделы, которые смотрят за тем, хватает ли памяти, нет ли утечек, не тупит ли ассистент по 10 минут, чтобы поставить будильник.

Контекст мы отслеживаем. Пока, к сожалению, только внутри одной сессии. Это одна из задач, которые наш отдел моя команда, соседние команды инженеров будет решать в течение следующего года. Очень классная и интересная задача: как долго держать контекст, в какой момент считать, что беседа закончилась, сохранять ли контекст пользователя всегда, какую информацию о пользователе система будет хранить в себе. Условно говоря, если пользователь говорит Я ненавижу пиццу, то, наверно, хорошо сохранить такой контекст навсегда и переспрашивать раз в году, не изменилась ли ситуация. И, если пользователь отвечает, что не изменилась не предлагать доставку пиццы. Пока ассистенты такого не умеют к сожалению, они еще очень далеки до совершенства, им пригодилось бы еще много разного контекста.

Сейчас мы умеем понимать местоимения внутри одной сессии (поставь будильник, сделай его на 8 утра). Мы работаем на тем, чтобы расширить этот контекст, и отдельно ведем исследования, чтобы понять, какой контекст полезен, сколько его нужно, где и сколько его хранить. Конечно, у Google много серверов, поэтому экономить нам не нужно, но хочется, чтобы ассистент не обрабатывал каждый запрос по 3 часа. Сейчас он довольно быстр, но работает не идеально; и, если мы сделаем его идеальным, хотелось бы, чтобы он продолжал работать быстро.

Есть ли у вас конкуренция между командами?


И да, и нет. Конечно, по тому, как устроена работа внутри Google, можно делать отдельный эфир. У нас много инициативы на местах; люди могут пробовать делать прототипы чего угодно, предлагать это начальству начальство всегда очень открытое, и оно будет предлагать высшему начальству. Довольно много проектов возникает из того, что кто-то что-то попробовал сделать, у него получилось, и было решено делать в качестве, пригодном для выпуска. Конечно, бывают ситуации, когда в 5 местах одновременно людям приходит одна и та же идея в голову, и получается 10 прототипов. В такой момент иногда приходится выбрать какой-то из прототипов, но обычно стараются объединять людей в команду, чтобы они могли вместе разработать новую фичу, выпустить в продакшн, и все были довольны.

Так что, конкуренция есть, но мы стараемся, чтобы конкуренция была здоровая, чтобы не было слишком много политики. В целом, атмосфера классная. Мы сейчас сидим между research и production, приносим идеи, находимся в эпицентре с продакт-менеджерами, и с проджектами, и со всеми все координируются, кооперируются. Хаос, но все душевно.

Что быстрее произойдет сделают умный голосовой ассистент, который будет понимать не хуже человека, или Илон Маск изобретет нейроинтерфейс?


Я ничего не знаю про то, на какой стадии находится нейроинтерфейс. Но умный голосовой ассистент, который будет понимать не хуже человека это еще очень нескоро. Пока никто не понимает, как сделать так, чтобы ассистент понимал. Все болталки на мощных нейронных сетях это имитация. Я видела вопрос про тест Тьюринга это же тоже тест на имитацию, на то, насколько система хорошо притворяется человеком и притворяется, что она понимает, но ведь ни одна система ничего не понимает. Был чат-бот Eugene Goostman, который выиграл один из тестов прошел какой-то процент судей, которых нужно было обмануть. Он притворялся 15-летним мальчиком из Одессы с папой-гинекологом и морской свинкой (не шутка он про себя это рассказывал). Бот чуть-чуть держал контекст, спрашивал: Вы откуда? и запоминал город из ответа, а потом использовал запомненное через какое-то время, вызывая вау-эффект. Хотя сейчас вызвать вау-эффект с голосовыми помощниками не слишком сложно; они не идеальны. Кроме того, так как конкурс был на английском языке, шероховатости в речи бота списывались на то, что он из Одессы в мальчика-иностранца верили.

Вопрос в том, что называть пониманием, что такое понимание не хуже человека, и что мы в принципе хотим от чат-ботов. На этот вопрос тоже никто не знает ответа. Мы хотим, чтобы он с нами болтал, как лучший друг, или чтобы он стабильно управлял умным домом и машиной и ставил будильники? Что он может делать? Может ли он нас обзывать и насмехаться над нами? Не то чтобы наши лучшие друзья все обзывались и насмехались, но с близкими людьми есть специальные способы общения. Возможно, нам бы не хотелось, чтобы система с нами мило разговаривала и травила анекдоты?



Что было ранее


  1. Илона Папава, Senior Software Engineer в Facebook как попасть на стажировку, получить оффер и все о работе в компании
  2. Борис Янгель, ML-инженер Яндекса как не пополнить ряды стремных специалистов, если ты Data Scientist
  3. Александр Калошин, СEO LastBackend как запустить стартап, выйти на рынок Китая и получить 15 млн инвестиций.
  4. Наталья Теплухина, Vue.js core team member, GoogleDevExpret как пройти собеседование в GitLab, попасть в команду разработчиков Vue и стать Staff-engineer.
  5. Ашот Оганесян, основатель и технический директор компании DeviceLock кто ворует и зарабатывает на ваших персональных данных.
  6. Сания Галимова, маркетолог RUVDS как жить и работать с психиатрическим диагнозом. Часть 1. Часть 2.
  7. Илья Кашлаков, руководитель фронтенд-отдела Яндекс.Денег как стать тимлидом фронтендеров и как жить после этого.
  8. Влада Рау, Senior Digital Analyst в McKinsey Digital Labs как попасть на стажировку в Google, уйти в консалтинг и переехать в Лондон.
  9. Ричард Левелорд Грей, создатель игр Duke Nukem 3D, SiN, Blood про личную жизнь, любимые игры и о Москве.
  10. Вячеслав Дреер, гейм-дизайнер и продюсер игр с 12-летним стажем про игры, их жизненный цикл и монетизацию
  11. Андрей, технический директор GameAcademy как видеоигры помогают прокачивать реальные навыки и найти работу мечты.
  12. Александр Высоцкий, ведущий PHP-разработчик Badoo как создаются Highload проекты на PHP в Badoo.
  13. Андрей Евсюков, заместитель CTO в Delivery Club про найм 50 синьоров за 43 дня и о том, как оптимизировать фреймворк найма
  14. Джон Ромеро, создатель игр Doom, Quake и Wolfenstein 3D байки о том, как создавался DOOM
  15. Паша Жовнер, создатель тамагочи для хакеров Flipper Zero о своем проекте и другой деятельности



Подробнее..

Рекурсия сознания ловушка мышления и барьер прогрессу. Исторический очерк

23.06.2020 02:20:15 | Автор: admin
С момента появления языка как второй сигнальной системы инструмента для мышления и общения, человечество получило критическое преимущество перед всеми другими живыми существами, поведение которых управляется системами первого уровня и поэтому принципиально ограничено в уровнях абстрагирования.
Но, давая человеку инструмент огромной силы, язык и абстрактное мышления в то же время создают ограничения и ловушки, ведущие к проблемам, конфликтам и деструктивному поведению. Чем человечество последние 5000 лет в основном и занимается. (Может и 500 000, но нет письменных свидетельств).
90-99% всех войн, конфликтов, ссор и убийств происходят по идейным, идеологическим, религиозным, политическим и другим абстрактным причинам, лежащим в сфере идей и информации, а не материального мира. И прежде чем война, конфликт, ссора приводит к реальным действиям, ей всегда предшествует этап намерения, замысла, подготовки, планирования, нагнетания, организации, проходящий на уровне слов и информации.
Источник и инструмент всех войн, убийств, дискриминации, инквизиции, угнетения язык.
Но он же инструмент науки, культуры, прогресса, развития, цивилизации.
И виноват в проблемах не инструмент, а незрелое мышление, сознание и культура тех, кто его использует.
Еще с античных времен лучшие умы это понимали и пытались исправить.
Aristotle Altemps Inv8575
Наибольший вклад в развитие цивилизации внес, конечно, Аристотель. Разработка формальной логики дала хоть и простой, но все-же общепризнанный и легко применимый инструмент разрешения споров и поиска истины. По сути, это создало основу, фундамент всей Западной цивилизации.
Хотя до сих пор формальную логику понимает и умеет пользоваться, по разным оценкам, не более 1-10% населения планеты.
И уже в те времена философы и мыслители, используя этот инструмент, натолкнулись на ловушку рекурсии, лежащую в основе значительной части парадоксов, апорий и логических противоречий.
Парадокс лжеца, апории Зенона, множество других парадоксов в основе всех одна и та же мыслительная ошибка. Считать, что высказывание, направленное само на себя, ничем не отличается от высказываний, имеющих другое основание.
Это высказывание написано на русском языке, Это высказывание истинное рекурсивные высказывания без парадокса.
Это высказывание ложное пример парадоксальной рекурсии.
Некоторые античные мыслители даже сошли с ума или покончили жизнь самоубийством, пытаясь разрешить такие загадки.
Но выхода так и не нашли.
Философы средневековья и Возрождения потратили тысячи часов на решения подобных и еще более схоластических вопросов, но единственным продуктом были все более и более абстрактные теории, в которых авторы избретали новые названия для старых категорий и все больше в них запутывались.
Как ехидно заметил Пуанкаре,
"все, что ученый на самом деле создает это язык, которым он это возвещает."

Выходы из логического тупика начали находить только по мере развития естественных и точных наук где-то к началу XX века. Нашлись они, как и можно было ожидать, представителями самой формальной и точной науки математики.
Bertrand Russell transparent bg
Б. Рассел в своих Основаниях математики (1903) показал, что класс не может включать сам себя в виде элемента класса, а тип не может быть сам себе подтипом. Аналогично множество, включающее само себя в качестве подмножества, обладает особыми свойствами и не может рассматриваться в ряду обычных множеств, не приводя к логическим ошибкам указанного типа.
1925 kurt gdel
Наиболее полно и красиво разобрался с этой проблемой Курт Гёдель, опубликовавший в 1931 году свои знаменитые теоремы о неполноте:
Любая формальная система аксиом содержит неразрешенные предположения

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

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

Работы Гёделя оказали серьезное влияние на все точные науки, не только математику.
Einstein 1921 by F Schmutzer - restoration
Его идеи продолжил в физике Альберт Эйнштейн, утверждавший, что
"невозможно решить проблему на том же уровне, на котором она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень".
По сути, это та же теорема о неполноте, выраженная в более абстрактной форме.
Не обошли вниманием эту тему и отечественные исследователи.
Ivan Pavlov 1934
Великий ученый и мыслитель Иван Петрович Павлов еще в далеком 1918 году предвосхитил на много лет Структурный Дифференциал А. Коржибского, исследователя уровней абстрагирования, в своих лекциях Об уме вообще, о русском уме в частности:
"действительность, понять которую ставит своей задачей ум, эта действительность является в значительной степени скрытой от него. Она, как говорится, спрятана за семью замками. Между действительностью и умом стоит и должен стоять целый ряд сигналов, которые совершенно
заслоняют эту действительность."

"Что такое наши слова, которыми мы описываем факты, как не новые сигналы, которые могут, в свою очередь, затемнить, исказить истину."

"словесная передача этим другим обстановки всего его дела не соответствует, не воспроизводит точно и полно действительности."

"когда вы начнете оперировать с теми словесными сигналами этикетками, которые вы поставили на место фактов, то здесь фальсификация действительности может достигать огромнейших размеров."


Alfred Korzybski
Это описание тех же уровней абстрагирования, и принципов отношения реальности, языка и сознания, что показаны А. Коржибским на его Структурном Дифференциале в книге Science and Sanity в 1933 году, и даже почти теми же самыми словами.
Но, благодаря картинкам и материальной модели, идеи Коржибского все-таки поняли в тот момент несколько человек, (как, впрочем, и Эйнштейна сразу после публикации Теории Относительности) и в результате этого появились и НЛП, и Дианетика с Сайентологией, и некоторые направления позитивной психологии, маркетинга, рекламы, политтехнологий, пропаганды и других инструментов работы с сознанием. К сожалению, на первоисточник авторы этих разработок предпочитают не ссылаться, чтобы не палить тему.
Но, по крайней мере, идея Карта не территория вышла за рамки научных статей и стала достоянием широкого круга людей и достаточно общепринятым фактом.
А И. Павлов опередил эпоху, и в то непростое время, его глубоко не понял, наверное, вообще никто.
И даже сейчас, через почти 100 лет после этих исследований, публикаций и выступлений, контролировать свое абстрагирование, отслеживать уровни, избегать рекурсии и не попадать в уровневые ловушки умеет не так много людей, на порядки меньше, чем владеют формальной логикой.
Хорошо, что на этом ресурсе собираются люди, близкие к ИТ и программированию, которых с первых шагов в профессии обучают логике, структуре и строгости мышления и которые знают, что программа не должна вызывать сама себя в качестве подпрограммы, массив не может включать сам себя в качестве элемента массива, а переменная не может принимать в качестве значения сама себя.
Но то, что для программистов самоочевидно, совсем не так в других областях науки и деятельности.
Миллионы людей продолжают пытаться выучить язык с помощью языкового описания языка (грамматики), не замечая, что они попадают в логическую ловушку рекурсии без шанса выбраться оттуда.
Когда вы не знаете, как построить предложение на другом языке, чтобы выразить нужную вам мысль, вы сказать этого не можете.
Но когда вы выучили правило и знаете, как построить это предложение, вы все равно сказать это не сможете.
Потому что та зона мозга, которая должна управлять этим действием, занята мыслями о том, как это сделать (правилами).
Это подобно попытке укусить себя за зубы или перерезать нож ножом. Причем этим самым ножом.
Рекурсия в чистом виде.
Но этого почти никто не замечает, кроме психологов-физиологов, которые давно используют такой механизм блокировки речи для исследований языка и мышления.
Психолингвист и методист Стивен Крашен сформулировал эту идею в виде Гипотезы грамматического монитора. Он утверждает, что грамматика не может служить инструментом для порождения устной речи, а только как монитор для последующего контроля и коррекции. Но, исходя из фактов, полученных другими науками, это никакая не гипотеза, а аксиома, следующая из законов логики, математики, психологии, физиологии. И только фрагментация и сегментация наук и все более узкая специализация ученых не позволяет это заметить.
Аналогичные проблемы с бесконтрольным абстрагированием и злоупотреблением рекурсией можно найти в сфере психологии, когда начинают исследовать мышление с помощью мышления, в методологии, когда пытаются управлять управлением с помощью управления, в философии, которая множит абстрактные сущности без всякого страха перед Оккамом, и во многих других сферах человеческой деятельности.
И задача технарей, айтишников, представителей точных наук помочь выбраться из рекурсивной ловушки, дать инструменты структурирования мышления, научить избегать рекурсии и совместно с гуманитариями разработать новые продукты и инструменты, решающие насущные задачи и лишенные рекурсивных замыканий.
Одним из таких инструментов может быть Структурно-Визуальный метод, разработанный автором этой статьи. Он предлагает для структурирования знаний в некоторой предметной области использовать визуальное представление структуры с использованием цвета для кодирования ограниченного количества смыслов самого верхнего уровня абстракции.
С помощью этого метода были получены некоторые интересные схемы и модели для разных предметных областей ИТ, управления, психологии, лингвистики, педагогики, изучения иностранных языков, а их практическое применение оказалось довольно результативным и перспективным.
Но об этом в следующих статьях, если это будет интересно читателям Хабра.

Успехов вам в любой деятельности и осознанного абстрагирования!
Подробнее..

Мои статьи в видеоформате

04.03.2021 22:20:04 | Автор: admin

Дошли наконец-то руки, записал для тех, кому так удобнее:https://www.youtube.com/channel/UCL1YPFdAqbyR2N-LeYIbW1A/videosВ ближайшие дни появятся ещё видео. Под последними отличная новость для москвичей.

Статьи эти плод 8 лет теоретической и практической преподавательской работы. Взвешивал каждое слово, чтобы через минимум текста передать то, что НЕОБХОДИМО знать каждому, кто изучает иностранные языки. Одно из самых важных про развитие навыка говорения.

Подробнее..

A lie can travel halfway around the world while the truth is putting on its shoes

24.03.2021 22:11:36 | Автор: admin

Самые бредовые, несовместимые с реальностью представления об изучении иностранных языков у людей, хорошо ими владеющих. У переводчиков, например. Парадокс, да? Нет.

Почти везде языки дают очень плохо, и реально выучивают их только люди с хорошими способностями. Для обучения таких людей не требуется никакого преподавательского мастерства или специальных приёмов. Они воспримут любой способ преподавания. Что-то сами додумают. Но таких максимум 5-10%. Остальные, включая толковых людей с хорошим образованием, становятся жертвами мифов, распространяемых маркетологами языковых школ.

Всю свою преподавательскую карьеру я боролся с этими мифами с помощью статей. Тратил сотни человекочасов, пытаясь сформулировать МАКСИМАЛЬНО коротко. Убивал по полдня (!), придумывая, как сократить абзац хотя бы на одну строчку без потери смысла. Радовался, когда удавалось удалить даже одно лишнее слово. Фильм (сборник лекций) результат этой многолетней работы.

Подробнее..

Как я выучил английский

20.04.2021 20:11:13 | Автор: admin

Знакомые говорят, что история мотивирующая и надо её публиковать. Ну вот.

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

15 мешков картошки. Всё началось с них. Моя деревенская семья всегда выращивала картошку, взрослые продавали потом. В какой-то момент отец показал мне на мешки и сказал: Иди продавать к магазину, 50% твои. Уже через неделю у меня впервые в жизни были свободные деньги, достаточные, чтобы пойти на курсы.

На курсах объяснили, что через will выражается будущее время, have + 3-я форма глагола значит, что действие имело место ранее заданной расчётной точки, а вот ещё Present Perfect Continuous есть.

Это сейчас и чё??, а в провинции до Интернета Помните, как Моисей раздвинул воду? Вот. Наконец-то появилась возможность учить самостоятельно!

Вскоре переехал в столицу и получил дополнительную мотивацию: в Москве как-то всё про английский, всё вокруг него. После нескольких месяцев выживания и работы на трёх работах жизнь устаканилась, пора было браться за язык всерьёз.

В 7 лет, не имея доступа к детской литературе, читал дома всё, что попадалось, вплоть до русской классики. За счёт этого удалось нехило прокачать язык, ну как минимум письменную речь. Как-то в продлёнке мне навешали два третьеклассника, и меня же ещё поругали за драку! Помню, как, продолжая реветь, лежал прямо на полу и писал развёрнутое официальное обращение к учителям и ученикам школы: потому что вы Козлы! Козлы с большой буквы потому, что это ваше имя. Вручил воспитательнице продлёнки и засим удалился. Все ближайшие дни трясся от страха: в те времена назвать учителей козлами

К величайшему моему удивлению, даже родителей в школу не вызвали. День за днём все вели себя так, как будто вообще ничего не произошло. Спустя какое-то время, проходя мимо двух учительниц старших классов, услышал шёпот: и ни одной ошибки, и все запятые правильно расставлены Похоже, советские педагоги были настолько потрясены недетским слогом первоклассника, что решили не спускать собак.

Много лет спустя в Москве подумал: а вдруг с английским так же прокатит?? И взялся за неадаптированную английскую классику. В советское время её очень здорово перевели буквально предложение в предложение и очень качественно.

Взял книжку Трое в лодке в оригинале, взял русский перевод и делал следующее. Читаю абзац со словарём на английском. Это агония: почти с нуля сразу за классику. Затем беру этот же абзац в русском переводе и сравниваю, пытаясь увидеть, где и что я понял неправильно. Без словаря и на этом этапе не обойтись: оказывается, например, что неправильно понял слово blind. Это не слепой это занавеска. После всей подробнейшей проработки ещё раз читаю этот абзац на английском, уже более-менее всё понимая, и перехожу к следующему. На каждый абзац могло уходить 1-2 часа. Когда таких абзацев набиралось на 7-10 страниц, я делал то, что начинающие обычно не могут себе позволить: откидывался в кресле и читал 10 страниц сложного классического текста подряд практически без словаря. Ага, эти самые ЕЩЁ РАЗ! Мозг, таким образом, с самого начала настраивался на английский стиль мышления.

Не пытайтесь это повторить. Работает, да, но соотношение затраченного времени и выхлопа не самое выгодное.

Не могу сказать, что после тех троих в лодке стало легче: у Джерома сравнительно простой язык. Дальше пошёл Чарльз Диккенз, а потом Вальтер Скотт со своими вкраплениями староанглийского и шотландского. Всё это время, кстати, продолжал выписывать и учить отдельные слова. Big mistake. Я, конечно, упёртый товарищ несколько тысяч так выучил. Но, оглядываясь назад Время можно было потратить гораздо рациональнее.

У упорство. В какой-то момент уже работал на приличной работе с высокой зарплатой. Уверенности в своём знании английского, однако, по-прежнему не было. Решение очевидно: увольняемся с хорошей работы, устраиваемся курьером в бюро переводов и занимаемся английским по 13-14 часов в день. Если нет поездок, делаем в офисе грамматические упражнения. Что-то непонятно обращаемся к переводчикам. В поездках продолжаем читать классику Вирджиния Вулф и Теккерей, йоу! А ещё курьер часто где-то идёт пешком. Ну сделал 120 листов распечаток А4 с фразовыми глаголами и примерами их употребления и ходи себе, крути их в голове месяцами. До сих пор некоторые места в Москве ассоциируются с конкретными фразовыми глаголами.

В какой-то момент поступил на не самый лучший иняз: на первых же курсах начал поправлять преподавателей. Потом перестал поправлять преподавателей. Иняз создаёт среду, где все поголовно прямо или косвенно, так или иначе заинтересованы в английском: от экзаменов никуда не денешься. Такая среда стимулирует тебя даже в том случае, если изначально мотивации было ноль.

Моя и без того мощная мотивация взлетела до небес: уже на первом курсе появилось ощущение собственной крутости. Это наркотик, и с него так просто не слезть. Если в программе всплывала незнакомая идиома, я испытывал микростресс: Кто такая, почему не знаю?? Идиома буквально впечатывалась в память.

Fun fact: я, возможно, был единственным в истории студентом иняза, который ни разу за все 5 лет не сдавал экзамен по общему английскому, только гос. Преподаватели менялись, но вели себя на экзаменах всегда одинаково: я просто заходил, и мне без слов ставили отл.

Будучи перфекционистом, стараюсь сделать идеально либо не парюсь вообще. Когда начинал учить язык, цель стояла совершенно чёткая: выйти на такой уровень, чтобы носители-британцы не отличали меня от своего. Уже на старших курсах работал переводчиком, а через пару лет после выпуска вырос как профессионал ещё на голову.

Итак, что у меня было за спиной через 2 года после окончания иняза:

- 5 лет чтения классики в оригинале;

- несколько лет работы переводчиком и преподавателем английского;

- десятки фильмов и сериалов, просмотренных по несколько раз внимательнейшим образом, не пропуская ни одного слова или выражения;

- опыт проживания в языковой среде: Англия 3 месяца, США 8 месяцев;

- многократно проработанный мощный аудиокурс для расширения вокабуляра (созданный для носителей, btw) + я особое внимание всегда уделял фразовым глаголам как одной из самых непонятных областей английского языка.

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

Мороз и солнце? Аты-баты?

В последние годы начинаю приучать себя к мысли, что, скорее всего, не добьюсь поставленной цели никогда.

________________

Меня долго не отпускало ощущение, что делаю что-то не так, поэтому всегда с интересом расспрашивал всех, кто занимался английским: преподавателей, студентов инязов, наших эмигрантов в Англии и США...

Fun fact 2: у людей, хорошо владеющих иностранными языками, обычно очень смешные представления о том, как их надо учить, особенно у переводчиков. Парадокс, да? Нет. Почти везде языки дают плохо, и реально выучивают их, как правило, люди с хорошими способностями. Для обучения таких людей не требуется никакого преподавательского мастерства или специальных приёмов. Они воспримут любой способ подачи материала. Что-то сами додумают. А потом всю жизнь рассказывают, как замечательно это работает.

Правды о принципах изучения и преподавания иностранных языков в массовом сознании не больше, чем в представлениях древних греков о строении мира. Я не преувеличиваю: волосы дыбом встают от того, что удалось натворить маркетологам языковых школ в головах людей. Даже толковых людей, даже с хорошим образованием.

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

Перфекционизм и тут нашёл себе применение)) Fun fact 3: те статьи, которые про изучение иностранных языков, я писал и редактировал 8 лет! Тратил сотни человеко-часов, пытаясь сформулировать МАКСИМАЛЬНО коротко. Убивал по полдня (не шучу), придумывая, как сократить абзац хотя бы на одну строчку без потери смысла. Радовался, когда удавалось удалить даже одно лишнее слово.

Даже после этого не успокоился перевёл их в видеоформат. Всё равно, конечно, получилось 69 минут. Ну сорри не рекламный ролик снимал... Труд всей жизни, так сказать.

Подробнее..

Из песочницы Разработка бренда в среде lean startup. Часть 1

23.10.2020 18:08:20 | Автор: admin
Очень часто владельцы малого бизнеса или основатели стартапов сталкиваются с проблемой разработки бренда своей компании и отстройки от конкурентов в условиях ограниченных ресурсов. Особенно актуально это сейчас, когда в мире бушует пандемия Covid-19.

Запустив несколько стартапов, я выработал определенный алгоритм разработки бренда для небольших компаний и стартапов, которым относительно легко пользоваться. Эта статья первая из цикла Разработка бренда в среде lean startup. В ней мы сосредоточимся на общем описании подхода к разработке бренда и на практических шагах его реализации.

Данный подход подойдет, как владельцам МСП, стартапов, так и начинающим маркетологам.

Общее описание алгоритма


1. Определить (в одно предложение) цель/боль целевой аудитории, которую мы решаем.

2. Обозначить функциональные, эмоциональные, социальные выгоды и выгоды самовыражения. Приоритизировать выгоды.

3. Выделить ключевое сообщение для целевой аудитории.

4. Определить позиционирование.

5. Сгенерировать 30-50 ассоциаций с вашим брендом.

6. Сгруппировать данные ассоциации и выявить общие категории ассоциаций. Это будут основные элементы (ключевые ассоциации), с которыми будет ассоциироваться ваш бренд. Данных элементов должно быть от 2 до 5.

7. Этап генерации названия. Проделав предыдущие шаги у вас на ассоциативном уровне образуется набор возможных названий бренда. Используйте метод неконтролируемого брейнсторминга для генерации максимального количества названий.

8. Отсеять названия после мозгового штурма

8.1 Отсеивание названий, которые меньше всего отражают суть бренда

8.2 Оставшиеся названия проходят отбор через дополнительный Алгоритм анализа коммерческих названий в русском языке.

8.3 Создаем таблицу соответствия названия бренда ключевым ассоциациям.

8.4 Выбираем 5-6 названий, прошедших этап отсеивания и имеющих максимальную оценку соответствия ключевым ассоциациям.

9. Проверка по базе ФИПСА этих 5-6 названий на наличие зарегистрированных торговых знаков:

www1.fips.ru/iiss/search.xhtml

10. Если вы стартап, и пока не определили подходит ли ваш продукт рынку или нет, то проведите дополнительную проверку наименования бренда на семантическое растягивание / сжатие, если в будущем вам необходимо будет использовать бренд с другой линейкой продуктов.

11. Выбираем одно название, по которому будет создаваться визуальная идентификация. Данный алгоритм будет раскрыт в следующих публикациях.

Разбор шагов алгоритма с примером


Среднее время выполнения по алгоритму для одного человека 30 минут, для группы 40-50 минут (увеличенное время связано с координацией группы, но и результат от группового обсуждения в большинстве случаев лучше).

Пример заказчика


Мы небольшая кондитерская (назовём её Кондитерская), которая производит капкейки из цветной капусты по оригинальному рецепту. Мы предлагаем здоровую альтернативу существующим десертам. Наша целевая аудитория: девушки, женщины, следящие за своим рационом, но при этом любящие десерты.

Прогоняем по алгоритму:

1. Определить (в одно предложение) цель/боль целевой аудитории, которую мы решаем.

В условия ограниченности времени и бюджета наши клиенты ищут решение для здорового питания.

2. Определить функциональные, эмоциональные, социальные выгоды и выгоды самовыражения.

Таблица 1. Выгоды товара.

image

3. Определить ключевое сообщение для целевой аудитории.

Помогаем современным девушкам и женщинам следить за своим здоровьем с помощью здоровых десертов.

4. Позиционирование:

Вкусные и здоровые десерты для современных женщин.

5. Сгенерировать 30-50 ассоциации с брендом. Примерный список.

Ассоциации могут быть разные, например: функциональные преимущества, мысленные образы, выгоды самовыражения, эмоциональные и социальные выгоды, визуальные ассоциации формы и цвета. Главное, чтобы ассоциации находили отклик у клиента.

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

Таблица 2. Пример листа ассоциаций.

image

6. Сгруппировать данные ассоциации и выявить общие категории. Эти категории и будут основными элементами, с которыми будет ассоциироваться ваш бренд. Данных элементов должно быть 2-5. Группировка, категоризация и обозначение категории это самый трудоемкий процесс во всем алгоритме. Наберитесь терпения.

Таблица 3. Результат категоризации и группировки ассоциаций.

image

7. Этап генерации названия. Используя ключевые элементы / ассоциации из предыдущего шага, генерируем возможные названия для бренда с помощью свободного брейнсторминга. Просто записываем возможные названия бренда. Да пребудет с вами сила фантазии!

Ключевые элементы: Заботливая кондитерская, Здоровье и красота, Говорим на языке вкуса

Таблица 4. Названия, ассоциирующиеся с ключевыми элементами.

image

8. Отсеять названия после мозгового штурма

8.1 Отсеивание названий, которые меньше всего отражают суть бренда
Например, КрошкаКапошка звучит, как бренд, не отражающий ключевые элементы/ассоциации.

8.2 Оставшиеся названия проходят отбор через дополнительный Алгоритм языкового анализа коммерческих названий в русском языке. О том, как он проводится, я расскажу в отдельном посте, так как описание работы данного алгоритма занимает 2 страницы.

На выходе вы получаете таблицу с оценкой ассоциативности названия по ключевым элементам и результатами из Алгоритма языкового анализа коммерческих названий в русском языке.

Таблица 5. Названия, ассоциирующиеся с ключевыми элементами.

image

Выбираем 5-6 названий с максимальной суммой оценки. Замечу, что здесь присутствует некая субъективность величин оценок, однако, они точно отражают величину ассоциативности наименований относительно друг друга.

9. Проверка по базе ФИПС этих названий.

www1.fips.ru/iiss/search.xhtml

Таблица 6. Результат сверки с базой ФИПС.

image

10. Дополнительная проверка наименования бренда на семантическое растягивание / сжатие.

Допустим мы решили, что выпуск капкейков из цветной капусты не соответствует требованиям рынка. Теперь мы хотим выпускать новую линейку десертов для здорового питания на основе тыквы. Тогда DolceKapusta обладает узкой семантикой для выпуска других линеек питания, но КушайЗдорово, наоборот, обладает широкой семантикой и подходит для выпуска других линеек питания.

11. Останавливаемся на DolceKapusta (Мы решили быть узкоспециализированной кондитерской с броским названием). По этому наименованию пойдёт дальнейшая разработка визуальной идентификации бренда.

Заключение


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

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

Всем успеха!
Подробнее..

Сам себе Гутенберг. Делаем параллельные книги

16.05.2021 22:09:51 | Автор: admin

Lingtrain parallel books


Если вам нравится изучать языки (или вы их преподаете), то вы наверняка сталкивались с таким способом освоения языка как параллельное чтение. Он помогает погрузиться в контекст, увеличивает лексикон и позволяет получить удовольствие от обучения. Читать тексты в оригинале параллельно с русскоязычными, на мой взгляд, стоит, когда уже освоены азы грамматики и фонетики, так что учебники и преподавателей никто не отменял. Но когда дело все же доходит до чтения, то хочется подобрать что-то по своему вкусу, либо что-то уже знакомое или любимое, а это часто невозможно, потому что такого варианта параллельной книги никто не выпускал. А если вы учите не английский язык, а условный японский или венгерский, то трудно найти вообще хоть какой-то интересный материал с параллельным переводом.


Сегодня мы сделаем решительный шаг в сторону исправления этой ситуации.


Из чего делаем


На входе у нас будут два текстовых файла с оригинальным текстом и его переводом. Для примера возьмем книгу "Убить пересмешника" Харпер Ли на русском и английском языках.


Начало документов выглядит так (отрывки приведены в таком виде, в котором они были найдены в сети):


TO KILL A MOCKINGBIRDby Harper LeeDEDICATIONfor Mr. Lee and Alicein consideration of Love & AffectionLawyers, I suppose, were children once.Charles LambPART ONE1When he was nearly thirteen, my brother Jem got his arm badlybroken at the elbow. When it healed, and Jems fears of never beingable to play football were assuaged, he was seldom self-conscious abouthis injury. His left arm was somewhat shorter than his right; when hestood or walked, the back of his hand was at right angles to his body,his thumb parallel to his thigh. He couldnt have cared less, so long ashe could pass and punt.



Харпер ЛиУбить пересмешникаЮристы, наверно, тоже когда-то были детьми.Чарлз ЛэмЧАСТЬ ПЕРВАЯ1Незадолго до того, как моему брату Джиму исполнилось тринадцать, у него была сломана рука. Когда рука зажила и Джим перестал бояться, что не сможет играть в футбол, он ее почти не стеснялся. Левая рука стала немного короче правой; когда Джим стоял или ходил, ладонь была повернута к боку ребром. Но ему это было все равно - лишь бы не мешало бегать и гонять мяч.

Как делаем


Задача объемная, поэтому разобьем ее на три части:


  1. Подготовка текстов
  2. Выравнивание двух текстов по предложениям
  3. Создание книги

Начнем с выравнивания двух текстов, так как эта часть является центральной и крайние пункты опираются на нее.


Получение параллельного корпуса


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


  • Переводчики часто переводят текст не как одно предложение к одному. Особенно ярко это заметно при переводе на иероглифические тексты (китайский, японский и т.д.), где сложные предложения как правило будут разбиты на несколько простых. В переводах на другие языки это также встречается довольно часто.
  • Некоторые предложения или абзацы могут попросту отсутствовать, а иногда переводчик добавляет что-нибудь от себя.
  • При очистке текстов от лишней информации, которая не участвует в выравнивании (автор, название, номера глав и подзаголовки), понадобится сохранить ее местоположение в тексте, чтобы конечная книга получилась полной и красивой.

Для выравнивания воспользуемся библиотекой lingtrain-aligner, над которой я работаю около года и которая родилась из кучи скриптов на python, часть из которых еще ждет своего часа. Проект открытый, буду рад вашим идеям и предложениям. Все ссылки вы найдете в конце статьи.


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


При подаче в программу текстов, произойдет следующее:


  • Текст сливается в одну строку.
  • Строка подчищается в зависимости от языка текста.
  • Строка разбивается по предложениям при помощи библиотеки razdel или регулярок.
  • Из каждой строки достается метаинформация, на основе специальных меток.

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


Подготовка текстов


Язык разметки


В качестве разметки был придуман простой язык, который совместим с последующим разбиением текста на предложения. Сейчас поддерживаются несколько типов меток, которые ставятся в конце строки. В конце каждой метки должна стоять точка.


Метка Значение Установка
%%%%%title. Название произведения Вручную
%%%%%author. Автор Вручную
%%%%%h1. %%%%%h2. %%%%%h3. %%%%%h4. %%%%%h5. Заголовки Вручную
%%%%%divider. Разделитель Вручную
%%%%%. Новый абзац Автоматически

Метки абзацев


Метки абзацев будут проставлены автоматически по следующему правилу: если строка кончается на символ [.,:,!?] и перенос строки, то считаем такую строку концом абзаца.


Правила подготовки текста


  1. Удалить заведомо лишние строки (информацию об издателе, посвящение, номера страниц, примечания).
  2. Проставить метки для автора и названия.
  3. Проставить метки для заголовков (H1 самый большой, H5 самый маленький). Если заголовки не нужны, то просто удалите их.
  4. Убедиться, что в тексте нет строк, которые кончаются точкой и при этом не являются концом абзаца (иначе целый абзац разобьется в этом месте на два).

Расставьте метки руками в соответствии с правилами, пустые строки в данном случае роли не играют. Должны получиться документы, похожие на такие:


TO KILL A MOCKINGBIRD%%%%%title.by Harper Lee%%%%%author.%%%%%divider.PART ONE%%%%%h1.1%%%%%h2.When he was nearly thirteen, my brother Jem got his arm badlybroken at the elbow. When it healed, and Jems fears of never beingable to play football were assuaged, he was seldom self-conscious abouthis injury. His left arm was somewhat shorter than his right; when hestood or walked, the back of his hand was at right angles to his body,his thumb parallel to his thigh. He couldnt have cared less, so long ashe could pass and punt....



Харпер Ли%%%%%author.Убить пересмешника%%%%%title.%%%%%divider.ЧАСТЬ ПЕРВАЯ%%%%%h1.1%%%%%h2.Незадолго до того, как моему брату Джиму исполнилось тринадцать,у него была сломана рука. Когда рука зажила и Джим перестал бояться,что не сможет играть в футбол, он ее почти не стеснялся. Левая рука сталанемного короче правой; когда Джим стоял или ходил, ладонь была повернута кбоку ребром. Но ему это было все равно - лишь бы не мешало бегать игонять мяч....

Здесь и дальше все "главные" заголовки ("ЧАСТЬ ПЕРВАЯ", "ЧАСТЬ ВТОРАЯ" и т.д.) помечены меткой h1, номера глав помечены метками h2. Перед выравниваем все метки будут удалены из текста и будут использованы при создании книги.


Выравнивание


Colab блокнот


Чтобы выровнять свои тексты используйте вот этот Colab блокнот. Это интерактивный блокнот на питоне, в который вы можете вносить изменения и запускать в браузере. В нем есть инструкции и некоторые комментарии к процессу. В конце можно будет скачать получившуюся книгу как html страничку.


Скрипты


Здесь же давайте напишем небольшой скрипт, обсудим сложности и ограничения нашего подхода.
Установим библиотеку следующей командой:


pip install lingtrain-aligner

Импортируем необходимые компоненты:


from lingtrain_aligner import preprocessor, splitter, aligner, resolver, reader, vis_helper

Определим пути до входных файлов и прочитаем все строки в переменные:


text1_input = "harper_lee_ru.txt"text2_input = "harper_lee_en.txt"with open(text1_input, "r", encoding="utf8") as input1:  text1 = input1.readlines()with open(text2_input, "r", encoding="utf8") as input2:  text2 = input2.readlines()

Определим также путь до SQLite базы данных (это хранилище со всей необходимой для выравнивания информацией) и параметрами языка lang_from и lang_to. Эти параметры очень важны, так как они влияют на правила разбиения строк на предложения:


db_path = "db/book.db"lang_from = "ru"lang_to = "en"models = ["sentence_transformer_multilingual", "sentence_transformer_multilingual_labse"]model_name = models[0]

Получить список всех доступных языков можно следующей командой:


splitter.get_supported_languages()

Если нужного языка в списке пока нет, но он поддерживаются моделями, то используйте код xx, тогда к тексту будут применены стандартные правила фильтрации и разбиения на предложения. Модель sentence_transformer_multilingual работает быстрее и поддерживает 50+ языков, sentence_transformer_multilingual_labse поддерживает 100+ языков.


Добавим к текстам метки абзацев:


text1_prepared = preprocessor.mark_paragraphs(text1)text2_prepared = preprocessor.mark_paragraphs(text2)

Разобьем документы на строки:


splitted_from = splitter.split_by_sentences_wrapper(text1_prepared , lang_from, leave_marks=True)splitted_to = splitter.split_by_sentences_wrapper(text2_prepared , lang_to, leave_marks=True)

Создадим нашу базу данных и наполним ее данными, взятыми из нашей разметки. В базе хранятся строки с координатами абзацев и глав, метаданные, маппинг выровненных строк на их изначальный состав и местоположение. Такая структура позволяет писать для этого хранилища UI, в котором можно проводить различные манипуляции с корпусом. Это отдельный проект, о нем в следующий раз.


aligner.fill_db(db_path, splitted_from, splitted_to)

Теперь можно выровнять документы. Процесс выравнивания идет кусками с размером batch_size, вокруг каждого куска берется дополнительное количество строк размера window, чтобы гарантированно захватить необходимые строки. Модель берет заданное количество строк первого текста и подбирает в соответствующем фрагменте второго текста лучшие соответствия, используя векторные представления. На этом основывается первоначальное выравнивание. Для того, чтобы выровнять первые четыреста строк, выполним следующую команду.


batch_ids = [0,1,2,3]aligner.align_db(db_path, \                model_name, \                batch_size=100, \                window=30, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=50, \                normalize_embeddings=True, \                show_progress_bar=True                )

Результат выравнивания


Теперь можно посмотреть на результат первичного выравнивания! Это возможно благодаря тому, что в базе мы храним изначальные номера строк для выровненного корпуса. Воспользуемся модулем vis_helper. Так как строк у нас 400, то нарисуем все на одной картинке, задав параметр batch_size=400. Если указать, например, batch_size=50, то получим 4 картинки по-меньше.


vis_helper.visualize_alignment_by_db(db_path, output_path="alignment_vis.png", \                                    lang_name_from=lang_from, \                                    lang_name_to=lang_to, \                                    batch_size=400, \                                    size=(800,800), \                                    plt_show=True)

Первичное выравнивание


Посмотрим на картинку. Выравнивание предсказуемо идет от начала к концу, но есть конфликты. Основных причин две:


  • У модели было слишком много удачных вариантов.
    • Так случается, если строка короткая. Например, в тексте идет диалог, фразы в нем односложные, используются одни и те же имена.
  • У модели было слишком мало вариантов и правильного среди них нет.
    • У текстов разные тенденции к разделению на предложения. Один постепенно "убегает из окна" и мы не ищем правильные варианты там, где надо. Окно можно увеличить, но не слишком сильно, потому что у модели становится больше вариантов для ошибок. Нужен компромисс.

Хорошим решением мне видится регрессия на координаты строк при выравнивании батча и сдвиг окна на конец потока при выравнивании следующего. Минусом тут будет потеря возможности распараллеливания обсчета батчей, так как они станут зависимы друг от друга.


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


Меня зовут Уинстон Вульф. Я решаю проблемы.


Давайте теперь разбираться с шероховатостями. Глядя на картинку, мы видим, что есть непрерывные цепочки, есть разрывы и есть выбросы. Например, для предложений 10,11,12 модель подобрала предложения 15,16,17 из второго текста. Эта цепочка хорошая. Все, что находится между цепочками назовем конфликтом. При таком определении конфликта можно измерить его размер и подобрать стратегию разрешения. Логика по решению проблем находится в модуле resolver.


Для начала давайте посмотрим на все найденные конфликты:


conflicts_to_solve, rest = resolver.get_all_conflicts(db_path, min_chain_length=2, max_conflicts_len=6)

conflicts to solve: 46total conflicts: 47

При этом в переменную conflicts_to_solve попадут конфликты, которые соответствуют заданным параметрам поиска, а в переменную rest остальные.


Выведем на экран статистику:


resolver.get_statistics(conflicts_to_solve)resolver.get_statistics(rest)

('2:3', 11)('3:2', 10)('3:3', 8)('2:1', 5)('4:3', 3)('3:5', 2)('6:4', 2)('5:4', 1)('5:3', 1)('2:4', 1)('5:6', 1)('4:5', 1)('8:7', 1)

Видим, что чаще всего попадаются конфликты размера 2:3 и 3:2, это означает, что одно из предложений было переведено как два, либо два предложения были слиты в одно.


Посмотреть на конфликт можно следующей командой:


resolver.show_conflict(db_path, conflicts_to_solve[10])

124 Дом Рэдли стоял в том месте, где улица к югу от нас описывает крутую дугу.125 Если идти в ту сторону, кажется, вотвот упрешься в их крыльцо.126 Но тут тротуар поворачивает и огибает их участок.122 The Radley Place jutted into a sharp curve beyond our house.123 Walking south, one faced its porch; the sidewalk turned and ran beside the lot.

Видим, что строки 125 и 126 нужно бы сложить в одну, тогда правильное сопоставление выглядело бы как [124]-[122] и [125,126]-[123]. Как же научить этому программу? Так как она уже умеет выбирать лучший из предоставленных вариантов, то давайте ей их и предоставим. Конфликты у нас не очень большие, поэтому мы будем брать все возможные варианты разрешения конфликта, считать для них коэффициент похожести, суммировать и брать лучший. В данном случае это будет два варианта:


  1. [124,125]-[122] // [126]-[123]
  2. [124]-[122] // [125,126]-[123]

Что до стратегии выравнивания, то на данный момент лучше всего себя проявила такая, сначала ищем конфликты при минимальной длинне хорошей цепочки 2 (при таком параметре конфликтов найдется больше всего) и максимальной длинной конфликта не больше 6. Разрешаем все найденные конфликты, при этом большие конфликты становятся меньше так мы их частично разрешили. Затем увеличиваем оба параметра, ищем и снова разрешаем, добивая остатки.


Выглядит это так:


steps = 3batch_id = -1 #выровнять все доступные батчиfor i in range(steps):    conflicts, rest = resolver.get_all_conflicts(db_path, min_chain_length=2+i, max_conflicts_len=6*(i+1), batch_id=batch_id)    resolver.resolve_all_conflicts(db_path, conflicts, model_name, show_logs=False)    vis_helper.visualize_alignment_by_db(db_path, output_path="img_test1.png", batch_size=400, size=(800,800), plt_show=True)    if len(rest) == 0:        break

Результат после первого шага:


Разрешение конфликтов. Шаг 1


И после второго:


Разрешение конфликтов. Шаг 2


На выходе мы имеем файл book.db. Теперь мы можем перейти к созданию книги.


Конфликты на концах интервала


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


resolver.fix_start(db_path, model_name, max_conflicts_len=20)

и


resolver.fix_end(db_path, model_name, max_conflicts_len=20)

Книги и стили


За создание книжки отвечает модуль reader.


from lingtrain_aligner import reader

Сначала прочитаем из базы тексты, разбитые по абзацам, и данные о главах:


paragraphs_from, paragraphs_to, meta = reader.get_paragraphs(db_path, direction="from")

Параметр direction ["from", "to"] показывает на основе какого текста делить выравнивание на абзацы. Это дает нам возможность лучше подредактировать только один текст (например, русский) и на его основе сформировать книгу.


Теперь передадим данные в метод create_book():


reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html")

Получим вот такую книгу:



Это обыкновенная html страничка со встроенными стилями. В стили я добавил модификаторы, поэтому ее можно распечатать или сохранить как pdf, при этом шрифт с полями станут меньше.


Стилизация


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


reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="pastel_fill")


reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="pastel_start")


Шаблонов стилей пока немного, предлагайте свои кастомные стили, добавим их в библиотеку.


Кастомные стили


Зададим параметр template="custom" и передадим объект styles. Этот объект представляет из себя массив CSS стилей, которые будут применены к предложениям каждого абзаца циклически.


Например, подсветим каждое втрое предложение в абзаце желтым цветом начиная со второго:


my_style = [    '{}',    '{"background": "#fafad2"}',    ]reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="custom", styles=my_style)


Задавать можно любые применимые к span'ам стили:


my_style = [    '{"background": "linear-gradient(90deg, #FDEB71 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #ABDCFF 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #FEB692 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #CE9FFC 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #81FBB8 0px, #fff 150px)", "border-radius": "15px"}'    ]reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="custom", styles=my_style)


Заключение


В голове есть еще много идей по доработкам и дополнительным фишкам. Например, можно сделать мультиязычные книги, можно доставать из текста ключевые предложения и искать по ним картинки (или генерировать нейросетями), можно делать пословное выравнивание и много чего еще. Пока же хочется поделиться промежуточным результатом с сообществом и выслушать ваше мнение.


Поддержать проект можно на Patreon'e.


Ссылки


[1] Код lingtrain-aligner на github.


[2] Выровнять тексты в Google Colab.


[3] Sentence Transformers модели.


[4] Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation


[5] Language Agnostic BERT Sentence Encoder.

Подробнее..

Сам себе Гутенберг. Часть 2. Делаем многоязычные параллельные книги

02.06.2021 20:09:34 | Автор: admin

Lingtrain parallel books article cover


В прошлый раз мы с вами научились делать параллельные книги и сделали русско-английский вариант отрывка романа Харпер Ли "Убить пересмешника". Сегодня мы сделаем следующий шаг и создадим полноценную многоязычную книгу на восьми языках.


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


Сначала сделаем семь книг


Проделаем все на примере романа Булгакова "Мастер и Маргарита", потому что он очень популярен в мире и был переведен на множество языков. Я нашел его версии на английском и немецком (германские языки); белорусском, чешском и украинском (славянские языки); а также на венгерском и китайском языках. Все семь текстов мы выровняем с русским оригиналом, получим семь книг. Затем выровняем их между собой и получим возможность выбирать любые комбинации языков для своей книги в любом порядке. Полные версии книг можно будет скачать в формате pdf в конце статьи.


Начнем с пары венгерский-русский.


hungarian


Шаг 1. Подготовка текстов


Кратко напомню основные правила подготовки текстов (подробнее смотрите в первой статье, ссылку найдете ниже).


Правила


  1. Удалить заведомо лишние строки (информацию об издателе, посвящение, номера страниц, примечания).
  2. Проставить метки для автора и названия.
  3. Проставить метки для заголовков (H1 самый большой, H5 самый маленький), количество заголовков в текстах должно быть одинаковым.
  4. Убедиться, что в тексте нет строк, которые кончаются точкой и при этом не являются концом абзаца (иначе целый абзац разобьется в этом месте на два).

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


Метки


Язык разметки представляет из себя набор меток, которые ставятся в конце предложения:


Метка Значение Установка
%%%%%title. Название произведения Вручную
%%%%%author. Автор Вручную
%%%%%h1. %%%%%h2. %%%%%h3. %%%%%h4. %%%%%h5. Заголовки Вручную
%%%%%divider. Разделитель Вручную
%%%%%. Новый абзац Автоматически

Благодаря меткам мы извлечем из сырого текста данные о названии произведения, его авторе, названии и местонахождении глав. Это понадобится нам при создании книги.


Текст


В результате должны получиться тексты, похожие на следующие:


Мастер и Маргарита%%%%%title.М.А. Булгаков%%%%%author.ЧАСТЬ ПЕРВАЯ%%%%%h1.Глава 1%%%%%h2.Никогда не разговаривайте с неизвестными%%%%%h2.Однажды весною, в час небывало жаркого заката, в Москве, на Патриарших прудах, появились два гражданина. Первый из них, одетый в летнюю серенькую пару, был маленького роста, упитан, лыс, свою приличную шляпу пирожком нес в руке, а на хорошо выбритом лице его помещались сверхъестественных размеров очки в черной роговой оправе. Второй  плечистый, рыжеватый, вихрастый молодой человек в заломленной на затылок клетчатой кепке  был в ковбойке, жеваных белых брюках и в черных тапочках.   ...



MIHAIL BULGAKOV%%%%%author.A MESTER S MARGARITA%%%%%title.ELS KNYV%%%%%h1.ELS FEJEZET%%%%%h2.Ne lljunk szba ismeretlenekkel%%%%%h2.Egy meleg tavaszi estn, az alkonyat rjban, a Patriarsije Prudin kt frfijelent meg. Az egyik negyvenves forma, kvrks, alacsony, kopasz feketeemberke, szrke nyri ltnyt viselt, elegns kalapjt kezben tartotta, gondosanborotvlt arct istentelen nagy mret, fekete csontkeretes ppaszem kestette.Trsa jval fiatalabb s vllasabb volt nla, borzas hajn tarkjig htratolt kockssapka; ltzke kocks sportingbl, gyrtt fehr nadrgbl, fekete szandlblllt....

Количество меток одного типа должно быть одинаковым среди всех текстов. Иначе где-то будет номер и название главы, а где-то нет. После того как мы приготовили тексты, переходим к выравниванию.


Шаг 2. Выравнивание


Как и в прошлый раз, выравнивать будем библиотекой lingtrain-aligner. Код открыт, так что приглашаю в репозиторий.


Попробовать в Colab


Чтобы попробовать выровнять свои тексты без написания кода используйте вот этот Colab блокнот, который мы использовали в прошлый раз. В нем есть инструкции и некоторые комментарии к процессу. В конце можно будет скачать получившуюся двуязычную параллельную книгу как html страничку.


Попробовать локально


pip install lingtrain-aligner

Сначала немного служебного кода:


# Импортируем необходимые модулиfrom lingtrain_aligner import preprocessor, splitter, aligner, resolver, reader, vis_helper# Подготовленные тексты для выравниванияtext1_input = "master_hu.txt"text2_input = "master_ru.txt"with open(text1_input, "r", encoding="utf8") as input1:text1 = input1.readlines()with open(text2_input, "r", encoding="utf8") as input2:text2 = input2.readlines()# Путь до самого главного файла, в котором будет содержаться вся информация о выравниванииdb_path = "master_hu.db"# Определим языки (важно для разбиения на предложения)lang_from = "hu"lang_to = "ru"# Выберем модельmodels = ["sentence_transformer_multilingual", "sentence_transformer_multilingual_labse"]model_name = models[0]# Добавим метки абзацевtext1_prepared = preprocessor.mark_paragraphs(lines1_prepared)text2_prepared = preprocessor.mark_paragraphs(lines2_prepared)# Разобьем тексты на строкиsplitted_from = splitter.split_by_sentences_wrapper(lines1_prepared, lang_from, leave_marks=True)splitted_to = splitter.split_by_sentences_wrapper(lines2_prepared, lang_to, leave_marks=True)

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


Создадим файл для выравнивания. Это SQLite база данных, которую мы заполним входными данными, для дальнейшей обработки.


aligner.fill_db(db_path, lang_from, lang_to, splitted_from, splitted_to)

Чтобы выровнять первую тысячу строк, выполним следующую команду:


batch_ids = range(10)aligner.align_db(db_path,                 model_name,                 batch_size=100,                 window=60,                 batch_ids=batch_ids,                 save_pic=False,                embed_batch_size=25,                 normalize_embeddings=True,                 show_progress_bar=True                )

Произойдет следующее мы запустим процесс выравнивания (детали смотрите в предыдущей статье), для 10 отрезков (batch_ids их номера) по 100 предложений (параметр batch_size). Параметр window задает "перехлест" между этими кусками, чтобы наверняка захватить целевые предложения. В данном случае этот параметр довольно большой, потому что на протяжении всей книги наша "ось выравнивания" может довольно значительно отклоняться.


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


Визуализация


Теперь у нас есть возможность посмотреть на результат первичного выравнивания при помощи модуля vis_helper:


vis_helper.visualize_alignment_by_db(db_path,            output_path="alignment_vis.png",            batch_size=100,            size=(800,800),            lang_name_from=lang_from,            lang_name_to=lang_to,            batch_ids=batch_ids,            plt_show=True)

Lingtrain parallel books


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


Мы видим, что модель справилась довольно неплохо. Главное здесь, чтобы "ось выравнивания" не вышла за пределы окна, иначе модель не получит на вход отрезок со всеми правильными вариантами.


Теперь необходимо поставить на место выбросы.


Разрешение конфликтов


Механим разрешения конфликтов заключен в модуле resolver. Подробнее о нем, опять же, смотрите в предыдущей статье. Скажу лишь, что он находит промежутки между удачными отрезками выравнивания, и пытается подобрать для этих промежутков подходящий вариант разрешения. Соответственно, параметрами мы можем задавать минимальную длину хорошей цепочки и максимальную длину для конфликта. На практике, хорошо работает такой подход трижды проходим по всему выравниванию с постепенным увеличением максимальной длины конфликта:


steps = 3batch_id = -1 #пройти по всем батчамfor i in range(steps):    # Найти конфликты    conflicts, rest = resolver.get_all_conflicts(db_path, min_chain_length=2+i, max_conflicts_len=6*(i+1), batch_id=batch_id)    # Показать какие конфликты найдены    resolver.get_statistics(conflicts)    resolver.get_statistics(rest)    # Разрешить конфликты    resolver.resolve_all_conflicts(db_path, conflicts, model_name, show_logs=False)    if len(rest) == 0:        break

В конце могут остаться единичные конфликты. Если такие есть, то добиваем их:


# Найти конфликтыconflicts, rest = resolver.get_all_conflicts(db_path, min_chain_length=2, max_conflicts_len=20, batch_id=-1)# Показать какие конфликты найденыresolver.get_statistics(conflicts)resolver.get_statistics(rest)# Разрешить конфликтыresolver.resolve_all_conflicts(db_path, conflicts, model_name, show_logs=False)# Визуализировать выравниваниеvis_helper.visualize_alignment_by_db(db_path,            output_path="alignment_vis.png",            batch_size=100,            size=(800,800),            lang_name_from=lang_from,            lang_name_to=lang_to,            batch_ids=batch_ids,            plt_show=False)

Lingtrain parallel books


Цикл


Мы выровняли часть книги. Для продолжения выполним те же дейсвтия, но с другими батчами. Возьмем следующие 4000 строк. Мы выравнивали 10 кусков по 100 предложений, поэтому выполним следующую команду:


batch_ids = range(10, 50)aligner.align_db(db_path, \                model_name, \                batch_size=100, \                window=60, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=25, \                normalize_embeddings=True, \                show_progress_bar=True                )

После выравнивания этого куска (это займет чуть больше времени, на моем компьютере это около пяти минут) переходим к разрешению конфликтов, как было описано выше. Затем дальше, задавая новый диапазон строк. Так как предложений на венгерском у нас 9460, а разбитие идет по первому из заданных текстов, то батчей по 100 предложений у нас будет 95 штук.


Если задать диапазон


batch_ids = range(50, 100)

то мы выровняем остаток (вторую половину) книги. После разрешения всех конфликтов у нас останется файл master_hu, содержащий в себе венгерско-русскую версию "Мастера и Маргариты".


Шаг 3. Создание двуязычной книги


Теперь, если мы воспользуемся модулем reader, то сможем сгенерировать русско-венгерскую редакцию книги:


from lingtrain_aligner import reader# Читаем из абзацы и метаданныеparagraphs_from, paragraphs_to, meta = reader.get_paragraphs(db_path, direction="from")# Создаем html с нашей книгойreader.create_book(paragraphs_from, paragraphs_to, meta, output_path = "lingtrain.html")

Параллельная книга на венгерском


Это обыкновенная html страничка со встроенными стилями. Для визуализации связей между предложениями можно задавать стили. Например, такой:


reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="pastel_fill")

Параллельная книга на венгерском


Можно задавать свои стили, они будут применены к предложениям каждого абзаца циклически:


# Любые применимые к span'ам стилиmy_style = [    '{"background": "linear-gradient(90deg, #FDEB71 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #ABDCFF 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #FEB692 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #CE9FFC 0px, #fff 150px)", "border-radius": "15px"}',    '{"background": "linear-gradient(90deg, #81FBB8 0px, #fff 150px)", "border-radius": "15px"}'    ]reader.create_book(paragraphs_from, paragraphs_to, meta, output_path = f"lingtrain.html", template="custom", styles=my_style)

Параллельная книга на венгерском


Выравниваем остальные книги


Таким образом, повторяя третий шаг для остальных текстов, мы получим помимо файла master_hu.db остальные шесть. Отмечу некоторые трудности, с которыми я столкнулся (и, вероятно, столкнетесь вы, когда будете выравнивать свою книгу).


Большая разница в количестве предложений


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


1.  Фу ты черт!  воскликнул редактор,  ты знаешь, Иван, у меня сейчас едва удар от жары не сделался!2. - Даже что-то вроде галлюцинации было,  он попытался усмехнуться, но в глазах его еще прыгала тревога, и руки дрожали.



1. 'Pah, the devil!' exclaimed the editor.2. 'You know, Ivan, I nearly had heat stroke just now!3. There was even something like a hallucination...'4. He attempted to smile, but alarm still jumped in his eyes and his hands trembled.

В итоге имеем 9707 предложений на английском против 8996 на русском. Это довольно большое различие, поэтому после первичного выравнивания с параметром window=100 получаем более 1000 конфликтов.


english1

К счастью, после разрешения конфликтов эти кусочки все равно склеятся обратно.


english2

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


Выход за пределы окна


Упомяну польский текст, который тоже был найден, но не подошел по следующей причине. В польском тексте (8190 предложений) у нас слишком часто отсутствуют целые куски текста. Поток выравнивания получается местами обрывистым и окна в 100 уже не хватает, мы постоянно выходим за его пределы:


batch_ids = range(10,12)aligner.align_db(db_path, \                model_name, \                batch_size=200, \                window=100, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=25, \                normalize_embeddings=True, \                show_progress_bar=True                )

english1

english1

Дальнейшее расширение окна увеличит процент ошибок, поэтому мы перейдем в ручной режим и задействуем параметр shift. Этот параметр позволяет сдвигать поток второго текста при расчете батча:


batch_ids = range(10,12)aligner.align_db(db_path, \                model_name, \                batch_size=200, \                window=100, \                batch_ids=batch_ids, \                save_pic=False,                embed_batch_size=25, \                normalize_embeddings=True, \                show_progress_bar=True,                shift=-100 #сдвигаем русский текст                )

polish

polish

Плюсом такого подхода является то, что мы можем уменьшить окно, улучшив первоначальное качество. Минусом является большее количество итераций.


После разрешения конфликтов эти же куски выглядят так:


polish

polish

Отсутствие частей текста


Ручной режим не поможет нам восстановить разрывы, если в каком-то тексте нет соответствующего куска:


polish

polish

Разрешение таких конфликтов приведет к тому, что какому-то предложению станет соответствовать большой отрывок текста на другом языке. Если таких ситуаций одна-две на весь текст (так было с английским и белорусским текстами), то, в принципе, ничего страшного. В случае польского же отсутствовало более 20 отрывков, поэтому я решил его не добавлять.


Второй уровень выравнивания


К этому моменту мы получили семь файлов с выравниваниями master_*.
Их особенностью является то, что все они выровнены относительно одного языка (русского). Казалось бы, давайте просто возьмем абзацы и сходу получим необходимые локализации.


Делаем так и спустя несколько страниц получаем вот это:


second level

Дело в том, что в некоторых текстах (на рисунке это немецкий) одно предложение могло соответствовать двум русским. Если при этом русские предложения считались разными абзацами, то эти абзацы будут слиты в один. Поэтому в обычной двуязычной книжке все будет хорошо, но относительно друг друга структура абзацев у выравниваний будет отличаться. На помощь приходят метаданные, которые хранятся в базе (наши *.db файлы).


Метаданные


В метаданных хранится информация о том, какое предложение какому абзацу соответствует. Можно получить структуру абзацев для каждого текста в виде массива чисел, показывающих номер последнего предложения в абзаце.
Эти массивы можно слить в один по принципу объединения более мелких интервалов:


par_struct_1 = [2, 5, 6, 8, 10, 12, ...]par_struct_2 = [2, 6, 8, 10, 11, 12, ...]res = [2, 6, 8, 10, 12, ...]

Сгенерируем книгу на основе новой разбивки, получим следующий результат:


second level

Стало выглядеть лучше, теперь абзацы формируются относительно русского языка на единой основе.


Индекс


Абзацы починили, но обратим внимание на подсветку предложений и увидим, что во многих местах она разъехалась:


index

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


На архитектурном этапе я придумал хранить структуру выравнивания как индекс. После выравнивания он выглядит он так:


[    --первый батч    [        --первая пара предложений корпуса        [1, "[1,2]", 1, "[1]"],        --вторая и т.д.        [2, "[3]", 2, "[2]"],        [3, "[4,5]", 3, "[3]"],        [4, "[6]", 4, "[4,5,6]"],        ...    ],    --второй батч    [        [1, "[100]", 1, "[105]"],        ...    ],    ...]

В этом примере в первом элементе мы склеили два оригинальных предложения "левого" текста и сопоставили ему первое предложение "правого". Числа в кавычках ссылки на оригинальные предложения, вне кавычек ссылки на фактические данные, которые можно редактировать.


Такая структура дает много возможностей:


  • сохраняется информация о слиянии оригинальных строк
  • можно добавлять новые элементы в любое место без перезаписи идентификаторов фактических строк
  • можно удалять элементы из параллельного корпуса, удалив только из индекса
  • можно редактировать данные, не меняя оригинальные строки
  • можно пересчитывать отдельные батчи, не затрагивая остальные

Главное для нас здесь то, что из индекса мы можем вытащить структуру элемента корпуса относительно русского языка. Сопоставляя абзацы друг другу, мы опять будем сливать по минимальному принципу. В результате получим разбивку такого типа:


[[1], [2], [3]] -> [[1, 2, 3], [4], [5]] -> [[1], [2], [3]][[4]] -> [[6]] -> [[4]][[5]] -> [[7]] -> [[5, 6]]...

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


После исправлений


Посмотрим, как станет выглядеть подсветка теперь:


book

Так как мы объединяем структуру по минимальному принципу (в данном примере в китайском было меньше всего предложений на абзац), то подсветка стала ровнее, но беднее. Если убрать китайский, то она станет выглядеть так:


book

Шаг 4. Создание многоязычной книги


В большинстве случаев будет достаточно создания двуязычной параллельной книги и методов get_paragraphs() и create_book(). Но если вы дочитали до этого момента, то самое время попробовать сделать многоязычную книгу.


Логика по выравниванию абзацев для многоязычных книг содержится в методе get_paragraphs_polybook(), в который мы передадим все наши файлы. Так как при выравнивании система опирается на номера исходных строк, то в файлах не должно остаться конфликтов, иначе абзацы не будут сгенерированы. Проверить на отсутствие конфликтов можно таким кодом (как их разрешать вы уже знаете):


from lingtrain_aligner import resolverconflicts_to_solve, rest = resolver.get_all_conflicts(db_path, min_chain_length=2, max_conflicts_len=20, batch_id=-1)#перед генерацией не должно остаться никаких конфликтовresolver.get_statistics(conflicts_to_solve)resolver.get_statistics(rest)

Далее получим набор подготовленных текстов на всех нужных языках:


from lingtrain_aligner import readerdb_path1 = "db/master_de.db"db_path2 = "db/master_uk.db"db_path3 = "db/master_be.db"db_path4 = "db/master_zh.db"db_path5 = "db/master_cz.db"db_path6 = "db/master_en.db"db_path7 = "db/master_hu.db"paragraphs, metas = reader.get_paragraphs_polybook(                        db_paths=[db_path1, db_path2, db_path3, db_path4, db_path5, db_path6, db_path7])

Теперь самое интересное, мы можем выбрать нужные нам языки и создать нашу книжку. Можно, например, взять английский и немецкий, многие учат эти языки в паре.


reader.create_polybook(                lang_ordered=["en", "de", "ru"],                paragraphs = paragraphs,                delimeters = delimeters,                metas = metas,                output_path = "lingtrain_master.tml",                template="none")

book

Параметр lang_ordered задает набор и порядок языков.

Можно сделать белорусско-китайскую версию:


reader.create_polybook(                lang_ordered=["be", "zh"],                paragraphs = paragraphs,                delimeters = delimeters,                metas = metas,                output_path = "lingtrain_master.html",                template="none")

book

Можно, конечно, и всё взять:


reader.create_polybook(                lang_ordered = ["ru", "en", "de", "be", "uk", "cz", "hu", "zh"],                paragraphs = paragraphs,                delimeters = delimeters,                metas = metas,                output_path = "lingtrain_master_total.html",                template="none")

book

Лучше оставлять те выравнивания (*.db файлы), языки которых, вам нужны. Это позволит сохранить как можно больше информации об абзацах. Со стилями все как раньше, можете задавать template (сейчас есть "pastel_fill", "pastel_start"), можете придумывать свои, примеры есть выше и в блокноте на Colab. Если задать template="none", получится чистая книга.

Планы и поддержка


  • Дальше планируется поддержать fb2 формат для читалок и добавить подстрочный перевод. Также хочу расширить возможности разметки, добавить вставку картинок. Затем оформить это в виде веб-приложения, чтобы люди могли создавать книги без написания кода.


  • Скидывать тексты для тестирования и выравнивания, делиться предложениями и багами можно в канале http://t.me/lingtrain_books.


  • Подержать проект финансово можно переводом. Деньги пойдут на хостинг веб-приложения и ускорят его разработку.



Ссылки


Все упомянутые в статье ссылки:


[1] Первая часть статьи


[2] Код lingtrain-aligner на github


[3] Google Colab блокнот с выравниванием


[4] Кот Бегемот с обложки был найден здесь


[5] PDF. Семь параллельных книг "Мастер и Маргарита"


[6] Телеграм-группа


[7] Сбор средств на проект

Подробнее..

Словарь русского айти

05.07.2020 12:20:18 | Автор: admin

Всем привет! Меня зовут Азат, и сегодня мы поговорим о языке. Но не о языке программирования, а о естественном. Более конкретно, о языке русскоязычных айтишников. Как и у любого профессионального сообщества, у нас есть свой сленг (попробуйте дать навскидку несколько словечек). И сленг на самом деле немаленький.


И я люблю эти слова! Например "питоняша". Несмотря на то, что мне сложно дать определение этого слова (простая попытка "человек, очень любящий питон"), оно прекрасно, радует ухо.


Но если мы попробуем загуглить его, то получим всего 295 результатов. Возможно это, конечно, не самое популярное слово. Но если попробовать другие (например, "яндех"), то можно увидеть, что их присутствие в вебе не очень велико. Моё предположение в том, что русский айти сленг живёт в основном в бесконечных телеграм-чатах. Чат курса в университете, горы рабочих чатов, чаты по интересам к технологиям. Да вы и сами знаете.


В этих чатах слова рождаются и погибают. Мы фиксируем их в своих головах, но и оттуда они постепенно уходят. Мы теряем культуру.


А теперь представьте, если бы было единое место, где собран словарь русского айти. Это был бы своеобразный цифровой музей, в котором можно было бы познакомиться с бытом русскоязычного айти-специалиста. По-моему, очень классная идея. Я решил воплотить её в жизнь.


Реализация словаря


Думая, как же реализовать задуманное, я почти сразу вспомнил про другой проект сбор подписей в поддержку фигурантов "Московского дела" на гитхабе.


В этот репозиторий люди делают пулл реквест с файлом, в котором ставят своё имя и должность. После этого с помощью Github Actions их информация попадает в README и видна на главной странице. Мне нужно было практически то же самое.


После внимательного изучения кода (да что уж, многое просто скопировано) я сделал репозиторий с долгожданным словарём.


Алгоритм работы примерно такой: при пуше в мастер (а именно это происходит после одобрение пулл реквеста) запускается код на питоне, который сканирует целиком директорию с файлами, где находятся слова, делает небольшую валидацию. Потом берётся файл readme_header.md со статичным контентом. Его содержимое переносится в README и дописывается загруженными словами в алфавитном порядке. Потом скрипт на баше делает коммит и пуш, добавляя обновлённый файл в репозиторий.


Github Actions открывает много новых возможностей, реализация такого проекта на гитхабе без этого мне не представляется возможной. Если бы был голый README, в который люди добавляют новые слова, то постоянно ломался бы алфавитный порядок, к тому же добавились бы проблемы с мёрджем данных. В общем, неудобно. А с Github Actions всё круто. Можно легко сохранять структурированность, всё делается автоматически.


Всё должно работать. Теперь сообщество (то есть вы, друзья) может присылать новую информацию и она будет легко обрабатываться. Радость!


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


P. S. Если есть какие-то предложения по улучшению кода или вообще, то пишите мне в телеграм @Azatik1000

Подробнее..

Перевод Языковое моделирование с помощью управляемых сверточных сетей

18.01.2021 22:06:54 | Автор: admin

Вступление

Доминирующий на сегодняшний день подход к языковому моделированию основан на рекуррентных нейронных сетях. Их успех в моделировании часто связан со способностью таких сетей обработать неограниченный контекст. В этой статье мы разрабатываем подход для конечного контекста с помощью сложенных (композитных) сверток, которые могут быть более эффективными, поскольку они позволяют распараллеливать последовательные порции данных. Мы предлагаем новый упрощенный нейро-управляемый механизм, который превосходит предложенный Oord et al. (2016b) [26] и исследуем для него влияние ключевых архитектурных решений. Предложенный подход достигает наиболее значимых результатов на бенчмарке WikiText103, даже несмотря на то, что он характерен долгосрочностью зависимостей, а также сопоставимых результатов на бенчмарке Google Billion Words. Наша модель уменьшает задержку при оценивании предложения на порядок, по сравнению с рекуррентными базовыми значениями. Насколько нам известно, это первый случай, когда непериодический подход конкурентоспособен с сильными рекуррентными моделями в подобных крупномасштабных языковых задачах.

  1. Введение

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

где wi - отдельные индексы слов в словаре. Языковые модели являются важной частью систем распознавания речи (Yu & Deng, 2014)[34] и машинного перевода (Koehn, 2010) [17].

Недавно было показано, что нейронные сети (Bengio et al., 2003 [1]; Mikolov et al., 2010 [2]; Jozefowicz et al., 2016 [14]) превосходят классические модели языка n-грамм (Kneser & Ney, 1995 [16]; Chen & Goodman, 1996 [3]). Эти классические модели страдают от разреженности данных, что затрудняет представление больших контекстов и, следовательно, анализ долгосрочных зависимостей. Нейронные языковые модели решают эту проблему путем встраивания слов в непрерывное пространство, над которым применяется нейронная сеть. Современное состояние языкового моделирования базируется на сетях долговременной краткосрочной памяти (LSTM; Hochreiter et al., 1997[12]), которые теоретически могут моделировать сколь угодно длинные зависимости.

В этой статье мы вводим новые управляемые сверточные сети и применяем их к языковому моделированию. Сверточные сети могут быть реализованы для представления контекста большого размера и извлечения иерархических характеристик из больших контекстов по более абстрактным функциям (LeCun & Bengio, 1995 [19]). Это позволяет моделировать долгосрочные зависимости, применяя операции сложности

\mathcal{O} (N / k )

в контексте размером N и шириной ядра k. Напротив, рекуррентные сети рассматривают входные данные как последовательную линейную структуру и поэтому требуют операций порядка

\mathcal {O} (N)

Иерархический анализ входных данных имеет сходство с анализом средствами классических формальных грамматик, построением синтаксических древовидных структур с возрастающей степенью детализации, например, предложения представляются именными и глагольными фразами, каждая из которых включает дополнительную внутреннюю структуру (Manning & Schutze, 1999 [20]; Steedman, 2002 [31]). Иерархическая структура одновременно облегчает обучение, поскольку количество нелинейностей для заданного размера контекста уменьшается по сравнению с линейной структурой, облегчая решение проблемы исчезающего градиента (Glorot & Bengio, 2010 [6]).

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

Было показано, что управление имеет важное значение для достижения рекуррентными нейронными сетями современной производительности (Jozefowicz et al., 2016 [14]). Наши управляемые линейные блоки (GLU) снижают сложность проблемы исчезающего градиента для глубоких архитектур, обеспечивая линейность алгоритма нахождения градиентов при сохранении нелинейных возможностей (раздел 5.2).

Мы показываем, что сверточные сети превосходят и другие, недавно опубликованные, языковые модели, такие как LSTM, обученные в аналогичной обстановке на тесте Google Billion Word Benchmark (Chelba et al., 2013 [2]). Мы также оцениваем способность наших моделей успешно справляться с долгосрочными зависимостями на бенчмарке WikiText-103, для которого модель тестирована на целом абзаце, а не на одном предложении, и достигаем нового уровня знаний на этом наборе данных (Merity et al., 2016 [21]). Наконец, мы показываем, что управляемые линейные единицы (GLU) достигают более высокой точности и сходятся быстрее, чем LSTM-управление Oord et al. (2016 [26]; раздел 4, раздел 5).

2. Подход

В этой статье мы представляем новую модель нейронного языка, которая заменяет повторяющиеся соединения, обычно используемые в рекуррентных сетях, на ограниченные временные свертки. Модели нейронного языка (Bengio et al., 2003 [1]) дают представление

H = [h_0,. . . , h_N]

контекста для каждого слова

w_0,. . . , w_N,

чтобы можно было предсказать следующее слово

P (w_i | h_i).

Рекуррентные нейронные сети f вычисляют H с помощью рекуррентной функции

h_i = f (h_{i 1}, w_{i 1}).

Она по своей сути задает последовательный вычислительный процесс, который нельзя распараллелить по i (вместо этого распараллеливание обычно выполняется над несколькими последовательностями).

Предложенный нами подход свертывает входные данные с помощью функции

f {для получения} H = f w

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

Рисунок 1 иллюстрирует архитектуру модели. Слова представлены векторным вложением, хранящимся в таблице поиска

D^{ | V | e}, где | V | - мощность словаря (число слов), а e - размерность вложения.

Входом в нашу модель является последовательность слов

w_0,. . . , w_N,

которые представлены вложениями слов

E = [D_{w0},. . . , D_{wN}].

Вычисляем скрытые слои

h_0,. . . , h_L

как

где m, n соответственно, количество входов и выходов характеристических карт, а k - размер патча,

X \in \mathbb {R} ^{N \times m} - вход слоя h_l

(либо вложения слов, либо выходы предыдущих слоев),

W \in \mathbb {R}^{k \times m \times n}, b \in \mathbb {R}^n, V \in \mathbb {R}^{k\times m\times n}, c \in \mathbb {R}^n  - изученные параметры, \sigma сигмоидальная функция и \otimes произведение матриц.

При свертке входных данных мы заботимся о том, чтобы

h_i

не содержала информацию о следующих словах. Мы решаем эту проблему путем смещения сверточных входных данных, чтобы ядра не могли видеть будущий контекст (Oord et al., 2016a [25]). В частности, мы обнуляем начало последовательности элементами

k-1,

предполагая, что первый входной элемент - это начало маркера последовательности, который мы не предсказываем, а

k - ширина ядра. Рисунок 1. Архитектура закрытой сверточной сети для языкового моделирования. Рисунок 1. Архитектура закрытой сверточной сети для языкового моделирования.

Выходом каждого слоя является линейная проекция

X W + b, которая модулируется элементами (X V + c).

Подобно LSTM, входы умножают каждый элемент матрицы

X W + b

и контролируют информацию, передаваемую по иерархии. Мы называем этот управляемый механизм закрытыми линейными единицами (GLU). Укладка нескольких слоев поверх ввода E дает представление контекста для каждого слова

H = h_L. . .h_0 (E).

Мы обращаем свертку и закрытый линейный блок (GLU) в остаточный блок предварительной активации, который добавляет к выходу вход блока языкового моделирования со управляемыми сверточными сетями (He et al., 2015a [10]). Блокируется узкое место структуры для обеспечения вычислительной эффективности, и каждый блок имеет до 5 уровней (слоев).

Самый простой выбор для получения прогнозной модели - использовать слой softmax, но этот выбор часто вычислительно неэффективен для больших словарей и приближений, таких, как контрастная оценка шума (Gutmann & Hyvarinen [9]) или иерархический softmax (Morin & Bengio, 2005 [24]). Мы выбрали усовершенствование последнего, известное как адаптивный softmax. Оно дает большее значение (большую важность, больший вес) очень частым словам и меньшее редким словам (Grave et al., 2016a [7]). Это приводит к снижению требований к памяти и к более быстрым вычислениям как во время обучения, так и во время тестирования.

3. Управляемый механизм

Управляющие механизмы контролируют путь, по которому информация обращается в сети, и доказали свою полезность для рекуррентных нейронных сетей (Hochreiter & Schmidhuber, 1997 [12]). LSTMs обеспечивают долговременную память через отдельную ячейку, управляемую входными и забываемыми (стирающимися) входами. Это позволяет информации беспрепятственно проходить через потенциальное множество временных шагов. Без этого информация могла бы легко исчезнуть при преобразованиях на каждом временном шаге. В отличие от этого, сверточные сети не страдают от подобного исчезающего градиента, и мы экспериментально обнаруживаем, что они не требуют забытых (стирающихся) входных данных.

Поэтому рассматриваем модели, обладающие исключительно выходными вентилями, которые позволяют контролировать в сети, какая информация должна распространяться по иерархии уровней. Мы показываем, что этот механизм может быть полезен для языкового моделирования, поскольку он позволяет модели идентифицировать и использовать слова или функции, имеющие отношение к предсказанию следующего слова. Параллельно с нашей работой Oord et al. (2016b [26]) показали эффективность механизма в стиле LSTM формы

tanh (X W + b) (X V + c)

для сверточного моделирования изображений. Позже Kalchbrenner et al. (2016 [15]) расширили этот механизм дополнительными шлюзами для использования при переводе и символьном моделировании языка.

Закрытые линейные блоки (GLU) - это упрощенный механизм управления, основанный на работе Dauphin & Grangier (2015) [35] для недетерминированных входов, которые уменьшают сложность проблемы исчезающего градиента за счет подключения линейных устройств к входам. Это сохраняет нелинейные возможности слоя, позволяя градиенту распространяться через линейный блок без масштабирования. Градиент управления в стиле LSTM, который мы назвали gated tanh unit (GTU), равен

Обращаем внимание, что он постепенно исчезает (по мере того, как мы накладываем слои) из-за коэффициентов уменьшения размера

 tanh ' (X) и ' (X).

Напротив, градиент управляемого линейного блока (GLU)

определяет путь

X (X)

без уменьшения масштаба для активированных управляющих блоков в (X). Это можно рассматривать как мультипликативное соединение пропуска, которое помогает градиентам течь через слои. Мы экспериментально сравниваем различные схемы управления в разделе 5.2 и обнаруживаем, что управляемые линейные блоки (GLU) позволяют быстрее сойтись и решить проблему.

4. Эксперименты

4.1 Входящий набор

Мы изложим результаты для двух общедоступных наборов данных при крупномасштабном языковом моделировании. Во-первых, набор данных Google Billion Word (Chelba et al., 2013 [2]) считается одним из крупнейших наборов данных языкового моделирования, с почти миллиардом токенов и словарем, превышающим 800 тыс. слов. В этом наборе данных слова, встречающиеся менее 3 раз, заменяются специальным символом. Данные основаны на английских 30 301 028 предложениях, порядок которых изменен. Во-вторых, WikiText-103 - это меньший набор данных, содержащий более 100 млн. токенов, со словарным запасом около 200 тыс. слов (Merity et al., 2016 [21]). В отличие от GBW, предложения являются последовательными, что позволяет моделям использовать более объемный контекст, а не отдельные предложения. Для обоих наборов данных мы добавляем маркер начала последовательности <S> в начале каждой строки и маркер конца последовательности </S> в конце каждой строки. В корпусе Google Billion Word каждая последовательность представляет собой отдельное предложение, а в WikiText-103 последовательность представляет собой целый абзац. Модель рассматривает <S> и </ S> как входные данные, но предсказывает лишь конец маркера последовательности </S>. Мы оцениваем модели, вычисляя сложность

 e^{ {\frac1N}\sum_{i}^N \log p(w_i|...,w_{i1})}

на представленном стандарте тестовой части каждого набора данных.

4.2 Обучение

Мы реализуем наши модели в Torch (Collobert et al., 2011 [5]) и обучаем на графических процессорах Tesla M40. Большинство наших моделей обучаются на одном графическом процессоре, поскольку мы сосредоточились на определении компактных архитектур с хорошим обобщением и эффективными вычислениями во время тестирования. Мы обучили более крупные модели с настройкой из 8 графических процессоров, скопировав модель на каждый графический процессор и разделив пакет таким образом, чтобы каждый вычислял 1/8 градиента. Затем градиенты суммируются с помощью Nvidia NCCL. Настройка с несколькими графическими процессорами позволила нам обучать модели с более крупными скрытыми блоками.

Мы тренируемся, используя импульс Нестерова (Sutskever et al., 2013 [32]). В то время как стоимость памяти для хранения другого вектора важна для нас, размерность его значительно увеличивает скорость сходимости с минимальными дополнительными вычислениями по сравнению со стандартным стохастическим градиентным спуском. Скорость сходимости была дополнительно увеличена с помощью градиентного отсечения (Pascanu et al., 2013 [27]) и нормализации веса (Salimans & Kingma, 2016 [28]).

Таблица 1. Архитектуры для моделей. Остаточные строительные блоки показаны в скобках в формате [k, n]. B обозначает узкое место архитектуры. Таблица 1. Архитектуры для моделей. Остаточные строительные блоки показаны в скобках в формате [k, n]. B обозначает узкое место архитектуры.

Паскану и др. (2013) [27] приводят доводы в пользу отсечения градиента, поскольку оно предотвращает проблему скачка градиента, которая характерна для RNN. Однако отсечение градиента не привязано к RNN, поскольку оно может быть получено из общей концепции методов доверительной области. Отсечение градиента обнаруживается с помощью сферической доверительной области

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

4.3 Гиперпараметры

Мы нашли хорошие конфигурации гиперпараметров путем перекрестной проверки со случайным поиском по тестовому набору. Для архитектуры модели мы выбираем количество остаточных блоков между {1,. . . , 10}, размер вложений с {128,. . . , 256}, количество единиц между {128,. . . , 2048}, а ширина ядра - между {3,. . . , 5}. В общем, найти хорошую архитектуру было просто, и эмпирическое правило состоит в том, что чем больше модель, тем лучше производительность. С точки зрения оптимизации, мы инициализируем слоями модели аналогично Каймин (он с соавт., 2015b [11]), их данных с уровнем обучения выборки равномерно в промежутке [1., 2.], для импульса со значением 0,99 и отсечения до 0,1. Хорошие гиперпараметры для оптимизатора довольно просто найти, и оптимальные значения немного изменяются между наборами данных.

5.Результаты

LSTM и рекуррентные сети способны фиксировать долгосрочные зависимости и быстро становятся краеугольным камнем в обработке естественного языка. В этом разделе мы сравниваем сильные модели LSTM и RNN из литературы с нашим управляемым сверточным подходом на двух наборах данных.

Мы находим, что GCNN превосходит сопоставимые результаты LSTM в Google на миллиард слов. Чтобы точно сравнить эти подходы, мы используем одинаковое количество графических процессоров и адаптивную модель вывода softmax (Grave et al., 2016a [7]), поскольку эти переменные оказывают значительное влияние на производительность. В такой настройке GCNN достигает 38,1 тестовой сложности, в то время как сопоставимый LSTM имеет 39,8 сложности (таблица 2).

Таблица 2. Результаты на тестовом наборе Google Billion Word. GCNN превосходит LSTM с таким же приближением выходных данных.Таблица 2. Результаты на тестовом наборе Google Billion Word. GCNN превосходит LSTM с таким же приближением выходных данных.

Кроме того, GCNN обеспечивает высокую производительность при гораздо большей вычислительной эффективности. На рисунке 2 показано, что наш подход закрывает ранее значительный разрыв между моделями, использующими полный softmax и моделями с обычно менее точным иерархическим softmax. Благодаря адаптивному softmax, GCNN требует меньше операций для достижения тех же значений сложности. GCNN превосходит другие современные подходы, за исключением гораздо более объемного LSTM Jozefowicz et al. (2016 [14]), модели, которая требует большего количества графических процессоров и гораздо более затратной с точки зрения вычислений по полному softmax. Для сравнения, самая большая модель, которую мы обучили, достигает 31,9 тестовой сложности по сравнению с 30,6 в этом подходе, но требует обучения только в течение 2 недель на 8 графических процессорах по сравнению с 3 неделями обучения на 32 графических процессорах для LSTM. Обратите внимание, что эти результаты можно улучшить, используя либо экспертный подход (Shazeer et al., 2017 [30]), либо ансамбли этих моделей.

Рисунок 2. По сравнению с современными решениями (Jozefowicz et al., 2016 [14]), в которых используется полный softmax, адаптивное приближение softmax значительно сокращает количество операций, необходимых для достижения заданной сложности.Рисунок 2. По сравнению с современными решениями (Jozefowicz et al., 2016 [14]), в которых используется полный softmax, адаптивное приближение softmax значительно сокращает количество операций, необходимых для достижения заданной сложности.

Другая важная проблема заключается в том, может ли фиксированный размер контекста GCNN полностью моделировать длинные последовательности. В Google Billion Word средняя длина предложения довольно короткая - всего 20 слов. Мы оцениваем WikiText-103, чтобы определить, может ли модель хорошо работать с набором данных, где доступны гораздо более обширные контексты. В WikiText-103 входная последовательность представляет собой целую статью в Википедии, а не отдельное предложение, что увеличивает среднюю длину до 4000 слов. Однако GCNN также превосходит LSTM по этой проблеме (Таблица 3). Модель GCNN-8 имеет 8 уровней по 800 единиц в каждом, а LSTM - 1024 единиц. Эти результаты показывают, что сети GCNN могут моделировать достаточно большой контекст для достижения очень хороших результатов.

Таблица 3. Результаты для отдельных моделей в наборе данных WikiText-103.Таблица 3. Результаты для отдельных моделей в наборе данных WikiText-103.

Мы оценили набор данных Gigaword так же как и Chen et al. (2016 [4]) для сравнения с моделями с полным подключением. Обнаружено, что полносвязная и сверточная сети достигают сложности, соответственно, 55,6 и 29,4. Мы также провели предварительные эксперименты с гораздо меньшим набором данных из банка Penn tree. Когда оцениваем предложения независимо друг от друга, GCNN и LSTM имеют сопоставимую тестовую сложность: 108,7 и 109,3 соответственно. Тем не менее, можно добиться лучших результатов, опираясь на предыдущие предложения. В отличие от LSTM, мы обнаружили, что GCNN хорошо подходит для этого небольшого набора данных, и поэтому отмечаем, что модель лучше подходит для задач более крупного масштаба.

5.1 Вычислительная эффективность

Вычислительные затраты важны для языковых моделей. В зависимости от приложения необходимо учитывать ряд показателей. Мы измеряем пропускную способность модели как количество токенов, которые могут быть обработаны в секунду. Пропускную способность можно максимизировать, обрабатывая множество предложений параллельно для амортизации (сглаживания) последовательных операций. Напротив, отзывчивость (чувствительность) - это скорость последовательной обработки ввода, по одному токену за раз. Пропускная способность важна, потому что она указывает время, необходимое для обработки структуры текста, а скорость отклика является индикатором времени, необходимого для завершения обработки предложения. Модель может иметь низкую отзывчивость, но высокую пропускную способность за счет одновременной оценки множества предложений посредством пакетной обработки. В этом случае, такая модель медленно завершает обработку отдельных предложений, но может обрабатывать много предложений с хорошей скоростью.

Мы оцениваем пропускную способность и скорость отклика для моделей, которые достигают примерно значения 43,9 степени сложности в тесте Google Billion Word. Рассматриваем LSTM с 2048 единицами в таблице 2, GCNN-8Bottleneck с 7 блоками Resnet, которые имеют структуру узких мест, как описано в (He et al., 2015a [10]), и GCNN-8 без узких мест. Блок узкого места заклинивает (разделяет) свертку k > 1 между двумя слоями k = 1. Эта конструкция снижает вычислительные затраты за счет уменьшения и увеличения размерности с k = 1 слоями, так что свертка работает в пространстве меньшей размерности. Наши результаты показывают, что использование блоков узких мест важно для поддержания эффективности вычислений.

Таблица 4. Скорость обработки в токенах. Во время тестирования для LSTM с 2048 единицами и GCNN достигает 43,9 неопределенности на Google Billion Word. GCNN с узкими местами повышает быстродействие в 20 раз при сохранении высокой пропускной способности.Таблица 4. Скорость обработки в токенах. Во время тестирования для LSTM с 2048 единицами и GCNN достигает 43,9 неопределенности на Google Billion Word. GCNN с узкими местами повышает быстродействие в 20 раз при сохранении высокой пропускной способности.

Пропускная способность LSTM измеряется с помощью большого пакета из 750 последовательностей длиной 20, что дает 15 000 токенов на пакет. Отзывчивость - это средняя скорость обработки последовательности из 15 000 смежных токенов. Таблица 4 показывает, что пропускная способность для LSTM и GCNN одинакова. LSTM очень хорошо работает на графическом процессоре, потому что большой размер пакета в 750 обеспечивает высокую степень распараллеливания для различных предложений. Это связано с тем, что реализация LSTM была тщательно оптимизирована и использует cuDNN, тогда как реализация сверток cuDNN не оптимизирована для одномерных сверток, которые мы используем в нашей модели. Мы считаем, что гораздо лучшая производительность может быть достигнута за счет более эффективной 1-мерной свертки cuDNN. В отличие от LSTM, GCNN можно распараллеливать как по последовательностям, так и по токенам каждой последовательности, что позволяет GCNN иметь в 20 раз более высокую реакцию.

Рисунок 3. Кривые обучения на WikiText-103 (слева) и Google Billion Word (справа) для моделей с различными механизмами активации. Модели с закрытыми линейными единицами (GLU) сходятся быстрее и с меньшей неопределенностью. Рисунок 3. Кривые обучения на WikiText-103 (слева) и Google Billion Word (справа) для моделей с различными механизмами активации. Модели с закрытыми линейными единицами (GLU) сходятся быстрее и с меньшей неопределенностью.

5.2 Вентильные (управляемые) механизмы

В этом разделе мы сравниваем управляемый линейный блок с другими механизмами, а также с моделями без управления. Мы рассматриваем управляющий механизм (GTU) в стиле LSTM

tanh (X W + b) (X V + c)

из (Oord et al., 2016b [17]) и сети, которые используют обычную активацию ReLU или Tanh. Управляющие блоки добавляют параметры, поэтому для релевантного сравнения мы тщательно проверяем модели с сопоставимым количеством параметров. На рисунке 3 (слева) показано, что сети GLU сходятся с меньшими затруднениями, чем другие подходы к WikiText-103. Подобно закрытым линейным модулям, ReLU имеет линейный путь, который позволяет градиентам легко проходить через активные модули. Это приводит к гораздо более быстрой сходимости как для ReLU, так и для GLU. С другой стороны, ни Tanh, ни GTU не имеют этого линейного пути и, следовательно, страдают от проблемы исчезающего градиента. В GTU как входы, так и управляющие устройства могут сокращать градиент, когда устройства насыщаются.

Сравнение моделей GTU и Tanh позволяет нам измерить эффект управления, поскольку модель Tanh можно рассматривать как сеть GTU с удаленными сигмоидальными модулями управления. Результаты (Рисунок 3, слева) показывают, что управляющие блоки имеют большое значение и предоставляют полезные возможности моделирования, поскольку существует большая разница в производительности между блоками GTU и Tanh. Аналогично, хотя блок ReLU не является копией блоков управления в GLU, его можно рассматривать как упрощение

ReLU (X) = X (X> 0)

, где входы становятся активными в зависимости от знака ввода. Также в этом случае блоки GLU снижают неоднозначность.

На рисунке 3 (справа) мы иллюстрируем повторение того же эксперимента с большим набором данных Google Billion Words. Мы рассматриваем ограниченный бюджет времени в 100 часов из-за значительного времени обучения, необходимого для этой задачи. Подобно WikiText-103, управляемые линейные блоки достигают лучших результатов в этой проблеме. Существует разрыв примерно в 5 пунктов между GLU и ReLU, что похоже на разницу между моделями LSTM и RNN, измеренными (Jozefowicz et al., 2016 [14]) на одном и том же наборе данных.

5.3 Нелинейное моделирование

К настоящему времени эксперименты показали, что управляемый линейный блок выигрывает от линейного пути, который обеспечивает блок, по сравнению с другими нелинейностями. Затем мы сравниваем сети с GLU с чисто линейными сетями и сетями с билинейными слоями, чтобы измерить влияние нелинейного пути, обеспечиваемого входами GLU. Одним из мотивов этого эксперимента является успех линейных моделей во многих задачах обработки естественного языка (Manning & Schutze, 1999 [20]). Мы рассматриваем глубокие линейные сверточные сети, в которых слои лишены управляемых устройств GLU и имеют вид

h_l(X) = X W + b

Наложение нескольких слоев друг на друга - это просто факторизация модели, которая остается линейной до softmax, после чего она становится лог-линейной. Другой вариант GLU - это билинейные слои (Mnih & Hinton, 2007 [23]), которые имеют форму

h_l(X) = (X W + b) (X V + c).Рисунок 4.Тест неопределенности как функции контекста для Google Billion Word (слева) и Wiki-103 (справа). Мы наблюдаем, что модели с большим контекстом достигают лучших результатов, но результаты начинают быстро уменьшаться после контекста 20.Рисунок 4.Тест неопределенности как функции контекста для Google Billion Word (слева) и Wiki-103 (справа). Мы наблюдаем, что модели с большим контекстом достигают лучших результатов, но результаты начинают быстро уменьшаться после контекста 20.

На рисунке 5 показано, что лучше всего работают GLU, за ними следуют билинейные слои, а затем линейные слои. Билинейные слои улучшаются по сравнению с линейными более чем на 40 точек затруднения, а GLU улучшает еще 20 точек затруднений по сравнению с билинейной моделью. Линейная модель работает очень плохо (115) даже по сравнению с 67,6 языка 5-грамм модели Кнезера-Нея, хотя первая имеет доступ к большему контексту. Удивительно, но введения билинейных единиц достаточно, чтобы достичь 61 недоумения в Google Billion Word, что превосходит как языка 5-грамм модели Кнезера-Нея, так и нелинейную нейронную модель (Ji et al., 2015 [13]).

5.4 Размер контекста

Рисунок 5. Кривые обучения в Google Billion Word для моделей с различной степенью нелинейности.Рисунок 5. Кривые обучения в Google Billion Word для моделей с различной степенью нелинейности.

На рисунке 4 показано влияние размера контекста на управляемую CNN. Мы пробовали разные комбинации глубины сети и ширины ядра для каждого размера контекста и выбрали наиболее эффективную для каждого размера. Как правило, более крупные контексты повышают точность, но возвращаемые результаты резко уменьшаются с окнами прогноза, превышающими 40 слов, даже для WikiText-103, где мы можем использовать всю статью в Википедии. Это означает, что неограниченный контекст, предлагаемый повторяющимися моделями, не является строго необходимым для языкового моделирования. Кроме того, этот результат также согласуется с тем фактом, что хорошая производительность с рекуррентными сетями может быть получена путем усечения градиентов только после 40 временных шагов с использованием усеченного обратного распространения во времени. На рисунке 4 также показано, что WikiText-103 намного больше выигрывает от более широкого контекста, чем Google Billion Word, поскольку производительность ухудшается резко с меньшими контекстами. WikiText-103 предоставляет гораздо больше контекста, чем Google Billion Word, где средний размер предложения равен 20. Однако, хотя средний размер документов близок к 4000 токенов, обнаружено, что высокая производительность может быть достигнута при размере контекста всего 30 токенов.

5.5 Обучение

В этом разделе мы проводим исследование воздействия нормализации веса и ограничения градиента. Отдельно проверяем гиперпараметры каждой конфигурации, чтобы сравнение было справедливым. Из-за дороговизны реализации каждого из этих экспериментов мы рассматриваем только одну итерацию по обучающим данным. На рисунке 6 показано, что оба метода значительно ускоряют сходимость. В частности, нормализация веса увеличивает скорость более чем в два раза. Это ускорение частично связано с возможностью использовать гораздо более высокие скорости обучения (1 вместо 0,01), чем это возможно было бы в противном случае. Как отсечение, так и нормализация веса добавляют вычислительные затраты, но незначительно, по сравнению с большим выигрышем в скорости сходимости.

Рисунок 6. Влияние нормализации веса и градиентного отсечения на Google Billion Word.Рисунок 6. Влияние нормализации веса и градиентного отсечения на Google Billion Word.

6. Заключение

Мы вводим сверточную нейронную сеть для языкового моделирования с новым управляемым механизмом. По сравнению с рекуррентными нейронными сетями, наш подход строит иерархическое представление входных слов, что облегчает использование долгосрочных зависимостей, сходных по духу с древовидным анализом формализмов (фреймов) лингвистической грамматики. Это же свойство облегчает обучение, поскольку объекты передаются через фиксированное число слоев и нелинейностей, в отличие от рекуррентных сетей, где количество шагов обработки различается в зависимости от положения слова во входных данных. Результаты показывают, что наша управляемая сверточная сеть достигает нового уровня техники на WikiText-103. На тесте Google Billion Word мы показываем, что конкурентные результаты могут быть достигнуты при значительно меньшем количестве ресурсов.


Ссылки

Spoiler
  1. Bengio, Yoshua, Ducharme, Rejean, Vincent, Pascal, and Jauvin, Christian. A neural probabilistic language model. journal of machine learning research, 3(Feb):11371155, 2003.

  2. Chelba, Ciprian, Mikolov, Tomas, Schuster, Mike, Ge, Qi, Brants, Thorsten, Koehn, Phillipp, and Robinson, Tony. One billion word benchmark for measuring progress in statistical language modeling. arXiv preprint arXiv:1312.3005, 2013.

  3. Chen, Stanley F and Goodman, Joshua. An empirical study of smoothing techniques for language modeling. In Proceedings of the 34th annual meeting on Association for Computational Linguistics, pp. 310318. Association for Computational Linguistics, 1996.

  4. Chen, Wenlin, Grangier, David, and Auli, Michael. Strategies for training large vocabulary neural language models. CoRR, abs/1512.04906, 2016.

  5. Collobert, Ronan, Kavukcuoglu, Koray, and Farabet, Clement. Torch7: A Matlab-like Environment for Machine Learning. In BigLearn, NIPS Workshop, 2011. URL http://torch.ch.

  6. Glorot, Xavier and Bengio, Yoshua. Understanding the difficulty of training deep feedforward neural networks. The handbook of brain theory and neural networks, 2010.

  7. Grave, E., Joulin, A., Cisse, M., Grangier, D., and Jegou, H. Efficient softmax approximation for GPUs. ArXiv e-prints, September 2016a.

  8. Grave, E., Joulin, A., and Usunier, N. Improving Neural Language Models with a Continuous Cache. ArXiv e-prints, December 2016b.

  9. Gutmann, Michael and Hyvarinen, Aapo. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models.

  10. He, Kaiming, Zhang, Xiangyu, Ren, Shaoqing, and Sun, Jian. Deep residual learning for image recognition. arXiv preprint arXiv:1512.03385, 2015a.

  11. He, Kaiming, Zhang, Xiangyu, Ren, Shaoqing, and Sun, Jian. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification. In Proceedings of the IEEE International Conference on Computer Vision, pp. 10261034, 2015b.

  12. Hochreiter, Sepp and Schmidhuber, Jurgen. Long short-term memory. Neural computation, 9(8):17351780, 1997.

  13. Ji, Shihao, Vishwanathan, SVN, Satish, Nadathur, Anderson, Michael J, and Dubey, Pradeep. Blackout: Speeding up recurrent neural network language models with very large vocabularies. arXiv preprint arXiv:1511.06909, 2015.

  14. Jozefowicz, Rafal, Vinyals, Oriol, Schuster, Mike, Shazeer, Noam, and Wu, Yonghui. Exploring the limits of language modeling. arXiv preprint arXiv:1602.02410, 2016.

  15. Kalchbrenner, Nal, Espeholt, Lasse, Simonyan, Karen, van den Oord, Aaron, Graves, Alex, and Kavukcuoglu, Koray. Neural Machine Translation in Linear Time. arXiv, 2016.

  16. Kneser, Reinhard and Ney, Hermann. Improved backing-off for m-gram language modeling. In Acoustics, Speech, and Signal Processing, 1995. ICASSP-95., 1995 International Conference on, volume 1, pp. 181184. IEEE, 1995.

  17. Koehn, Philipp. Statistical Machine Translation. Cambridge University Press, New York, NY, USA, 1st edition, 2010. ISBN 0521874157, 9780521874151.

  18. Kuchaiev, Oleksii and Ginsburg, Boris. Factorization tricks for LSTM networks. CoRR, abs/1703.10722, 2017. URL http://arxiv.org/abs/1703.10722.

  19. LeCun, Yann and Bengio, Yoshua. Convolutional networks for images, speech, and time series. The handbook of brain theory and neural networks, 3361(10):1995, 1995.

  20. Manning, Christopher D and Schutze, Hinrich. Foundations of statistical natural language processing, 1999.

  21. Merity, S., Xiong, C., Bradbury, J., and Socher, R. Pointer Sentinel Mixture Models. ArXiv e-prints, September 2016.

  22. Mikolov, Tomas, Martin, Karafiat, Burget, Lukas, Cernocky, Jan, and Khudanpur, Sanjeev. Recurrent Neural Network based Language Model. In Proc. of INTERSPEECH, pp. 10451048

  23. Mnih, Andriy and Hinton, Geoffrey. Three new graphical models for statistical language modelling. In Proceedings of the 24th international conference on Machine learning, pp. 641648. ACM, 2007.

  24. Morin, Frederic and Bengio, Yoshua. Hierarchical probabilistic neural network language model. In Aistats, volume 5, pp. 246252. Citeseer, 2005.

  25. Oord, Aaron van den, Kalchbrenner, Nal, and Kavukcuoglu, Koray. Pixel recurrent neural networks. arXiv preprint arXiv:1601.06759, 2016a.

  26. Oord, Aaron van den, Kalchbrenner, Nal, Vinyals, Oriol, Espeholt, Lasse, Graves, Alex, and Kavukcuoglu, Koray. Conditional image generation with pixelcnn decoders. arXiv preprint arXiv:1606.05328, 2016b.

  27. Pascanu, Razvan, Mikolov, Tomas, and Bengio, Yoshua. On the difficulty of training recurrent neural networks. In Proceedings of The 30th International Conference on Machine Learning, pp. 13101318, 2013.

  28. Salimans, Tim and Kingma, Diederik P. Weight normalization: A simple reparameterization to accelerate training of deep neural networks. arXiv preprint arXiv:1602.07868, 2016.

  29. Shazeer, Noam, Pelemans, Joris, and Chelba, Ciprian. Skip-gram language modeling using sparse non-negative matrix probability estimation. arXiv preprint arXiv:1412.1454, 2014.

  30. Shazeer, Noam, Mirhoseini, Azalia, Maziarz, Krzysztof, Davis, Andy, Le, Quoc V., Hinton, Geoffrey E., and Dean, Jeff. Outrageously large neural networks: The sparsely-gated mixtureof-experts layer. CoRR, abs/1701.06538, 2017. URL http://arxiv.org/abs/1701.06538.

  31. Steedman, Mark. The syntactic process. 2002.

  32. Sutskever, Ilya, Martens, James, Dahl, George E, and Hinton, Geoffrey E. On the importance of initialization and momentum in deep learning. 2013.

  33. Wang, Mingxuan, Lu, Zhengdong, Li, Hang, Jiang, Wenbin, and Liu, Qun. gencnn: A convolutional architecture for word sequence prediction. CoRR, abs/1503.05034, 2015. URL http://arxiv.org/abs/1503.05034.

  34. Yu, Dong and Deng, Li. Automatic Speech Recognition: A Deep Learning Approach. Springer Publishing Company, Incorporated, 2014. ISBN 1447157788, 9781447157786.

  35. Dauphin, Yann N and Grangier, David. Predicting distributions with linearizing belief networks. arXiv preprint arXiv:1511.05622, 2015.

Подробнее..

Популярная лингвистика. Часть 1. Маме пиджин, детям креол

01.12.2020 22:06:36 | Автор: admin

Brilliant Mironov


Если вам интересно, что такое пиджин и чем он отличается от креола, на каком языке общаются пришельцы и откуда есть пошёл дотракийский язык, то этот небольшой цикл статей для вас.


Введение


Каждая статья будет посвящена какой-то языковой теме и книге, которую хотелось бы порекомендовать, если вам захочется узнать больше. Итак, сегодняшняя тема контактные языки.


Пиджины


Представьте, что вам повезло и вы родились лет 200-300 назад вблизи границы с другим государством. Вы постоянно контактируете с представителями другого народа, который говорит на своем непонятном вам языке. Чем дольше вы с ними общаетесь и чем сильнее в этом необходимость, тем чаще вы начинаете понимать их слова, а они ваши. Вы отбрасываете и упрощаете грамматику их языка, они вашу. Спустя некоторое время появляется то, что называется контактным языком пиджином. Пиджин ни для кого не родной, словарь его ограничен, его основная цель понять и быть понятым "по-простому". Давайте посмотрим на русские пиджины, существовавшие в 17-20 веках.


Русский + норвежский = руссенорск


Руссенорск был распространен в начале 18-го века на северном побережье Норвегии. Появился, как средство общения между русскими купцами, норвежскими моряками и рыбаками. Всего зафиксировано около 400 слов руссенорска. Язык интересен тем, что из русского и норвежского взято примерно по половине слов этого пиджина.


 Эй, рюсьман, купом сейка, треска, тиска и балдуска.(Эй, русский, давай покупай сайду, треску, пикшу и палтус.) Да, да, моя купом альтсамма. Давай по шип ком.(Да, я куплю все. Заходи на судно.) Басиба! Как твоя мукка? Как твоя группа?(Спасибо! А у тебя есть мука? У тебя есть крупа?) Да, да, моя харь этта. Давай по шип ком, брат, твоя и моя по цай дрикки.(Да, это у меня есть. Заходи на судно, будем чай пить.)

Подный диалог смотри здесь.


Русский + китайский = кяхтинский


Начало 19-го начало 20-го веков в Приамурье, Забайкалье и Маньчжурии. Впервые описан в 1831-м в "Московском телеграфе", как язык для изучения которого у китайских купцов есть "особые словари с русским переводом, написанным китайскими буквами".


Во ке и памагай = Я могу помочьВоды ниды пилюли давай = я дам тебе лекарствоГуляй-гуляй = гулять, развлекаться ()Ерлан = доза спиртного, 100 грамм (от )Куня = девушка

Еще примеры и подробное описание тут


Говорка таймырский пиджин


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


Ну, ну. Завтра встали. Это, конечно, батрак ушёл туда, это купец место.(На следующее утро встали. Батрак, конечно, ушел к купцу.)Купец сидит контора место.(Купец сидит в конторе.)Как тебя голова-место попал?(Как тебе в голову пришло?)

Замечательные примеры взяты отсюда.


У большинства русских пиджинов есть общие черты использование императивной формы глагола как абсолютной ("купи" вместо "купить"), наречия первого и второго лица "моя" и "твоя", порядок слов SOV (подлежащее, дополнение, сказуемое). Взглянув на эти особенности, в уме тут же всплывает хрестоматийное "моя твоя не понимай".


Креолизируй это


Теперь представьте, что вы родились во времена колониальных империй, но родились не на стороне завоевателей, а на стороне завоеванных. И вас, как и прочих бедолаг из других стран свезли на плантации, работать во имя королевы, императора и бог весть кого ещё. В такой пестрой языковой среде на основе языка-лексификатора сперва появляется пиджин. Для следующего поколения он может стать уже родным, материнским языком. Так пиджин становится креольским языком или просто креолом.


У креольских языков также зафиксированы общие черты, например порядок слов SVO ("я программирую на плюсах"), мало гласных (как правило, не больше пяти), гораздо больший чем у пиджинов словарь.


Несмотря на то, что креольские языки не являются очень старыми (300-400 лет), они не являются взаимопонятными со своим языком-лексификатором (чаще всего это английский и французский). Например, вот перевод фразы "The dog of the man who lives in that house is named King" ("Собаку человека, который живет в этом доме, зовут Кинг") на несколько англо-креольских языков Атлантики.


язык перевод
Сарамаккан di dagu fu di womi dati di libi n a wosu de a king
Гайянский a man wa liv a da hous dag neem king
Ямайский di maan wa lib iina da hous daag nyem king
Барбадосский di dog da bilong tu di man da liv in da hous, i neem king
Крио di man we tap na da os dog nem king

Пример взят отсюда.


После получения колонией независимости, государственным языком вполне может стать креольский. Так случилось с Гаити, куда в 18-м веке свезли столько невольников, что их стало в 10 раз больше чем свободных людей. Сейчас на гаитянском креоле говорят около десяти миллионов человек. На нем есть литература и он уже не раз за свою недолгую историю подвергался облагораживанию и стандартизации.


Книга на выходные


Chel


Дмитрий Казаков, "Человек языкатый". Книга вышла в этом году и очень меня впечатлила. Состоит она из рассказов про искуственные языки это и артланги (клингонский, на'ви, дотракийский), и мистические языки (Lingua Ignota, енохианский, белейбелен), и языки с мировыми амбициями (эсперанто, волапюк, логлан), и многие другие. Ещё отмечу, что автор очень удачно сгруппировал языки и пишет без излишнего академизма.


На этом все, в следующий раз пройдемся по языкам, сделанным на заказ, но с любовью.

Подробнее..

Make strands, stay connected

17.01.2021 12:19:01 | Автор: admin

Мой первый пост. Меня зовут Алан и я хочу рассказать Вам, дорогие читатели и слушатели, чем мы занимаемся в образовательном проекте EnglishDreamTeam. Проект призван помочь людям интуитивно и легко учить языки. Буду рад, если Вы послушаете мои мысли, а также с радостью выслушаю Ваши и отвечу на них.

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

Мой внутренний nerd (nerd ботан, человек заинтересованный умственной активностью) и geek (geek* человек, которого унижают в школе, а потом ты устраиваешься к нему на работу)ликуют, ведь я расскажу вам о личном опыте использования видеоигр в качестве инструмента для изучения английского и французского языков (продолжаю себя обманывать).

*Borrowed fromUrban Dictionary. Check that website to find more cool slang phrases.

Minecraft. The picture is taken from official Xbox website.Minecraft. The picture is taken from official Xbox website.

Начнём с серьёзного. В детстве мнемоглипоставить диагноз аутизм я считал абсолютно нормальным проводить часы напролёт собирая конструктор LEGO, не обращая внимания на окружающий меня мир и минимизируя общение с другими человеческими существами. Диагноз опровегли. Но трудности в общении были и есть всегда, и я до сих пор с этим борюсь. Доходит до того, что иногда я не хочу знакомиться с людьми только потому, что я их не видел и не слышал. Я плохо понимаю шутки и мне сложно смотреть людям в глаза, но я учусь и буду продолжать работать над собой. Я раскрываюсь перед вами только для того, чтобы показать, что я имею представление о данной теме, следовательно, могу говорить о ней с юмором и толикой иронии.

Майнкрафт (Minecraft) популярная онлайн-игра, в которой вы можете быть творцом. Построить свой дом, башню, а порой и целые города сможет любой желающий (при должной фантазии, конечно же). Объединяйтесь с другими игроками, торгуйте или соперничайте за ресурсы, здесь вам решать кем вы хотите стать в дивном новом виртуальном мире. Есть одна проблема bully.

Bully
Somebody whohurtsothers either physically, mentally or emotionally. They canruina persons life, just to make themselvesfeel better

Source:https://www.urbandictionary.com/define.php?term=Bully

Bully or bulling термины, которые употребляются для обозначения людей, которые причиняют физическую, моральную или эмоциональную боль остальным ради собственной выгоды или для того, чтобы почувствовать власть над другими. Ввиду доступности и популярности Minecraft туда хлынул поток разных личностей: есть те, кто хочет общаться и находить друзей; те, кто уже играет с друзьями или даже семьями; а ещё те, кто стремится причинить боль другим.Trollsand bullies, эти ужасные люди заполоняют сервера, уничтожают чужие постройки, крадут вещи, обзывают и убивают вашего персонажа снова и снова. Доходит до того, что у вас пропадает желание играть, что абсолютно естественно. А иногда это приводит к самоубийству на почве депрессии.

Человек обижается или его обижают? спросила однажды моя добрая знакомая психолог. Ранить человека легко. Ранить человека с аутизмом, который хуже других распознаёт эмоции ещё легче.A bullyв состоянии сказать аутисту, что он defect (дефективный), retard (умственно отсталый), society does not want them (что обществу не нужны такие как они).

Стюарт Дункан (Stuart Duncan) является героем многих родителей и их детей с аутизмом. С помощью сервера AutCraft, который он организовал в 2013 году, он осуществляет поддержку всех желающих, кому был поставлен диагноз. Дети и взрослые вместе у них получилось создать безопасное пристанище для всех нуждающихся. Они налаживают связь, учатся контактировать и воспринимать друг друга, узнают мир через призму игры. У Дункана и двоих его детей тоже аутизм, но, сплотившись, они работают над тем, чтобы всем на сервере было комфортно, а участники смогли почувствовать себя настоящими людьми.

Я рекомендую вам посмотреть его выступление на конференции TED Talk.

How to find a friend

Вы удивитесь насколько легко можно найти себе друзей, играя в видеоигры. Ярким и ставший культовым представителем жанра был и остается World Of Warcraft.

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

At work I am a simple office clerk, but here I am Falcorn, Defender of The Alliance.At work I am a simple office clerk, but here I am Falcorn, Defender of The Alliance.

Популярный британский игровой комментатор Джон Бейн (John Peter Bain), известный под псевдонимомTotalBiscuit,однажды поделился историей о том, как человек, устраиваясь на работу указал, что былguild master(управляющий гильдией) в игре World of Warcraft. Работу он получил. Для того, чтобы управлять большим количеством людей, требуются развитые социальные навыки и стратегическое мышление, умение работать в команде и анализировать обстановку.

John Peter Bain a,k.a. TotalBuscuit. Laughing champion. Long may his soul be remembered.John Peter Bain a,k.a. TotalBuscuit. Laughing champion. Long may his soul be remembered.

Система гильдий в игре располагает участников к общению, даёт возможность лучше узнать друг друга и проверить, можно ли положиться на товарища по команде в бою. Мои знакомые любители Warcraft смогли найти себе компаньонов и компаньонок из Европы и Азии для совместной игры. Это не только привело к культурному обмену, совместному изучению языков, но и к продолжительной дружбе, которую они ценят и по сей день.

Gameplay and learnplay

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

Начну с критерия, которым меня пугали мои родители:Alan's mum is trying to be angry: Playing these gamesis bad for your eyes(негативно влияет на твоё зрение)

В 2012 году Даффна Бавельер (Daphne Bavelier) и её команда провели ряд исследований касательно качества зрения среди не-игроков и игроков в онлайн-шутеры.

online-shooter a video game that teaches you not to kill opponents, but how tooutsmartthem using different tactical decisions

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

Есть два важных аспекта, о которых следует поговорить. Во-первых, благодаря таким играм вы способны ориентироваться в общем хаосе и замечать более мелкие детали среди происходящего. А во-вторых, любители шутеров способны лучше различать оттенки серого цвета, что позволяет им быстрее заметить приближающийся в тумане автомобиль, если позволите привести этот пример. Не поленитесь и посмотрите видео ниже. Как-никак, Мадам Бавельер видный профессор и выпускница Массачусетского Технического Университета; это место и люди, связанные с ним, вызывают у меня глубокое почтение и восхищение. Посмотреть видео можно здесь.

Your Brain On Video Games from TED ConferenceYour Brain On Video Games from TED Conference

Критерий 2: Игры ничему не научат

Позвольте рассказать вам, дорогие мои слушатели и читатели, небольшую историю.

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

Я не спал всю ночь. Всё, что я делал это играл в эту замечательную игру под названием Sid Mayer's Civilization V. Игра в жанре turn-based strategy (пошаговая стратегия), со встроенной энциклопедией, где описаны важные для той или иной страны события, видные деятели, вооружение, экономика, техника, право словом всё, что нужно знать маленькому любителю истории.
Так получилось, что я играл за Англию, строил козни Франции, конструировал флот, а ещё читал. Читал про английские законы и право, читал про видных политиков, читал про Первую мировую войну и роль страны во всемирной истории.

Spoiler alert! Неумытый, небритый и сонный молодой человек получил твёрдую пятёрку за экзамен. Мне достался вопрос Великобритания и её роль в современных международных отношениях. Британское право.

Sometime ago I was Elizabeth, the great English Queen.Sometime ago I was Elizabeth, the great English Queen.

Критерий 3: Изучение языков

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

Я выбрал жанр RPG или role-playing games (ролевые игры). Жанр, в котором сотни часов диалогов, где приходится выбирать себе доспехи, оружие, крафтить (от англ. to craft мастерить, создавать) предметы. Я выбрал то, где языка много, и каждая секунда это погружение в языковую среду. Никто не говорит вам, что первые часы будут лёгкими, вам придётся усердно напрягать слух, а ещё сидеть со словарём, но дайте себе шанс. Пройдёт неделя и вы обнаружите, что понимаете уже чуть больше обычного. Знакомые слова будут всплывать всё чаще, а ориентироваться в мире станет легче.

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

В каждом из нас заложена уникальная способность распознавать gibberish (тарабарщину) и с помощью неё строить пирамиды из сложных конструкций, пока мы пытаемся доказать слушателю, что мы не Je ne pa parle Franais или I do not speak English. Немых племён ещё никто никогда не находил. Язык не есть культурное изобретение, но продукт уникального человеческого инстинкта.

No mute tribe has ever been discoveredlanguage is not a cultural invention, but the product of a special human instinct

Steven Pinker The Language Instinct, p.13-14

My first full-English game. Kindgoms of Amalur.My first full-English game. Kindgoms of Amalur.

Death Stranding

Пожалуй, самой удивидельной игрой прошлого года стал проект японского геймдизайнера Хидео Кодзимы и мексиканского кинорежиссера Гильермо Дель Торо. Главные роли исполнили: великолепный Мадс Миккельсон, потрясающий Норман Ридус, очаровательная Леа Сейду, загадочная Линдси Вагнер, отменный режиссер Николас Виндинг Рефн, красавица Маргарет Куили и многие-многие другие.

Spoiler alert! Без спойлеров, но с описанием базовых механик игры.

Сюжет игры разворачивается в мире после глобальной катастрофы, известной как Death Stranding (Смертельный выброс). Люди разрознены и живут в бункерах, а единственные посетители мест портеры (porters) или курьеры, которые доставляют грузы разной степени важности: от еды, медикаментов и одежды до древних археологических ископаемых.

Играя за одного из доставщиков, вам предстоит пробежаться по постапокалиптическому миру, чтобы восстановить связь между остатками человечества и выяснить причину Death Stranding.

Слово stranding поистине примечательное:to be stranded выброшенный, выкинутый на берег или попросту потерянный;a stranded animal термин, употребляемый по отношению к морским животным, которых выбрасывает на сушу;a strand нить, связующее звено.

Важным аспектом игры является косвенное присутствие других игроков в онлайн-режиме. Вы можете найти построенный мост, оставленное другими транспортное средство или снаряжение. В игре присутствуютлайки(likes), но нельзя ставитьдизлайки(dislike), система поощрения построена на вежливости и кооперации. А ещё там великолепная музыка от группы Low Roar и пейзажи, напоминающие Карелию.

When you walked outside after self-isolationWhen you walked outside after self-isolation

Поговорив сегодня об аспектах и влиянии видеоигр, важно будет упомянуть, насколько же прекрасен бывает сюжет и чему он учит. Death Stranding учит общаться не прибегая к словам, учит тому, что мы связаны друг с другом, несмотря на наши различия. Учит, что мы можем добиться великого, если будем работать сообща преодолевая трудности, шаг за шагом стремясь к тому, чтобы сделать наш мир лучше.

Хочу выразить отдельную благодарность моим близким друзьям за чтение и изучение статьи перед публикацией. Я использовал свой опыт и собственные мысли равно как и знания и опыт других любопытных умов.

Отдельное спасибо Анастасии Федченко за вдохновение и поддержку, Светлане Кулагиной за весомый вклад в формировании финальных мыслей о Death Stranding, Alan Alden рассказал о TotalBuscuit и его истории, подчеркнул, почему озвучка в играх важна и как она влияет на формирование акцента играющего, моей дорогой коллеге Маше Зоткиной за редакцию и финальные правки.

Буду рад услышать о Вашем опыте взаимодействия с видеоиграми в комментариях. Let us stay connected.

DreamTeam always welcomes everyone who wants to stay connected. Stay safe and learn playing.

Always yours,
DreamTeam

Created by Alan Yagodin

Подробнее..

Use your instincts. Be a child

24.01.2021 12:05:35 | Автор: admin

Мне всё чаще задают вопрос, который неуклонно ставит меня в тупик: Как мне выучить язык? Вопрошающая прожигает меня взглядом в ответ на минутное молчание, словно я отвечу на это утверждение быстро и чётко как прилежный ученик, который заучил ответ ещё в школе, но не удосужился понять сути.
Позвольте же мне найти для вас, пытливых и талантливых умов, подобие разгадки, развеять некоторые мифы и, надеюсь, обратить ваши пылающие взгляды на великих мыслителей иlinguistic*punduits(перевод:экспертов в области лингвистики) современности, в частности, Стивена Пинкера (Steven Pinker) и Ноама Чомски (Noam Chomsky).

Меня зовут Алан Ягодин и это моя вторая статья на Хабр. Вместе с моей коллегой Машей Зоткиной мы продвигаем идею доступного и интуитивного образования в нашем маленьком проекте EnglishDreamTeam. Хочу сказать спасибо, что читаете и слушаете. Надеюсь, что мои мысли окажутся полезными для вас.

The crab that played with the sea and a child: do they have the same language? The picture is taken from wonderful minds of TED-ED Do Animals Have Language?The crab that played with the sea and a child: do they have the same language? The picture is taken from wonderful minds of TED-ED Do Animals Have Language?

Выделяют 4 свойства, определяющие язык: Discreetness (Дискретность), Displacement (Смещение), Grammar (Грамматика) и Productivity (Продуктивность).
1.Discreetness дискретный или дробный данное понятие делит язык на несколько составляющих частей. Благодаря этой особенности, мы комбинируем ограниченное количество различных звуков вместе и создаём бесконечные структуры из слов, фраз, идиом, сложных предложений.
2.Displacement позволяет нам говорить о событиях прошлого, настоящего и будущего, а также выдумывать и грезить о вымышленном.
3.Grammar свод правил и законов языка. Некоторые учителя прививают любовь к грамматике со школы, которая в последствие сводит с ума бедных детей вроде меня.
4.Productivity количествоmumbo-jumbo(слова не имеющие значения или сильно смущающие слушателя), которые вы можете произвести за единицу времени.

Животным присущи некоторые из выделенных признаков.

Дискретностьнаблюдается у шимпанзе и горилл, которые способны освоить простой язык жестов и понимать вплоть до пары тысяч слов разговорного языка. Пчелы исполняютwaggle dance(виляющий танец), сообщающий о местонахождении вкуснейшего нектара; они также осознают концепцию 0, как отсутствия чего-либо (the concept of zero), что характерно для понятияDisplacement. В отличие от перечисленных животных, крабы говорят только о текущих условиях, и для них нет необходимости подчинятьсяграмматике порядок сообщений для нас кажется случайным.Продуктивенли разговор гориллы с человеком? Безусловно. Но занимательнее всего то, что обезьяны демонстрируют понимание концепции прошлого (обезьяна Коко могла выразить горечь утраты своего котенка с помощью языка жестов; посмотрите её разговор с Робином Уильямсом из видео ниже), а также вполне комфортно чувствуют себя, заимствуя человеческую систему языка и символы.

Среди свойств, определяющих язык, я бы хотел подробнее остановиться на грамматике. Ведь мы все мечтаем выучить Present Simple без этого ведь никак нельзя быть уважающим себя собеседником. Каждый говорящий, который использует в предложении Present Simple, должен держать у себя в голове 4 правила:

Находится ли подлежащее (subject) в третьей форме: He walks против I walk.

Стоит ли подлежащее во множественном или единственном числе: He walks против They walk.

В настоящем ли времени происходит действие: He walks против He walked.

Является ли действие привычным или оно происходит в момент говорения: He walks to school против He is walking to school.

Объяснять такую сложную концепцию ребенку кажется пустой тратой времени. Тем не менее, существуют педагоги, которые занимаются только этим и ничем иным, пытаясь доказать, что тесты по грамматике важны и без них вы не будете образованным. Как вы уже увидели из описания свойств языка, грамматика не является исчерпывающим фактором. Даже если вы освоите эти 4, казалось бы, простых для взрослого ученика правила из Present Simple, вам встретятся ситуации, которые будут выбиваться из грамматических норм: Iwaswalkingto school, but suddenly a big scary dogjumpsat me! Ребёнок, которого напугала собака в прошлом, пытается изобразить ситуацию в настоящем, чтобы собеседник прочувствовал его эмоции. Но, окажись вдруг глагол с окончание -y, как ребёнок сможет распознать, что необходимо заменить данный суффикс на -ie и добавить -s, если подлежащее находится в третьем лице: He worriesme. There was no dog. Оказывается, что ребёнок может.

Классический пример Ноама Чомски строится на логике перестановки слов из *declarative sentence(декларативное предложение) в *corresponding question(аналогичный/соответствующий вопрос).

a unicorn is in the garden.

is a unicorn in the garden?

Для нас понятно, что глагол to be нужно поставить на первое место, чтобы построить вопросительное предложение. А что насчёт такого примера: A unicorn that is eating a flower is in the garden. Здесь присутствуют два is. Какое из них следует переставить или убрать?

A unicorn that is eating a flower is in the garden.

isa unicorn that eating a flowerisin the garden?

Кажется, что здесь что-то пошло не так. Почему мы оставляем дваis, а куда можно убрать? А как ребенок сможет понять, что ему выкинуть, а что оставить? Слушая речь взрослых и других детей, юные искатели приключений копируют языковое поведение своего окружения.
Окружение тетушки Мей из штата Южная Каролина состоит из представителей Black English Vernacular (сокр. BEV Афроамериканский английский). Дети слушают взрослых, переспрашивают снова и снова, постепенно формируя собственное сознательное и подсознательное понимание языка.

Now just how crazy is dat? White folks uh hear dey kids say sump'n, dey say it back to 'em, dey ask 'em 'gain and 'gain 'about thingsAunt Mae from South Caroline Piedmont to anthropologist Shirley Brice Heath

В другом примере дошкольница под псевдонимом Сара, родители которой получили среднее образование (прим.автора образование родителей частично влияет на формирование языка у ребёнка; существуют примеры, когда ребёнок полностью игнорировал грамматические ошибки взрослого окружения), неосознанно следует законам английской грамматики:

Donna teasesall the time and Donna has false teeth.It lookslike a donkey face.Do you have a real baby that saysgoogoo gaga?

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

Мамочка, эта кашка так илипнетко мне.

Когда я попросил девочку объяснить почему она считает кашку липкой, она ответила: Я сказала это, потому что очень сильно люблю кашу!

Существует мнение, что мы приобретаем язык благодаря Mothereseили baby talk упрощенному методу общения матери с ребенком путем постановки простых вопросов и ответов: Is it a doggie? Yes, it is a doggie! Безусловно, общение в раннем возрасте необходимо ребенку, однако, в ряде культур с детьми разговаривают крайне мало, тем не менее, они всё равно говорят и общаются со сверстниками, каждый в своё время. Немых племен ещё никто не находил. Мы не учим детей грамматике, равно как и сидеть за столом (разве что, прямо) или спать лежа, но маленькие лингвистические дарования не перестают это делать. Сегодня есть все основания полагать, что язык является врожденным навыком (innateability), но требующим языковой подпитки на ранних этапах взросления (language acquisition). Доподлинно неизвестно, как мы усваиваем языки. Мы делаем это естественно, не прилагая усилий, а затем нам говорят, что нужно учить Present Simple, и всё возбуждение разом спадает. Я бы не хотел дать умереть вашему языковому гению, поэтому хочу предложить несколько интуитивных и понятных способов для постижения языка (да-да, и грамматики тоже).

P.S. Большинство мыслей были изъяты из великолепной книги Стивена Пинкера The Language Instincts (стр.28-33). Мысли Пинкера были тщательно переведены, аккуратно выстроены для того, чтобы позволить мне кидаться этой статьёй во всех, кто задаёт мне вопрос Как мне выучить язык?

This is how I feel writing this article. If anyone knows who created this awesome picture, please let me know. Rights do not belong to me nor to English Dream Team.This is how I feel writing this article. If anyone knows who created this awesome picture, please let me know. Rights do not belong to me nor to English Dream Team.

Усвоение языка с поразительной скоростью заканчивается в возрасте от 12 до 13 лет. Увы, если вам больше, то придется поработать над собой. Но никто не говорит вам, что работа должна быть тягостной и мучительной. Для упрощения, мы рассмотрим самостоятельное обучение на примере английского языка.

1.Если вы только начинаете путешествие, то отриньте грамматику в данный момент она вам не нужна. Вместо этого начните смотреть сериалы и мультфильмы, слушать подкасты, кулинарные шоу, которые давно откладывали (быть может, вы хотите их пересмотреть), на изучаемом языке. При возможности смотрите с субтитрами, только не русскими; в Китае практически все иностранные фильмы субтитрируются. В результате, иностранные языки знают далеко не все. Сейчас там огромный спрос на учителей; мозгу проще читать уже известное, чем пытаться слушать неизвестное. Приучите себя слушать каждый день. Это позволит вам укрепить ваши аудиальные навыки, даст понять, как язык ведёт себя в потоке речи, а также позволит вам расслабиться.

Примеры того, что я смотрю и разбираю на уроках со своими студентами: Munchies, Over The Garden Wall, Joe Rogan podcasts

2. Начните читать и писать. Возьмите художественную книгу (адаптированную или нет это решать вам), которую давно хотите прочесть, а также заведите тетрадь для записи ваших мыслей. Используйте Google переводчик, Мультитран, Context Reverso, чтобы быстро получать доступ к переводу. Упомянутые исследования Ноама Чомски о фразовом строении языка подсказывают нам, что мозг не разделяет язык на отдельные слова, но делит на фразы. Если вы запомните слово вне контекста, в другом примере, это слово может кардинально поменять своё значение. Заведите дневник и используйте фразы или предложения из книги.

P.S. Обратите внимание на выделенныежирным шрифтом слова со знаком* я использовал их в статье, чтобы освоить новые выражения, и, тем самым, прочнее закрепил их в моём активном вокабуляре.

3. Общайтесь. Заведите друзей на Facebook, Twitter илиInterPals, начните играть в видеоигры в команде (подробнее про влияние видеоигр на изучение языков я описал в предыдущей статье). Говорите как можно больше. Сейчас проще завести друзей из другой страны, чем вы думаете.

4. Подберитесь к грамматике удобным для вас способом, когда прочитаете книгу, посмотрите мультфильм и наберетесь языкового опыта. Секрет в том, что вы никогда не заговорите или зазвучите как носитель. Но минимизировать грамматические ошибки можно и нужно путём чтения: ваш мозг запоминает строение предложений и фиксирует, где поставить -s или -ing самостоятельно.

Рекомендую к просмотру:Virginia Bowulf English Studies,EngVid(выберите себе подходящего учителя из США, Канады и Британи; ниже несколько примеров)


Быть может, мы не так уникальны, как привыкли о себе думать, и окажется, что крабы или дельфины (thanks for the fish) удивительным образом превосходят нас в общении. Всё же, с рождения мы наделены поразительным навыком, способным творить историю, врать с трибуны, описывать далекий космос или решать уравнения и регулировать споры с помощью диалога. Казалось бы, в эпоху, когда мы получили доступ к тому, чтобы общаться с целым миром, мы должны были научиться лучше понимать друг друга. К сожалению, именно сейчас, когда умение анализировать и сопоставлять информацию, видеть логические ошибки и грамотно выражать свои мысли и чувства востребовано, как никогда раньше, нас по прежнему учат, что мы способны этим овладеть только после грамотного изучения и прохождения тестов по Present Simple.

Статью подготовил: Алан Ягодин
Редактор: Мария Зоткина

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru