Введение в искусственный интеллект
331 subscribers
63 photos
2 videos
170 links
Просто об искусственном интеллекте и его возможностях. Помогу разобраться в базовых понятиях и создать собственную нейросеть. Рассказываю, что у ИИ под кожей.
Елена Михалькова
Download Telegram
Ну что, коллеги, выпустим постов и проводим 2024 год. Итак, анонс на декабрь:

7️⃣ К истории термина LSTM. Лингвистический след в нейронках
1️⃣1️⃣ Почему токены меньше слова. И какие секреты модели может раскрыть ее токенизатор
1️⃣4️⃣ Сравнение инструментов OCR (новые карточки от Александра 🐝)
1️⃣8️⃣ Что такое “читабельность” текста и как ее измерить?
2️⃣1️⃣ Делаем корпуса параллельными при помощи Bert
2️⃣5️⃣ Структурирование неструктурированного - ИИ-горизонты современных баз данных
2️⃣8️⃣ Александр 🐝 делится своим проектом: словарь тибетского языка и его диалектов
3️⃣1️⃣ Традиционное поздравление Елены Владимировны 🥂Мой новогодний дзынь!🎄🎉

А еще скоро у нас будет анонс мероприятия и пара лайфхацков. В общем, не переключайтесь 📺
6🔥1
К истории термина LSTM. Лингвистический след в нейронках

Мне всегда было сложно понять, в чем ценность суммаризации - сведения текста к его выжимке, краткому содержанию, сути (по-английски обычно используют термин gist, джист). С моей точки зрения, текст - это такая же целая штука, как животное или растение. Вот в чем суть (gist) ромашки или воробья? И разве можно суммаризировать встречу Болконского с дубом? Но если отойти от сути джиста, то можно представить ситуации, в которых большой текст нужно свести к малому для какой-то цели. Я в таких случаях вспоминаю свой 11 класс. Экзамен по русскому сдавать надо, а “Войну и мир” читать времени нет. Следовательно, берем краткое содержание и делаем вид, что читали полный текст - проверять все равно будут по отдельным значимым фактам либо по аргументам из учебника литературы, которые приходится учить, т.к. оспариванию внутри системы образования они не подлежат. Получается, суммаризация отвечает на вопрос: что в среднем останется в голове у множества людей, после того как они прочтут текст? В статье “Toward a Model of Text Comprehension and Production” (“К модели восприятия и создания текста”, 1978 г.) Уолтер Кинч и Тойн ван Дейк, знаменитые американские дискурсологи, называют этот остаток “текстобаза” (text base, текст бейз). Что мы имеем в сухом остатке после чтения текста? Кинч и ван Дейк предполагают, что это то, что нельзя мысленно достроить на основании прошлого опыта. Например, если Иван Царевич прискакал к камню, значит, у него есть лошадь и он умеет ездить верхом. Ехал он, скорее всего, по дороге. А вот понять, сам он поехал или его отправили за чем-то, мы не можем, поэтому информация, что его отправил Царь-отец за молодильными яблоками тоже является частью вселенной текстобазы. Еще важно отметить, что эта информация как бы связывает текст воедино - без нее джист рассыпается, не ощущается как нечто цельное, осмысленное и истинное. Кинч и ван Дейк считают, что, когда мы читаем текст, мы складываем его небольшими кусочками (скорее всего, предложениями) в кратковременную память (short-term memory, шот-тём мЕмори), а потом после отсечения всей информации, которую можно восстановить или додумать, мы складываем текстобазу в долговременную память (long-term memory, лон-тём мЕмори). Причем отгрузка в долговременную память происходит, когда у нас закончился буфер в кратковременной. Вдохновившись работами дискурсологов… Точнее, не вдохновившись, т.к. они их не цитируют, Зепп Хохрайтер и Юрген Шмидхубер в статье “Long short-term memory” (“Долго-кратковременная память”, сокращенно LSTM) воплотили этот принцип в одноименном алгоритме. А за несколько лет до них в 1994 г. Йошуа Бенжио со товарищи признали, что, если при обучении нейросети вида RNN не сгружать кратковременные последовательности (sequences, сиквенсиз), которые репрезентируют информацию, из памяти, то их представление в сети как бы “затухает”. На деле получается, что ЭВМ не хватает памяти и возможностей хранить оооочень длинные последовательности чисел, которые представляют собой репрезентацию сущностей и связей между ними (это называется "затухание градиента").
Вот что интересно. Если бы Бенжио, Хохрайтер и Шмидхубер прочитали статью Кинча и ван Дейка, то быстрее сообразили бы, как сделать LSTM из RNN. С другой стороны, они могли зачитаться и перегрузиться теорией дискурса и вместо разработки нейросетей сидели бы и откисали где-нибудь на пляже. У меня есть статья, где я пересказываю несколько идей Кинча и ван Дейка - я точно помню, что я писала, вдохновившись их статьей, но я… забыла процитировать ее в списке литературы! Остается только понять и простить - Бенжио, Хохрайтера, Шмидхубера и меня 😅

