Google SMITH — новый алгоритм для обработки длинных текстов
Создан модернизированный алгоритм, который обрабатывает длинные тексты по объемным запросам. Новая усовершенстованная система может способствовать оптимизации сайта.
Если говорить о качестве ответа, то SMITH по многим параметрам лучше, чем BERT. Главный плюс в том, что он может «понимать» смысл текстовых фрагментов. У предыдущего алгоритма смысл определяется по отдельным частям текстов.
Исследования с выборками показали, что система SMITH более усовершенствована, нежели модели для обработки длинных текстов: SMASH, HAN, а также BERT. Усовершенствованная система работает с намного более длинными предложениями. Компания еще официально не подтвердила использование алгоритма в целях обработки запросов поиска.
Особенности работы SMITH
Обработка текста проводится в два этапа. Сначала текст разбивается на отдельные блоки. В них может быть один или несколько предложений. Далее в каждом блоке определяется соответствие поискового запроса.
Второй уровень характеризуется обработкой последовательности блоков. Регистрируются соответствия запросу в документе. Система определяет, насколько предложения соответствуют запросам в пределах блока. Далее определяется, насколько весь текст соответствует заявленным требованиям.
Для разбивки текста на фрагменты, алгоритм использует метод под названием “greedy sentence filling”. Суть в том, что в один блок помещаются естественные предложения. Алгоритм создает блоки конкретной длины. Сами предложения блоками не разрываются. Если предложение не поместилось в блок, то его переносят в следующий.
Чем SMITH отличается от BERT
Все зависит от объема рабочей единицы и вариантов обучения алгоритмов. BERT это алгоритм, прогнозирующий слова, скрытые в предложениях. SMITH это система, которая кардинально лучше. Она обучена делать прогнозы скрытых слов в смысловых блоках и предложениях. Всегда учитывается, каким будет очередной текстовый фрагмент.
Для SMITH используется перечень материалов, поставляемых Википедией, а также ACL Anthology Network.
Трансформация текста в блоки с помощью SMITH
Алгоритм сокращает предложение, если оно длиннее блока. Таким образом, предложение помещается в один блок. На входе документ превращается в последовательность блоков предложений: . Блок «S» представляется, как последовательность слов: . Длина документа по числу блоков указывается «Ld». А длина блока по количеству слов — «Ls».
Затем определяется соответствие запросу на уровне блоков, предложений и текста в целом. Берется во внимание число вхождений, а также позиция вхождения по каждому изучаемому фрагменту. Если обрабатывается блок, то изучается позиция вхождения в конкретном предложении и позиция этого предложения во всем блоке.
Новый алгоритм от Гугл SMITH занимается обработкой текста на разных уровнях. Изучается смысл всего документа, а не только отдельные фразы и предложения.
Что будет дальше со SMITH
Система будет и дальше совершенствоваться. Компания Гугл пока держит в тайне планы по использованию системы в поиске. Нет достоверной информации о том, как это отразится на формировании поисковой выдачи и продвижении интернет-магазинов. Скорее всего, алгоритм пока работать на небольшом количестве поисковых запросов. Некоторые эксперты считают, что Google собирается глобально трансформировать поисковые запросы. В последнее время пользовательские запросы стали более длинными и развернутыми.
Возможно, алгоритм будет использован для улучшения качества тематического контента. Он будет изучать, что просматривал человек и на основе этой информации делать правильные прогнозы. Новый алгоритм может отразиться на оптимальной стоимости продвижения магазинов и сайтов.
Крутой агент Смит или выполняем тысячи тестов Serverless
Попробуйте вспомнить, как часто вы попадали в такую ситуацию? За день до дедлайна Вы запускаете массивный набор интеграционных тестов и оставляете их «вариться» на ночь. А утром с ужасом в глазах Вы узнаёте, что половина из них попадала из-за случайного сетевого сбоя?
А сколько раз вас просили вечером «по-быстренькому» запустить наборчик смоук-тестов, чтобы проверить последний билд. И вот уже за полночь, а Вы всё сидите и ждёте результатов.
Ну и конечно, когда Вы поднимаете вопрос о том, что надо бы докинуть серверов для агентов, вы раз за разом получаете один и тот же ответ — «Прости, дружок — на этот квартал/год/век бюджет уже распланирован».
Но подождите. А что если Вы скажете им, что можно запускать сколько угодно тестов, распараллелив их на сколько угодно серверов, при этом не держать ни железо, ни запущенные виртуалки на постоянной основе?
Давайте прикинем. Допустим раз в сутки Вы пускаете ночные тесты, которые выполняются 4 часа. Вы их параллелите на 2 постоянно запущенных сервера-агента, дабы уложиться в это время. Таким образом 20 часов в день две машины будут просто «курить в сторонке», грея атмосферу и пожирая Ваши кровные деньги. Было бы здорово, если эти бравые ребята получали сдельно, а Вы оплачивали бы только за проделанную работу. Использовать сервера на 100% и потом просто «погасить» их. И делать это быстро. И делать это не написав ни одной строчки кода. Чтож, теперь это возможно!
Представляем Вашему вниманию новый фреймворк распределённого выполнения тестов — Smith. Суровый агент возьмёт Ваши тесты, разделит их, поднимет виртуальные сервера, выполнит тесты, сохранит результаты и погасит использованные машины.
Говоря о Serverless первое, что приходит на ум это — AWS. И да, Smith сделан исключительно на AWS.
Smith предоставляет простое REST-api как входную точку. API Gateway дёргает Lambda-функции, которы разделяют ваши тесты, складывают их в очереди и запускают ECS-джобы. Именно ECS и делают «грязную работу», выполняя тестирование (ну или что угодно). По завершению теста логи аккуратно складываются в S3, а результаты улетают в SQS, откуда их можно «потребить». ECS-виртуалки, естественно, при этом «гасятся». Эдакий, Мистер Мисикс получается.
Из архитектуры видно, что вы платите только за выполненную работу, а не за простаивающие в сторонке сервера, 89% времени просто ожидающие «наряда на вино-водочный». Smith гарантирует, что КПД системы выполнения будет близко к 100%.
Smith — это всего лишь Cloud Formation шаблон, который можно скачать бесплатно. Он создаёт все необходимые ресурсы. Все ресурсы, создаваемые шаблоном, являются Serverless и не требуют ни копейки денег при простое: S3 бакеты, SQS очереди, Лямбды, API Gateway и ECS сервис.
Чтобы запустить тесты в единственную, созданную шаблоном, API-ручку надо POST-ом отправить запрос со списком тестов. Например:
Как следствие под каждый такой тестовый класс или метод (параметр «method» в объекте необязательный) будет поднята и выполнена ECS-джоба. Логи будут сохранены в S3-бакете “smith-reports-[REGION]-[ACCOUNT_ID]”, а результаты — что прошло, что — нет — будут отправлены в “smith-results” SQS.
Подключаемся
На данный момент Smith поддерживает Maven JUnit тесты. Но ведётся активная работа по внедрению поддержки Gradle, NUnit, Pytest, т.д.
Чтобы Smith мог выполнить Ваши тесты, он должен иметь к ним доступ.
Для начала надо запаковать Ваши тесты в test-jar. Для этого в прокект можно добавить вот такой плагин
org.apache.maven.plugins maven-jar-plugin 3.2.0 test-jar
Далее нужно поделиться этими тестами со Smith-ом. В случае, если вы деплоите прямо в Maven Central — то дальше можно не читать — всё произойдёт само. Но, скорее всего, это — не Ваш случай.
Чтобы предоставить тесты Smith-у вы можете указать свои кастомные репозитории в settings.xml файле и просто загрузить его в корень бакета “smith-private-settings-[REGION]-[ACCOUNT_ID]”, созданного шаблоном. В этом случае ваш settings.xml будет использован внутри ECS контейнера и указывать Maven-у путь истинный.
Другой путь — задеплоить ваши тесты прямо в S3, созданный шаблоном Smith. Для этого в build секции указываем wagon-plugin
com.testquack.smith s3-storage-wagon 1.0 .
Далее — в свой ~/.m2/settings.xml добавляем репозиторий с авторизацией в Вашем AWS-е:
my-repo-bucket-snapshot AWS_ACCESS_KEY AWS_SECRET_KEY us-east-1 my-repo-bucket-release AWS_ACCESS_KEY AWS_SECRET_KEY us-east-1
Ну и, наконец, указываем distribution management в pom-файле проекта, который укажет на ваш бакет
my-repo-bucket-snapshot s3://smith-artifacts-snapshot-[REGION]-[ACCOUNT_ID] my-repo-bucket-release s3://smith-artifacts-release-[REGION]-[ACCOUNT_ID]
Вот и всё, “mvn clean deploy” запакует Ваши тесты и загрузит артефактом в ваш бакет, созданный шаблоном Smith. Остаётся только вызвать API и выполнение начнётся.
Выполнение
Как уже было сказано ранее — Smith создаёт API Gateway эндпоинт, POST-запрос на который запускает тесты. Но, как говорится, есть способ лучше.
Т.к. Smith является детищем компании GreatBit, то он тесно интегрирован с её продуктами. В частности — с системой управления тесткейсами — QuAck. В базовой поставке QuAck уже входит Smith Launcher — плагин, позволяющий запускать тесты в Serverless облаке Smith из удобненького интерфейса. Более того, QuAck получит, сохранит и отобразит результаты выполнения.
Для того, чтобы запустить тесты из QuAck — их туда нужно импортировать. С этим прекрасно справляется вот этот плагин. Просто добавляем его в проект — и каждый раз при пересборке тесты в QuAck будут обновляться по необходимости.
Импортировали тесты, перешли в QuAck, выбрали себе сьют тестов и запустили, выбрав Smith как Launcher. Всё, можно идти пить кофе — результаты в системе себя не заставят долго ждать.
Эпилог
Цель Smith — не только ускорить выполнение тяжёлых тестов за счёт разбиения выполнения на отдельных машинах, но и сократить расходы на инфраструктуру. Нет же никакого смысла платить за сервера, которые ничего не делают, а только ждут своего часа пробежать короткий спринт. Вы платите только за выполненную работу, а не оплачиваете счета за электричества в чужих дата-центрах.
А самое приятное — это всё бесплатно. И Smith, и QuAck. Бери, настраивай, запускай, экономь и радуйся. Ну а если возникают вопросы — разработчики из команды GreatBit всегда спешат на помощь.
Guide-Apple
Widgetsmith — как пользоваться приложением на iOS 14?
Один из самых популярных виджетов, который пользователи используют для оформление рабочего стола на iOS 14, является Widgetsmith.
Это приложение просто находка, в нём находится большое количество разных виджетов.
Давайте расскажу, как с ним работать, ведь это не так легко, как может показаться.
Как сделать русский язык в приложении widget smith?
Никак. К сожалению, пока что оно имеет исключительно английский язык. Поэтому, если что-то непонятно, просто используем Google Translate.
Как сделать widget smith на Айфоне (iOS 14)?
Чтобы появилась возможность добавлять виджеты от widget smith, достаточно просто установить себе приложение.
Ничего сложного нет — по старинке заходим в App Store и находим его для загрузки. Или, используем эту ссылку — Widgetsmith для iOS.
Весит оно достаточно немного, поэтому не будет занимать много места на вашем iPhone.
Как работать с приложением widget smith на iOS 14?
Когда запускаешь программу впервые, то может показаться, что ей тяжело пользоваться.
На самом же деле, достаточно один раз добавить виджет на рабочий стол и дальше будет понятна логика. Давайте разок сделаем это вместе.
Создание и редактирование.
- когда вы впервые откроете widget smith, выбираем размер виджета SMALL WDGETS (маленькие), MEDIUM WIDGETS (средние) или LARGE WIDGETS (большие);
- я выбрал меленький виджет, дальше нажимаем опять же на него;
- Появляется окно редактирования, где сперва выбираем тип виджета (Style).
- Дальше выбираете все остальные настройки, которые больше всего подходят под ваш рабочий стол.
- Сохраняем сделанное, нажав Назад и затем Save.
Добавляем его на рабочий стол.
- Идем на страничку с виджетами и нажимаем кнопку Изменить.
- Сверху появляется Плюс, тапаем на него.
- нажимаем кнопку Добавить виджет;
- зажимаем пальцем на виджете;
- когда появляется контекстное меню, выбираем Изменить виджет;
- нажимаем строчку Widget;
- выбираем из списка только что созданный вариант;
- видим его на страничке, откуда и перетягиваем его на рабочий стол.
Вот в принципе и всё. Таким образом, вы можете создать море вариантов и добавлять на домашний экран.
Также не стоит забывать, что вы можете изучать настройки и ничего страшного не будет.
При подготовке материала использовались источники:
https://turboseo.net.ua/blogue/google-smith.htm
https://habr.com/ru/articles/539304/
https://guide-apple.ru/widgetsmith-kak-polzovatsya-prilozheniem-na-ios-14/