• Как обучить нейронную сеть DeepPavlov на ноутбуке с использованием GPU

    • Tutorial
    В этой статье я хочу поделиться своим опытом использования данной open-source библиотеки на примере реализации одной задачи с парсингом файлов PDF/DOC/DOCX содержащих резюме специалистов.

    Здесь я также опишу этапы реализации инструмента для подготовки датасета. После чего можно будет обучить модель BERT на полученном датасете в рамках задачи распознавания сущностей из текстов (Named Entity Recognition – в дальнейшем NER).

    Итак, с чего начать. Естественно для начала нужно установить и настроить среду для запуска нашего инструмента. Установку я буду выполнять на Windows 10.

    На Хабре уже есть несколько статей от разработчиков этой библиотеки, где как раз есть подробная инструкция по установке. А в этой статье я хотел бы собрать все воедино, от запуска и до обучения модели. Также я укажу решения некоторых проблем, с которыми я столкнулся при работе с этой библиотекой.
    Читать дальше →
  • Автоматизация ответов на часто задаваемые вопросы в навыке для «Алисы» с помощью библиотеки DeepPavlov

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

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

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


      Читать дальше →
      • +14
      • 9.2k
      • 9
    • Машинное обучение. Нейронные сети (часть 3) — Convolutional Network под микроскопом. Изучение АПИ Tensorflow.js

        В предыдущих статьях, использовался только один из видов слоев нейронной сети – полносвязанные (dense, fully-connected), когда каждый нейрон исходного слоя имеет связь со всеми нейронами из предыдущих слоев.

        Чтобы обработать, например, черно-белое изображение размером 24x24, мы должны были бы превратить матричное представление изображения в вектор, который содержит 24x24 элементов. Как можно вдуматься, с таким преобразованием мы теряем важный атрибут – взаимное расположение пикселей в вертикальном и горизонтальном направлении осей, а также, наверное, в большинстве случаев пиксел, находящийся в верхнем левом углу изображения вряд ли имеет какое-то логически объяснимое влияние друг на друга в большинстве случаев.

        Для исключения этих недостатков – для обработки  изображений используют сверточные слои (convolutional layer, CNN).

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

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

        Читать далее
      • NodeJS: 12 пакетов для продуктивности разработчика

        • Translation


        Менеджер процессов для продакшна с балансировщиком нагрузки. Обёртки над отладкой и хуками Git, защита express-приложений через HTTP-заголовки, утилита в более чем 180 функциями для работы с датами и другие инструменты, которые сэкономят ваше время. Подборка особенно полезна начинающим разработчикам NodeJS, но может порадовать опытных скептиков.
        Добро пожаловать под кат!
      • Как за два месяца пройти путь от начинающего питониста до сертифицированного TensorFlow-разработчика

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



        В этом материале я хочу рассказать о том, как скука от самоизоляции помогла мне стать сертифицированным TensorFlow-разработчиком менее чем за два месяца. И это — несмотря на то, что на Python я раньше не программировал. Здесь я, кроме того, дам список ссылок на материалы, которые я использовал, осваивая новую для себя сферу знаний и готовясь к сертификации.
        Читать дальше →
      • Чудесный мир Word Embeddings: какие они бывают и зачем нужны?

          Начать стоит от печки, то есть с постановки задачи. Откуда берется сама задача word embedding?
          Лирическое отступление: К сожалению, русскоязычное сообщество еще не выработало единого термина для этого понятия, поэтому мы будем использовать англоязычный.
          Сам по себе embedding — это сопоставление произвольной сущности (например, узла в графе или кусочка картинки) некоторому вектору.


          image

          Читать дальше →
        • Проект Natasha. Набор качественных открытых инструментов для обработки естественного русского языка (NLP)

          Два года назад я писал на Хабр статью про Yargy-парсер и библиотеку Natasha, рассказывал про решение задачи NER для русского языка, построенное на правилах. Проект хорошо приняли. Yargy-парсер заменил яндексовый Томита-парсер в крупных проектах внутри Сбера, Интерфакса и РИА Новостей. Библиотека Natasha сейчас встроена в образовательные программы ВШЭ, МФТИ и МГУ.

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

          Для новостных статей качество на всех задачах сравнимо или превосходит существующие решения. Например с задачей NER Natasha справляется на 1 процентный пункт хуже, чем Deeppavlov BERT NER (F1 PER 0.97, LOC 0.91, ORG 0.85), модель весит в 75 раз меньше (27МБ), работает на CPU в 2 раза быстрее (25 статей/сек), чем BERT NER на GPU.

          В проекте 9 репозиториев, библиотека Natasha объединяет их под одним интерфейсом. В статье поговорим про новые инструменты, сравним их с существующими решениями: Deeppavlov, SpaCy, UDPipe.

          Читать дальше →
        • JavaScript в 3D: введение в Three.js

          Привет, Хабр! Представляю Вашему вниманию перевод статьи «JavaScript in 3D: an Introduction to Three.js» автора Брета Кемерона (Bret Cameron).

          Введение


          Three.js это мощный инструмент. Он помогает использовать 3D дизайн в браузере с приемлемой производительностью. По началу Three.js может быть сложным, особенно если вы никогда не погружались в мир 3D программирования ранее.

          У меня есть базовый опыт работы с игровым движком Unity и C#, но все равно многие концепции оказались новыми для меня. Я пришел к выводу, что сейчас совсем мало ресурсов для начинающих разработчиков, поэтому я и решил написать эту статью. В ней мы рассмотрим основные элементы Three.js сцены от полигональных сеток и материалов до геометрии, загрузчиков и много другого.
          Читать дальше →
        • Цифровой баланс

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

             
                Семен открыл перед собой большое овальное зеркало в готической оправе и несколькими кликами подправил прическу и убрал щетину. Некоторое время размышлял над тем, стоит ли убрать залысины, или это будет слишком уж явная косметика. Он решил оставить прическу в виде короткого ежика и вернуть легкую брутальную щетину. «Все равно, я — красавчик! – подумал Семен. – Вряд ли, моя виртуальная подруга будет столь же щепетильна в применении косметических фильтров. Создатели Тиндела уверяют, что ни за какой донат здесь нельзя поправить кривой фейс или отвисшее пузо. Только реальная внешность! Но мы-то знаем цену подобным уверениям».
            Читать дальше →
          • Как быстро выучить язык, не наступая на грабли? Мнение полиглота

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

              Коротко о себе: меня зовут Егор Пак, я преподаю немецкий, английский и испанский, владею еще несколькими языками на хорошем уровне. Опыт преподавания 6 лет, 9 жил и работал за рубежом. Работал как индивидуально, так и с группами, сюда же относятся семьи. Недавно вернулся в Россию, завел канал на Ютубе. Сейчас преподаю в России, как онлайн, так и лично.

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

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

                На официальном канале YouTube Creator Insider для авторов видеоконтента опубликовано видео под названием «Хотите увеличить рекламный доход?» В нём сообщается важная новость для участников программы YouTube Partners: в ближайшее время они смогут значительно увеличить монетизацию благодаря новой опции неотключаемой рекламы в видеороликах. Такую рекламу зритель не сможет промотать одним нажатием кнопки Skip Ad, как обычно.

                Раньше неотключаемая реклама была доступна только для избранных партнёров. Эксперимент доказал свою эффективность — и скоро опцию сделают доступной для всех авторов, кто имеет право вставлять рекламу в видеоролики. Можно предположить, что многие воспользуются такой привлекательной возможностью повысить доход.
                Читать дальше →
              • Падает зрение после лазерной коррекции зрения — что делать? Или, доктор, сделай мне «enhancement»

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

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

                  Итак, enhancement – это докоррекция. Всегда ли она возможна?

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

                  Методов много – даю навигацию по выбору необходимого. Вооружайтесь.

                  Падает зрение после лазерной коррекции
                  Читать дальше →
                • 10 познавательных YouTube-каналов на английском, о которых вы никогда не слышали

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

                    Мы собрали 10 по-настоящему крутых и познавательных англоязычных каналов. Самые известные и популярные мы не рассматривали, поэтому гарантируем, что все (или почти все) окажутся вам в новинку.

                    Отдельно мы будем указывать уровень знания английского языка, который потребуется для комфортного просмотра каналов.
                    Читать дальше →
                  • Как Google пытался покорить Китай — и проиграл

                    • Translation
                    Было время, когда Google хотел попасть на китайский рынок, а Китай нуждался в Google. Теперь это время ушло.

                    Первый набег Google на китайские рынки стал недолгим экспериментом. Поисковую систему Google China запустили в 2006 году, а спустя четыре года её внезапно закрыли для материкового Китая после крупного взлома и споров по цензуре поисковой выдачи. Но в августе 2018 года сайт журналистских расследований The Intercept сообщил, что компания тайно работает над прототипом новой подцензурной поисковой системы для Китая под названием Project Dragonfly.

                    На фоне протеста правозащитников и некоторых сотрудников Google вице-президент США Майк Пенс призвал компанию прекратить работу над Dragonfly. Он заявил, что система «усилит цензуру Коммунистической партии и поставит под угрозу конфиденциальность пользователей». В середине декабря издание The Intercept сообщило, что Google приостановила разработку Dragonfly после претензий собственного отдела конфиденциальности, который узнал о проекте из СМИ.

                    Некоторые наблюдатели говорят, что решение вернуться на крупнейший рынок мира зависит от Google: пойдет ли она на компромисс со своими принципами и подвергнет цензуре поиск, как хочет Китай? Но наблюдатели упускают из внимания главное: на этот раз решение будет принимать китайское правительство.
                    Читать дальше →
                  • Опыт с WebAssembly или как С++ undefined behavior выстрелил в ногу

                      На прошедшем C++ Russia 2018 мы рассказывали о нашем опыте перехода на WebAssembly, как наткнулись на UB и как его героически закостыляли, немного о самой технологии и как работает на разных устройствах. Под катом же будет текстовая версия всего относительно UB. Код используемых тестов доступен на GitHub.


                      Читать дальше →
                      • +19
                      • 6.2k
                      • 6
                    • Создание шаблонов в IDE от Jetbrains

                      • Tutorial

                      Вступление


                      Сегодня я хочу привести небольшой обзор-туториал темплейтов в ИСР от Jetbrains. Приведенные ниже примеры будут реализованы на Java в Intellij IDEA, но механизм создания одинаков и для других языков и продуктов компании. Думаю все программирующие в данной IDE пользовались встроенными шаблонами. Например когда вы пишете fori, нажимаете TAB или ENTER и у вас появляется цикл for в котором нужно указать имя переменной и условие, а остальной код генерируется за вас.

                      for (int i = 0; i < ; i++) {   
                                                     
                      }    

                      Или же знакомый всем java-программистам sout -> System.out.println(). Так вот, в Intellij есть поддержка создания своих шаблонов кода. На удивление не нашёл практически никакой инфы на русском и довольно мало на английском(благо есть неплохая документация) когда наткнулся на эту фичу, хотя это сильно ускоряет и помогает в разработке. И сейчас когда дошли руки решил написать небольшую статью об этом. Возможно опытным программистам она мало чем поможет, они и сами смогут разобраться во всём или же уже давно это юзают, но для всех остальных считаю вполне подойдёт. Итак приступим.
                      Читать дальше →
                    • 10 советов по нетворкингу для людей, которые его терпеть не могут

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

                      Вы пришли на мероприятие лично, хотя могли потом посмотреть его в записи в любимых тапочках дома или в вагоне метро по пути на работу. Вы сделали это с какой-то целью, не правда ли? Пообщаться с какими-то важными специалистами; послушать, как решают аналогичные проблемы с анализом больших данных в Hadoop или уменьшают глюки отслеживания Google Analytics более опытные специалисты; познакомиться с новым потенциально интересным стартапом или журналистом, а может, вы сами – стартап и пришли искать полезные знакомства; окучить множество новых клиентов; найти и замотивировать будущих сотрудников. Ваша задача – в течение следующих нескольких часов оставить положительное неизгладимое впечатление на максимальное количество людей. Уже начинает посасывать под ложечкой?
                      Читать дальше →
                    • OAuth: описание протокола простым и понятным языком

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

                        Пример кросс-авторизации


                        Вернемся в 2005-й год и представим, что мы пишем социальную сеть. В ней имеется форма импорта контактов из адресной книги GMail. Что нужно для доступа к контактам GMail? Конечно, логин и пароль от ящика. Но если мы попросим ввести их на нашем сайте, пользователь заподозрит неладное. Где гарантия, что мы не сохраняем на сервере введенные пароли? Поэтому нам хочется, чтобы пароль вводился только на сайте GMail, и после этого доступ к контактам через API GMail предоставлялся нашей социальной сети (возможно, на время).
                        Под катом - повествование с примерами
                      • Пишем виджет ХабраКарма ex-CarmaWidget для Android

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

                          image

                          Принцип таков:
                          • Класс — настройки для виджета, который запускается при добавлении последнего на рабочий стол.
                          • Класс — провайдер информации для виджета, в котором живут все таймеры.
                          • База данных — для хранения информации о пользователе.
                          • Два layout'а — для виджета и настройщика.


                          Читать дальше →
                        • Мой опыт обучения детей 8-10 лет программированию на Scratch

                          Давно собирался написать об этом, но, модная болезнь прокрастинация брала вверх. Последней каплей стал пост
                          «Учим детей делать игры» из блога «Кодабры».

                          Знакомство со Scratch


                          Когда сыну Артёму исполнилось 7 лет и он пошел в школу, мы ему подарили компьютер, чтобы он не отставал от жизни. Несколько месяцев он играл в разные игры, наслаждался, развлекался и т.п. Мне стало немного обидно, что такой дорогой и сложный прибор как компьютер используется только для развлечений, и я решил придумать, как использовать компьютер для обучения. А чему можно научиться на компьютере? Конечно, программированию! Тут я и вбил в «Яндекс» заветную фразу «обучение детей программированию».
                          Читать дальше →