#база #эссеиистика
🔥3
А вы модель учить могли бы на тройке ирисовых групп

А что это у вас на носу? Правильно, Новый год 🎄 Если вдруг к 29 декабря вы успеете совершить все приготовления, купить овощи и колбасу для оливье 🥗 (я, кстати, с индейкой готовлю), отдраить плинтусы и нарядить елку, то приходите к нам на Новогодний NLP-огонек! 💫 А если не успеете, то подключайтесь онлайн и слушайте нас в наушниках 🎧, пока пылесосите кота.

Что будет? Два коротких воркшопа по 30 минут “Обзор технологий Text-To-Speech (TTS)” и “Распознавание каламбуров при помощи TTS”. После каждого воркшопа 15 минут решаем практическое задание. Во время и после воркшопов будем пить чай с имбирным печеньем🍪 и делиться лайфхаками и историями из жизни искусственного интеллекта и компьютерной лингвистики👾

Где и когда?
29.12.2024 (воскресенье), 13:00–14:30
DISCIPLINA COFFEESHOP на ул. 8 Марта, 2/1 (1 этаж Школы перспективных исследований ТюмГУ)

Что еще за Новогодний NLP-огонек, и кто это все делает? Мы, то есть я👩‍🏫, мои соавторы этого канала Артем Пищулин👨 и Александр Жмыхов🐝, студентка магистратуры “Прикладная лингвистика” в ТюмГУ Лилия Свинцицкая🪷 и моя коллега из Европейского университета в Санкт-Петербурге Яна Сосновская🌲, зовем всех неравнодушных к NLP и компьютерной лингвистике на воскресные митапы-посиделки. Проходить они будут 1-2 раза в месяц оффлайн в Тюмени. И еще можно подключиться онлайн. Называется наш NLP-кружок Quick-to-Code. Присоединяйтесь к каналу в тг, где можно будет следить за новостями и объявлениями кружка.

🚶‍♀️‍➡️🚶‍♂️‍➡️Просто приходите 29-го без смс и регистрации (или подключайтесь по ссылке, которая будет в канале кружка).
8🔥3👍1
Сравнение инструментов OCR

Ранее мы с Александром писали про инструмент распознавания текста (OCR) Tesseract. Сегодня у нас новые карточки. На этот раз мы провели сравнение Тессеракта с двумя другими - ABBYY FineReader и EasyOCR. И поняли, что сравнивать инструменты OCR по качеству распознавания картинки довольно бессмысленно. Во-первых, они все развиваются, так что сегодня качество одно, завтра - лучше. Во-вторых, они по-разному доступны: за какие-то нужно платить, а какие-то прогать, настраивать и дообучать, но качество будет как у платных. В-третьих, многое зависит от ваших данных. В общем наш непрошенный совет такой: работайте с тем, что есть и что вам милее 🥰 По сути это и не совет никакой. Зато в наших карточках вы, возможно, узнаете что-то новое про старый-добрый OCR.
И, конечно, куда же без ноутбучека. На этот раз запускаем и тестим EasyOCR.

#notebook #карточкИИ
4👍2
Что такое “читабельность” текста и как ее измерить?
Кажется, в предновогодней суете мы пропустили пост про токены - он выйдет следующим.

Возвращаясь ко Льву Толстому, почему “Войну и мир” так трудно читать? Не только в старших классах; в любом возрасте читатели хвастаются, если осилили ее. Один из отягчающих факторов - знаменитые толстовские предложения.
Почему длинное предложение тяжело читать? Уважаемые читатели, возможно, помнят статью “К модели восприятия и создания текста” (1978 г.) Уолтера Кинча и Тойна ван Дейка (о ней я писала тут), в которой авторы утверждают, что нам характерно делить текст на кусочки (chunks, чанки), заполняя ими свою кратковременную (short term) память. Для этого на письме текст бьется на фразы, предложения, абзацы, главы и т.д. - они нам подсказывают, где лучше расставлять границы чанков. Длинное предложение запутывает нас вместо того, чтобы указать на эти границы.
А почему бы не писать весь текст в одно длинное предложение? Почему недостаточно запятых и абзацев? Предложения являются лингвистической универсалией. Как и слова, предложения можно найти в любом языке мира. Есть разные версии на тему необходимости предложений, в том числе об их связи с особенностями нашей памяти. Как в устной речи мы общаемся фразами, закладывая в них более-менее завершенную мысль (Кинч и ван Дейк сказали бы "пропозицию"), так в письменной мы раскладываем мысли по предложениям. В статье Кинча и ван Дейка есть целый параграф, посвященный читабельности текста (readability, ридабИлити). Чем легче текст, тем быстрее читатель его прочитывает и тем лучше потом отвечает на фактические вопросы о тексте.
Что может усложнять текст помимо длинных предложений? В основном длинные слова, если считать в буквах или в слогах. Еще можно учитывать редкость слов. Также нужно учитывать, кто читает. Многие метрики читабельности предлагают шкалу: от детей и учащихся разных ступеней образования до профессуры и узких специалистов.
Зачем рассчитывать читабельность? Авторы сочинений, писатели, журналисты подстраиваются под свою аудиторию. Авторы учебников по литературе или преподаватели иностранных языков составляют списки текстов для учеников разных ступеней. Государственные деятели хотели бы, чтобы важные государственные тексты были понятны большинству населения.

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

Важно, что метрики часто содержат константы, которые для разных языков свои. Для русского есть издавна известный онлайн-инструмент Текстометр. Я взяла текст этого поста и прогнала его через Текстометр. Получилось вот что: 45 баллов из 100. Достаточно простой текст, подойдет для возраста 11-12 лет (5-6 класс). Значит, и для телеграмм-поста сгодится 😁 А еще я сделала ноутбучек, который наглядно показывает, что такое толстовское предложение и насколько оно длиннее, чем, например, астафьевское - листайте!

#база #notebook
8
Почему токены меньше слова. И какие секреты модели может раскрыть ее токенизатор (Часть 1)
Да будет последовательность постов декабрьского номера восстановлена.

Что такое токен? Кстати, я люблю пропевать фразу “Что такое токен? Это токен.” под мотив песни “Что такое осень” группы ДДТ. Это отрезок текста - он может быть длиною в один символ, а может быть целым словом. Это может быть и техническое слово, которое мы с вами не прочитаем - оно нужно, например, для более компактного хранения текстовых данных (как в алгоритме Byte-Pair Encoding, BPE). Тогда токен становится даже не символом, а байтом. В больших языковых моделях этот отрезок есть одна единичка словаря модели. Т.е. модели общаются не словами, а токенами, потому что таким образом можно описать все возможные морфологические версии слов: кот, кота, коту, котом… Подробнее о том, почему нужен такой словарь и как он устроен, я писала тут. О токенах в больших языковых моделях можно прочитать тут.

Что такое токенизатор модели?
Перед обучением модели сначала производится токенизация, т.е. разбиение корпуса текстов на токены (без повторов). Сделать это можно очень разными способами, поэтому модель привязана к ее токенизатору. Нам же токенизатор нужен, чтобы перевести наш запрос в токены и ответ модели в текст. При этом в коде мы обычно обращаемся к модели и токенизатору по отдельности, что может запутать. Не позволяйте себя обмануть! Модель и ее токенизатор together forever 👩‍❤️‍👨 Важно, что токенизаторы настроены токенизировать текст наиболее оптимально, т.е. используя минимальное количество токенов.

Если я не хочу заморачиваться с внутрянкой моделей, что мне нужно знать о токенизаторе?
Если вы пишете короткие запросы бесплатным моделям, то не заморачивайтесь. Однако обратите внимание, что диалог с моделью (когда вы отвечаете ей на ее ответ, а она отвечает вам и так далее) это и не диалог вовсе. Модель не запоминает, что вы ей сказали - она берет весь ваш с ней предыдущий диалог, включая ее собственные ответы, соединяет это в новый запрос и отвечает уже на него. Т.е. в обработку она берет все токены ваших и ее предыдущих ответов. Так что, если вы пишете длинные запросы и вступаете в диалог, то нужно знать, на сколько токенов токенизатор побьет ваш текст. От этого зависит, влезет ли ваш текст в input (входную строку) модели и сколько вы заплатите за обработку, если модель платная - оплата обычно идет по-токен-но. Вот здесь на английском есть 10 советов, как оптимизировать свои запросы - мне они показались годными.

Продолжение следует..
👍2
Визуализация токенизации одного предложения вот этим приложением
👍2
Так какие секреты модели может раскрыть ее токенизатор? (Часть 2)

Но мне, как ученому-моченому, интереснее, конечно, что мы можем сказать о внутренностях модели по ее токенизатору. Смотрите на картинке выше: Gemini от Google пословно разбила знаменитое предложение Хомского "Colorless green ideas sleep furiously", отделив при этом точку (пунктуационный символ) - красиво! И тут же Gemini как-то не очень красиво поступает с русскими словами “бесцветные” и “яростно”, разбивая каждое на три токена. Получается, в словаре модели нет слова “яростно” - есть три сочетания “я”, “ро” и “стно”, в эмбеддингах которых, возможно, запомнилось, что вместе они “яростно”. Скорее всего, это случилось потому, что “яростно” очень редко встречалось в корпусе текстов - токенизаторы берут только n самых частых токенов. Но “яростно” довольно частое слово в русском. Значит, скорее всего, в целом русского языка в корпусе модели было мало. Возьмем другую модель и видим, что она вообще разбила текст почти побуквенно, т.е. редкие английские слова попадались ей чаще, чем частые русские.
В статье “Data Mixture Inference: What do BPE Tokenizers Reveal about their Training Data?” (“Исследуя смесь данных: Что BPE токенизаторы рассказывают об их тренировочных данных?”) авторы из Университета Вашингтона и Института искусственного интеллекта Пола Аллена (кстати, очень известное академическое заведение в области ИИ) предлагают линейный алгоритм, который позволяет вычислить, какой процент составили тексты какой-либо категории в тренировочной выборке модели. К категориям можно отнести разные естественные языки, темы и жанры текстов, эпохи, когда они были созданы, языки программирования. Составляем корпус текстов, например, на русском, и алгоритм предсказывает, сколько русского было в тренировке у модели; или составляем литературный корпус; или корпус из кода на питоне и т.д. Авторы, например, рассчитали, что GPT-4o меньше обучалась на английском, чем ее предшественники, а Gpt-3.5 и Claude тренировались в основном на коде, а не на текстах на естественных языках.
В другой статье “Exploring the Impact of Training Data Distribution and Subword Tokenization on Gender Bias in Machine Translation” (“Исследуя влияние распределения тренировочных данных и токенизации на подслова на дискриминацию по половому признаку в машинном переводе”) авторы заметили то же, что случилось выше с “яростно” - женские названия профессий попадают в корпуса недостаточно часто, чтобы образовать отдельный токен. Следовательно, модель учится связывать их с контекстом, где вероятнее будут упоминаться именно мужчины, работающие в данной профессии. А потом вы жалуетесь, что языковая модель не дала вам кредит из-за того, что слишком женственны, молоды или говорите с акцентом.
В общем, токенизатор хранит некоторые секреты, а наука их раскрывает - за это я ее и люблю 💖

#база #эссеиистика
🎄5
Немного новостей в перерыве между постами.

1️⃣ В субботу в 16:00 по московскому времени пройдет последнее в этом году заседание кружка NLP P.S., который ведет моя коллега из ЕУ Яна Сосновская. В этот раз будет сложная тема на стыке нейробиологии, математики и искусственного интеллекта.
🧠💻Есть такой комплекс математических методов "активный вывод". Он пытается предсказать решения мозга, когда мозг сопоставляет свои прогнозы с данными, которые получил от окружающей среды.
🎅Представлять тему будет разработчик ИИ, сооснователь Botkin AI и BrainGarden Олег Бухвалов.
Подробности и регистрация - в чате кружка NLP P.S. https://t.me/nlp_ps

2️⃣ Давным-давно, кажется, в прошлую пятницу прошлой весной я участвовала в проекте "Алфавит СоцГума" в ТюмГУ. И, кажется, неплохо сказала мысль про гуманитариев в цифре. Делюсь мыслью 🤓 https://vk.com/video-765867_456239230
4
Делаем корпуса параллельными при помощи Bert
Эту тему предложил Александр 🐝 - он изучает древние языки при помощи цифровых и количественных методов.

Сегодня делимся инструментом для создания параллельных корпусов — библиотекой lingtrain. Она позволяет легко собирать и обрабатывать тексты на разных известных ей (sic!) языках, чтобы потом использовать их для перевода, анализа лингвистических данных или других задач.
Что такое параллельный корпус? Это коллекция текстов с одинаковым содержанием, но на разных языках - обычно речь идет о переводах одного текста, но это также могут быть очень близкие версии исходного текста. Тексты должны быть выровнены, т.е. разбиты на части, например, предложения, и каждой части должна быть сопоставлена ее версия из параллельного текста. Процедура выравнивания называется alignment (элАйнмент).
Зачем нужно параллелить тексты? Наверно, самым ярким событием в лингвистике, где параллельные тексты дали возможность для прорывного открытия, была расшифровка Розеттского камня. На камне были выбиты три версии одного текста, созданного в 196 году до н. э. В двух было использовано разное египетское письмо, включая иероглифы, а в третьей - письмо на древнегреческом языке. Имена “Клеопатра” и “Птолемей” были обведены в текстах рамкой и так стали первыми словами, которые удалось прочитать в египетском иероглифическом письме. Дальше пошло-поехало, ученые перевели соседние с именами слова, и в первой половине 19 в. египетская иероглифика была расшифрована.
Зачем нужно параллелить тексты в начале 21 века? Новая веха в использовании параллельных текстов случилась с изобретением статистического метода машинного перевода - разработчики Google Translate запараллелили документы из международного права (ООН и Европарламента) и создали переводчик, который ищет наиболее похожий текст в корпусе и в качестве перевода предлагает его параллельную версию на другом языке.
Зачем нужно параллелить тексты сегодня? Все то же, что выше (расшифровка, машинный перевод), но есть и задачи, которые появились в связи с ростом числа параллельных корпусов. Можно, например, устанавливать языковое родство по степени сходства параллельных текстов.
А если у меня неизвестный / новый / редкий язык? Это уже другая история.. Может, Александр про нее напишет.

Ну и, конечно, ноутбучек с кодом от Александра 🐝

#база #notebook
6👍3
Александр 🐝 делится своим проектом: словарь тибетского языка и диалектов
Не устаю напоминать, что у меня в канале в этом году появился соавтор. Александр Жмыхов учится в магистратуре "Прикладная лингвистика" (ТюмГУ), программирует на Java, R, JavaScript и Python. Сегодня публикую им самим написанную историю о его проекте тибетского словаря.
Недавно на страсессии в ИТМО (стратсессия - это что-то вроде круглого стола с обсуждением перспектив чего-нибудь) директор DH Центра ИТМО Полина Колозариди сказала мысль, которая мне очень понравилась: многие цифровые проекты становятся судьбой человека, который их начал. Вот и Александр сегодня (в метафорическо-ироничной форме письма) делится своей судьбой. Он попросил меня не редактировать его текст в этот раз, т.к. "это личное". Выпускаю без купюр!


Где-то месяц назад на календаре ко мне в подвал пришёл админ и попросил рассказать вам о моем личном опыте работы с таким уникальным, маленьким и малоизвестным языком — тибетским. Естественно, за это мне пообещали свидание с семьёй и даже покормить, так что с удовольствием делюсь своим, безусловно, важным опытом. А вам — отчёт о том, какой я лодырь, с элементами веселья.
1⃣ Почему тибетский язык?
🅰 Так получилось, что я немного знал санскрит, а стилистически мне нравится алфавит абугида; из-за этого мне изначально стало интересно, как вообще тибетский язык записывается и читается. Видите ли, в отличие от привычных нам правил нашего родного русского диалекта сербского языка (то есть "пиши, как говоришь — читай, как написано"), в тибетском всё устроено совершенно иначе. Здесь работает примерно такая парадигма: "читай так, как читают ушибленные жизнью братья алкоголики; пиши так, как писали аж в VIII веке".
Аллегория, может, и грубовата, но если говорить без шуток, то тибетское письмо застыло и не реформировалось с того времени, как было создано, а вот правила произношения успели измениться, как это бывает в любом языке. Возможно, наши самые "успешные" подписчики-гуманитарии сейчас вспомнят французский язык, как пример такой же хаотичности, но хочу вас заверить — французский даже рядом не стоял, если сравнивать с азиатскими горцами. Другими словами, тибетский язык меня лично зацепил своей экзотичностью плюс тем, что я хоть немного в теме и представляю контекст.
🅱 Кроме того, волею судеб я учился на направлении, пропитанном востоком, так что изучение азиатских языков и культур для меня вообще не западло. Я в этом контексте давно прокажённый, и мне уже в целом норм. Ну, в целом.

Продолжение следует..
1
2⃣ Что мне удалось насобирать за всё это время (если точнее, за 4 месяца упорной работы) для комплексного анализа тибетского языка?
Кратко говоря, удалось найти готовые корпусные данные и датасеты с текстами и речами на тибетском языке. Но до них пока дело не дошло — они лежат и ждут своего часа. Также я собрал три разномерных словаря тибетских диалектов:
кхамского (или камского), на котором говорят в предгорьях тибетского плато на юго-востоке,
амдосского — архаичного диалекта на северных окраинах тибетского плато,
столичного диалекта Лхасы.
Все эти словари находятся в открытом доступе, и их может найти любой желающий. Но зачем?
Я перепарсил эти словари и унифицировал их в табличном формате, чтобы было проще обрабатывать данные. Понятное дело, в некоторых случаях словари пришлось дорабатывать: например, словарь лхасского диалекта пришлось дополнить фонетической записью. И, конечно, это была не ручная работа по заполнению всех 8 тысяч слов (зачем мне такие издевательства?). Вместо этого я использовал библиотеку для Python, написанную тибетологами для тибетологов, которая позволяет автоматически генерировать фонетическую транскрипцию конкретно для этого диалекта.
Немного цифр:
словарь кхамского диалекта насчитывает около 2000 слов,
амдосского — около 4000,
лхасского — порядка 8000 слов.
Речь, конечно, о плюс-минус точных данных, но сути дела это не меняет. Нам всё равно нужно как-то с этим всем работать. А чтобы успешно работать с такими словарями, надо сначала установить цели — что я, собственно, и сделал.
Итак, моя цель — написать абсолютно научную и чрезвычайно общественно полезную работу, посвящённую исследованию фонетики тибетского языка. Конечным продуктом должна стать реконструкция тибетского до-письменного языка (ну, или хотя бы того языка, на котором говорили, когда письменность только появилась). Поэтому мне нужно собрать не просто "много слов" и "много букв", а как можно больше примеров употребления каждого звука в разных контекстах. Причём 2000 или даже 500 таких примеров будет достаточно, если они все уникальны.
Словари я активно использую для игр с цифровыми методами. Пришлось даже погрузиться в советские опусы о количественной лингвистике, статистике и всяком таком. Пока что получилось доказать, что большинство методов, увы, нерабочие и ничего полезного не дают. Однако есть и положительные результаты. Например:
удалось выделить базовые гласные, которые есть во всех диалектах, уточнив их частотность;
удалось установить разницу в частотности употребления звуков в разных диалектах.
Ну, например: А ВЫ ЗНАЛИ, что в лхасском тибетском звук /u/ встречается чаще, чем в амдосском?** Конечно, это ещё не предел всей работы, но даже такие маленькие открытия уже дают почву для размышлений.
Вот так, шутя и с налётом трагизма, я пришёл к тому, что изучаю относительно маленький, но культурно значимый язык. Не будем забывать, что тибетский — это язык буддизма и древней цивилизации. Впереди меня ждёт огромное количество экспериментов, открытий и новых шуток, которыми я обязательно буду делиться. Но это уже в новом году. А пока — всех с наступающим! 🎄🎉

#эссеИИстика
🎅42🎄2
Кто идёт на первый митап Ктуца - обратите внимание, смена локации 👆

Кто онлайн - ссылка на подключение уже в канале🤳
Forwarded from Q2C
Внимание всем, кто будет оффлайн - у нас смена локации❗️

Встречаемся в Кофеин, Республики, 46. Заходите и поднимайтесь на второй этаж. Мы слева у окна.
https://2gis.ru/tyumen/geo/70000001066027036

(А Disciplina закрыта до 7 января.)
После новогодней ночи, которую мы решили провести, гуляя по заснеженной Тюмени, у меня наконец-то оттаяли руки, чтобы отправить новогоднее поздравление! Вместе со мной вас поздравляют Лиля - глава тюменского кружка компьютерной лингвистики Quick-2-Code и мой со-админ Артем. На нас дует ледяной ветер, так что мы немного снеговики
❤‍🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
❤‍🔥6
И как всегда немного бекстейджа. Мы попытались сделать еще дубль - тут камеру уже держала я. Камера перестала дрожать, но стало почти не видно мост
🍾2
This media is not supported in your browser
VIEW IN TELEGRAM
❤‍🔥5