Amazon Machine Learning Solutions Lab (MLSL) нещодавно створила інструмент для анотування тексту за допомогою розпізнавання іменованих об’єктів (NER) і міток зв’язків за допомогою Основна правда Amazon SageMaker. Анотатори використовують цей інструмент, щоб позначати текст іменованими об’єктами та зв’язувати їхні зв’язки, створюючи таким чином набір даних для навчання найсучасніших моделей машинного навчання (ML) обробки природної мови (NLP). Найважливіше те, що тепер це загальнодоступно для всіх клієнтів AWS.
Випадок використання клієнтом: Booking.com
Booking.com є однією з провідних світових онлайн-платформ для подорожей. Розуміння того, що клієнти говорять про понад 28 мільйонів об’єктів нерухомості компанії на платформі, має важливе значення для підтримки найвищого рівня обслуговування клієнтів. Раніше Booking.com міг використовувати лише традиційний аналіз настроїв для інтерпретації відгуків клієнтів у масштабі. Прагнучи покращити специфіку цих інтерпретацій, Booking.com нещодавно звернувся до MLSL за допомогою у створенні спеціального анотованого набору даних для навчання моделі аналізу настроїв на основі аспектів.
Традиційний аналіз настроїв – це процес класифікації фрагмента тексту як позитивного, негативного чи нейтрального унікальне почуття. Це працює для загального розуміння того, задоволені чи незадоволені користувачі певним досвідом. Наприклад, за допомогою традиційного аналізу настроїв наступний текст можна класифікувати як «нейтральний»:
Наше перебування в готелі було приємним. Персонал був доброзичливим, а номери чистими, але наші ліжка були досить незручними.
Аспектний аналіз настроїв пропонує більш тонке розуміння вмісту. У випадку Booking.com замість того, щоб брати відгук клієнта в цілому та класифікувати його за категоріями, він може взяти настрої з огляду та призначити його конкретним аспектам. Наприклад, відгуки клієнтів про певний готель можуть хвалити бездоганний басейн і фітнес-центр, але давати критичні відгуки про ресторан і лаунж.
Твердження, яке було б класифіковано як «нейтральне» за допомогою традиційного аналізу настроїв, за допомогою аналізу настроїв на основі аспектів стане:
Наше перебування в готелі було приємним. Персонал був доброзичливим, а номери чистими, але наші ліжка були досить незручними.
- Готель: Позитивно
- Персонал: Позитивно
- Кімната: Позитив
- Ліжка: Негатив
Booking.com прагнув створити спеціальну модель аналізу настроїв на основі аспектів, яка б повідомляла їм, які конкретні частини досвіду гостей (зі списку з 50+ аспектів) були позитивний, негативнийабо нейтральний.
Перш ніж Booking.com зможе створити навчальний набір даних для цієї моделі, їм потрібен був спосіб анотації. Інструмент анотації MLSL надав таке необхідне індивідуальне рішення. Велику колекцію відгуків про готелі було перевірено людьми. Потім анотатори завершили анотацію іменованих об’єктів щодо настроїв і текстових проміжків і фраз про враження від гостей, перш ніж зв’язати відповідні проміжки.
Нова модель на основі аспектів дозволяє Booking.com персоналізувати як розміщення, так і відгуки для своїх клієнтів. Виділення позитивних і негативних аспектів кожного житла дозволяє клієнтам вибрати ідеальний варіант. Крім того, різні клієнти піклуються про різні аспекти розміщення, і нова модель відкриває можливість показувати найбільш відповідні відгуки кожному з них.
Вимоги до маркування
Хоча Ground Truth надає вбудовану можливість текстових анотацій NER, він не надає можливості зв’язувати сутності разом. Пам’ятаючи про це, Booking.com і MLSL розробили наступні вимоги високого рівня для нового інструменту розпізнавання іменованих об’єктів, який:
- Приймає як вхідні дані: текст, мітки сутностей, мітки відносин та класифікаційні етикетки.
- Додатково приймає як вхідні дані попередньо анотовані дані з попередньою міткою та анотаціями зв’язку.
- Надає анотатору неанотований або попередньо анотований текст.
- Дозволяє анотаторам виділяти та коментувати довільний текст міткою сутності.
- Дозволяє анотаторам створювати зв’язки між двома анотаціями сутностей.
- Дозволяє анотаторам легко переміщатися між великою кількістю міток сутностей.
- Підтримує групування міток сутностей у категорії.
- Дозволити накладання зв’язків, що означає, що той самий сегмент анотованого тексту може бути пов’язаний з кількома іншими сегментами анотованого тексту.
- Дозволяє перекривати анотації міток об’єктів, що означає, що дві анотації можуть перекривати один і той самий фрагмент тексту. Наприклад, текст «Seattle Space Needle» може мати анотації «Seattle» → «locations» і «Seattle Space Needle» → «attractions».
- Вихідний формат сумісний із вхідним форматом і може бути використаний у наступних завданнях маркування.
- Підтримує текст у кодуванні UTF-8, що містить емодзі та інші багатобайтові символи.
- Підтримує мови з написанням зліва направо.
Зразок анотації
Розглянемо такий документ:
Нам сподобалося розташування цього готелю! Лаунж на даху дав нам ідеальний вид на Space Nidle. Він також розташований за декілька хвилин їзди від ринку щуки та набережної.
Їжа була доступна лише через обслуговування номерів, що трохи розчарувало, але має сенс у цьому постпандемічному світі.
Загалом, досвід за розумну ціну.
Завантаження цього документа в нову анотацію NER представляє воркер із таким інтерфейсом:
У цьому випадку робота працівника полягає в наступному:
- Позначте сутності, пов’язані з об’єктом нерухомості (місце розташування, ціна, їжа тощо)
- Позначте сутності, пов’язані з настроями (позитивні, негативні чи нейтральні)
- Пов’яжіть іменовані сутності, пов’язані з властивостями, з ключовими словами, пов’язаними з настроями, щоб точно відобразити враження від гостей
Швидкість створення анотацій була важливою характеристикою інструменту. Використовуючи послідовність інтуїтивно зрозумілих комбінацій клавіш і жестів миші, анотатори можуть керувати інтерфейсом і:
- Додавання та видалення анотацій іменованих сутностей
- Додайте зв’язки між іменованими сутностями
- Перехід до початку та кінця документа
- Надішліть документ
Крім того, є підтримка міток, що перекриваються. Наприклад, Seattle Space Needle
: у цій фразі, Seattle
анотується як сама локація, так і як частина назви пам’ятки.
Завершена анотація надає більш повний детальний аналіз даних:
Зв’язки можна налаштувати на багатьох рівнях, від категорій сутності до інших категорій сутності (наприклад, від «їжі» до «настрою») або між окремими типами сутності. Зв’язки є спрямованими, тому анотатори можуть пов’язувати такий аспект, як їжа, з почуттям, але не навпаки (якщо це явно не ввімкнено). Під час малювання зв’язків інструмент анотації автоматично виводить мітку зв’язку та напрямок.
Налаштування інструменту анотації NER
У цьому розділі ми розповідаємо, як налаштувати інструмент анотації NER для конкретних випадків використання клієнта. Це включає в себе налаштування:
- Вхідний текст для анотації
- Мітки сутностей
- Мітки відносин
- Класифікаційні етикетки
- Попередньо анотовані дані
- Інструкції для робітників
Ми розглянемо специфіку форматів вхідних і вихідних документів, а також наведемо кілька прикладів кожного з них.
Формат вхідного документа
Інструмент анотації NER очікує наступного вхідного документа у форматі JSON (поля зі знаком питання біля імені необов’язкові).
У двох словах, формат введення має такі характеристики:
- Або
entityLabels
orclassificationLabels
(або обидва) потрібно анотувати. - If
entityLabels
дано, тоrelationshipLabels
можна додати. - Зв’язки можуть бути дозволені між різними мітками об’єктів/категорій або між ними.
- «Джерело» зв’язку — це об’єкт, з якого починається спрямована стрілка, тоді як «ціль» — це те, куди вона прямує.
Поле | тип | Опис |
текст | рядок | Вимагається. Введіть текст для анотації. |
tokenRows | рядок[][] | Додатково. Спеціальна токенізація введеного тексту. Масив масивів рядків. Масив верхнього рівня представляє кожен рядок тексту (розриви рядків), а масив другого рівня представляє маркери в кожному рядку. Усі символи/руни у вхідному тексті мають бути враховані в tokenRows, включаючи будь-які пробіли. |
documentId | рядок | Додатково. Додаткове значення для клієнтів, щоб відстежувати анотований документ. |
entityLabels | об'єкт[] | Потрібний, якщо classificationLabels порожній. Масив міток сутностей. |
entityLabels[].name | рядок | Вимагається. Відображуване ім’я мітки сутності. |
entityLabels[].category | рядок | Додатково. Назва категорії мітки сутності. |
entityLabels[].shortName | рядок | Додатково. Відображати цей текст поверх анотованих сутностей, а не повну назву. |
entityLabels[].shortCategory | рядок | Додатково. Відображати цей текст у спадному списку вибору анотації сутності замість перших чотирьох літер назви категорії. |
entityLabels.color | рядок | Додатково. Шістнадцятковий код кольору з префіксом «#». Якщо поле порожнє, мітці сутності буде автоматично призначено колір. |
мітки відносин | об'єкт[] | Додатково. Масив міток відносин. |
relationshipLabels[].name | рядок | Вимагається. Відображуване ім’я мітки зв’язку. |
relationshipLabels[].allowedRelationships | об'єкт[] | Додатково. Масив значень, що обмежує типи міток сутності джерела та призначення, яким можна призначити цей зв’язок. Кожен елемент у масиві об’єднується «АБО». |
relationshipLabels[].allowedRelationships[].sourceEntityLabelCategories | рядок[] | Необхідно встановити або sourceEntityLabelCategories, або sourceEntityLabels (або обидва). Список типів категорій міток юридичної особи джерела для цього зв’язку. |
relationshipLabels[].allowedRelationships[].targetEntityLabelCategories | рядок[] | Потрібно встановити targetEntityLabelCategories або targetEntityLabels (або обидва). Список типів категорій міток юридичної цільової особи для цього зв’язку. |
relationshipLabels[].allowedRelationships[].sourceEntityLabels | рядок[] | Необхідно встановити або sourceEntityLabelCategories, або sourceEntityLabels (або обидва). Список юридичних типів міток джерела для цього зв’язку. |
relationshipLabels[].allowedRelationships[].sourceEntityLabels | рядок[] | Потрібно встановити targetEntityLabelCategories або targetEntityLabels (або обидва). Список юридичних типів міток цільової сутності для цього зв’язку. |
classificationLabels | рядок[] | Потрібний, якщо entityLabels порожній. Список міток класифікації рівня документа. |
entityAnnotations | об'єкт[] | Додатково. Масив анотацій сутностей для попереднього анотування вхідного тексту. |
entityAnnotations[].id | рядок | Вимагається. Унікальний ідентифікатор анотації цієї сутності. Використовується для посилання на цю сутність у relationshipAnnotations. |
entityAnnotations[].start | номер | Вимагається. Початкове зміщення руни цієї анотації сутності. |
entityAnnotations[].end | номер | Вимагається. Кінцеве зміщення руни цієї анотації сутності. |
entityAnnotations[].text | рядок | Вимагається. Текстовий вміст між початковим і кінцевим зміщенням руни. |
entityAnnotations[].label | рядок | Вимагається. Ім’я мітки пов’язаної сутності (з назв у entityLabels). |
entityAnnotations[].labelCategory | рядок | Необов’язково. Категорія мітки пов’язаної сутності (з категорій у entityLabels). |
відносиниАнотації | об'єкт[] | Додатково. Масив анотацій відносин. |
relationshipAnnotations[].sourceEntityAnnotationId | рядок | Вимагається. Ідентифікатор анотації вихідної сутності для цього зв’язку. |
relationshipAnnotations[].targetEntityAnnotationId | рядок | Вимагається. Ідентифікатор анотації цільової сутності для цього зв’язку. |
relationshipAnnotations[].label | рядок | Вимагається. Назва мітки пов’язаного зв’язку. |
класифікаціяАнотації | рядок[] | Додатково. Масив класифікацій для попереднього анотування документа. |
мета | об'єкт | Додатково. Додаткові параметри конфігурації. |
мета.інструкції | рядок | Додатково. Інструкції для анотатора маркування у форматі Markdown. |
meta.disableSubmitConfirmation | boolean | Додатково. Установіть значення true, щоб вимкнути модаль підтвердження надсилання. |
meta.multiClassification | boolean | Додатково. Установіть значення true, щоб увімкнути режим кількох міток для classificationLabels. |
Ось кілька зразків документів, щоб краще зрозуміти цей формат введення
Документи, які відповідають цій схемі, надаються Ground Truth як окремі рядки у вхідному маніфесті.
Формат вихідного документа
Формат виводу призначений для легкого зворотного зв’язку в новому завданні анотації. Необов’язкові поля у вихідному документі встановлені, якщо вони також встановлені у вхідному документі. Єдина різниця між форматами введення та виведення полягає в тому meta
об'єкт
Поле | тип | Опис |
мета.відкинутий | boolean | Встановлюється як true, якщо анотатор відхилив цей документ. |
meta.rejectedReason | рядок | Причина відхилення документа анотатором. |
мета.руни | рядок[] | Масив рун, що враховує всі символи у вхідному тексті. Використовується для обчислення початкового та кінцевого зсувів анотації сутності. |
Ось зразок вихідного документа з анотаціями:
Примітка рун:
«Руна» в цьому контексті — це один символ у тексті, який можна підсвічувати, включаючи багатобайтові символи, такі як emoji.
- Оскільки різні мови програмування по-різному представляють багатобайтові символи, використання «Рун» для визначення кожного виділеного символу як окремого атомарного елемента означає, що ми маємо однозначний спосіб описати будь-який виділений текст.
- Наприклад, Python трактує шведський прапор як чотири символи:
Але JavaScript розглядає той самий емодзі як два символи
Щоб усунути будь-яку неоднозначність, ми розглядатимемо шведський прапор (і всі інші емодзі та багатобайтові символи) як єдиний атомарний елемент.
- Зміщення: положення руни відносно вхідного тексту (починаючи з індексу 0)
Виконання анотацій NER з Ground Truth
Як повністю керована служба маркування даних Ground Truth створює навчальні набори даних для ML. У цьому випадку використання ми використовуємо Ground Truth, щоб надіслати колекцію текстових документів групі працівників для анотації. Нарешті, перевіряємо якість.
Ground Truth можна налаштувати для створення завдання маркування даних за допомогою нового інструменту NER як спеціального шаблону.
Зокрема, ми:
- Створіть робочу силу приватного маркування працівників для виконання завдання анотації
- Створіть маніфест введення Ground Truth із документами, які ми хочемо анотувати, а потім завантажте його Служба простого зберігання Amazon (Amazon S3)
- Створюйте лямбда-функції для завдання попереднього та після розмітки
- Створіть завдання маркування Ground Truth за допомогою спеціального шаблону NER
- Коментуйте документи
- Перегляньте результати
Ресурси інструментів NER
Повний список ресурсів, на які посилаються, і приклади документів можна знайти в наступній таблиці:
Маркування робочої сили створення
Ground Truth використовує маркування робочої сили SageMaker для керування працівниками та розподілу завдань. Створіть приватну робочу силу, робочу команду під назвою ner-worker-team, і призначте себе до команди, дотримуючись інструкцій, наведених у Створіть приватну робочу силу (Amazon SageMaker Console).
Після того як ви додали себе до приватної робочої сили та підтвердили свою електронну адресу, запам’ятайте URL-адресу робочого порталу з консолі керування AWS:
- перейдіть до
SageMaker
- перейдіть до
Ground Truth → Labeling workforces
- Виберіть
Private
таб - Зверніть увагу на URL
Labeling portal sign-in URL
Увійдіть на робочий портал, щоб переглянути та розпочати роботу над завданнями маркування.
Маніфест введення
Маніфест вхідних даних Ground Truth — це файл рядків JSON, у якому кожен рядок містить одне робоче завдання. У нашому випадку кожен рядок міститиме один вхідний документ у кодуванні JSON, який містить текст, який ми хочемо анотувати, і схему анотації NER.
Завантажте зразок маніфесту введення reviews.manifest
від https://assets.solutions-lab.ml/NER/0.2.1/sample-data/reviews.manifest
примітки: кожен рядок у вхідному маніфесті потребує ключа верхнього рівня source
or source-ref
. Ви можете дізнатися більше в Використовуйте вхідний файл маніфесту у посібнику розробника Amazon SageMaker.
Завантажте маніфест введення на Amazon S3
Завантажте цей вхідний маніфест у сегмент S3 за допомогою консолі керування AWS або з командного рядка, таким чином замінивши your-bucket
з фактичною назвою сегмента.
Завантажте спеціальний робочий шаблон
Завантажте спеціальний робочий шаблон інструменту NER з https://assets.solutions-lab.ml/NER/0.2.1/worker-template.liquid.html переглядаючи джерело та зберігаючи вміст локально або з командного рядка:
Створюйте лямбда-функції для завдання попереднього та після розмітки
Завантажте зразок завдання з попереднім маркуванням Лямбда-функції: smgt-ner-pre-labeling-task-lambda.py
від https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-pre-labeling-task-lambda.py
Завантажте зразок завдання з попереднім маркуванням Лямбда-функції: smgt-ner-post-labeling-task-lambda.py
від https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-post-labeling-task-lambda.py
- Створіть Lambda-функцію попереднього маркування з консолі керування AWS:
- перейдіть до
Lambda
- Select
Create function
- Вказувати
Function name
assmgt-ner-pre-labeling-task-lambda
- Select
Runtime
→Python 3.6
- Select
Create function
- In
Function code
→lambda_hanadler.py
, вставте вмістsmgt-ner-pre-labeling-task-lambda.py
- Select
Deploy
- перейдіть до
- Створіть лямбда-функцію завдання після маркування з консолі керування AWS:
- перейдіть до
Lambda
- Select
Create function
- Вказувати
Function name
assmgt-ner-post-labeling-task-lambda
- Select
Runtime
→Python 3.6
- Розширювати
Change default execution role
- Select
Create a new role from AWS policy templates
- Введіть
Role name
:smgt-ner-post-labeling-task-lambda-role
- Select
Create function
- Виберіть
Permissions
таб - Виберіть
Role name
:smgt-ner-post-labeling-task-lambda-role
щоб відкрити консоль IAM - Додайте дві політики до ролі
- Select
Attach policies
- Прикріпіть
AmazonS3FullAccess
політика - Select
Add inline policy
- Виберіть
JSON
таб - Вставте таку вбудовану політику:
- Select
- Перейдіть назад до
smgt-ner-post-labeling-task-lambda
Сторінка конфігурації функції лямбда - Виберіть
Configuration
таб - In
Function code
→ лambda_hanadler.py
, вставте вмістsmgt-ner-post-labeling-task-lambda.py
- Select
Deploy
- перейдіть до
Створіть завдання маркування Ground Truth
З консолі керування AWS:
- перейдіть до
Amazon SageMaker
обслуговування - перейдіть до
Ground Truth
→Labeling Jobs
. - Select
Create labeling job
- Вкажіть a
Job Name
- Select
Manual Data Setup
- Укажіть розташування вхідного набору даних, куди ви раніше завантажили вхідний маніфест (наприклад, s
3://your-bucket/ner-input/sample-smgt-input-manifest.jsonl
) - Укажіть розташування вихідного набору даних, щоб вказувати на іншу папку в тому самому відрі (наприклад,
s3://your-bucket/ner-output/
) - Вкажіть
IAM Role
шляхом виборуCreate new role
- Дозвольте цій ролі доступ до будь-якого відра S3, вибравши
S3 buckets you specify
→Any S3 bucket
при створенні політики - У новому вікні консолі керування AWS відкрийте
IAM
консоль і виберітьRoles
- Знайдіть назву ролі, яку ви щойно створили (наприклад,
AmazonSageMaker-ExecutionRole-20210301T154158
) - Виберіть назву ролі, щоб відкрити її на консолі
- Додайте такі три правила:
- Виберіть Долучити політики
- Прикріпіть
AWSLambda_FullAccess
до ролі - Select
Trust Relationships
→Edit Trust Relationships
- Відредагуйте довірчі відносини JSON,
- заміщати
YOUR_ACCOUNT_NUMBER
з цифровим номером вашого облікового запису AWS, який читається: - Збережіть довірчі відносини
- Дозвольте цій ролі доступ до будь-якого відра S3, вибравши
- Поверніться до нового завдання Ground Truth у попередньому вікні консолі керування AWS: під
Task Category
виберітьCustom
- Select
Next
- Select
Worker types
:Private
- Виберіть
Private team
:ner-worker-team
який було створено в попередньому розділі - У
Custom labeling task setup
текстову область, очистіть стандартний вміст і вставте вмістworker-template.liquid.html
файл, отриманий раніше - вкажіть
Pre-labeling task Lambda function
з попередньо створеною функцією:smgt-ner-pre-labeling
- вкажіть
Post-labeling task Lambda function
зі створеною раніше функцією:smgt-ner-post-labeling
- Select
Create
Коментуйте документи
Коли завдання Ground Truth буде створено, ми можемо почати анотувати документи. Відкрийте робочий портал для нашої робочої сили, створений раніше (на консолі керування AWS перейдіть до SageMaker
, Ground Truth → Labeling workforces
, Private
, і відкрийте Labeling portal sign-in URL
)
Увійдіть і виберіть перше завдання маркування в таблиці, а потім виберіть «Почати роботу», щоб відкрити анотатор. Виконайте анотації та виберіть «Надіслати» на всіх трьох зразках документів.
Перегляньте результати
Коли анотатори Ground Truth виконають завдання, результати будуть доступні у вихідному сегменті S3:
Після виконання всіх завдань для завдання з маркування консолідований результат буде доступним у output.manifest
файл розташований тут:
Цей вихідний маніфест є файлом із рядками JSON з одним анотованим текстовим документом на рядок у «Форматі вихідного документа», визначеному раніше. Цей файл сумісний із «Форматом вхідного документа» і його можна ввести безпосередньо в наступне завдання Ground Truth для наступного раунду анотації. Крім того, його можна проаналізувати та надіслати на роботу з навчання ML. Деякі сценарії, коли ми можемо використовувати другий раунд анотацій:
- Розбиття процесу анотації на два етапи, де перший анотатор визначає анотації сутностей, а другий анотатор малює зв’язки
- Взявши зразок нашого
output.manifest
і надсилання його другому, більш досвідченому анотатору для перегляду як перевірки контролю якості
Спеціальні шаблони анотацій Ground Truth
Інструмент анотації NER, описаний у цьому документі, реалізовано як спеціальний шаблон анотації Ground Truth. Клієнти AWS можуть створювати власні інтерфейси анотацій, використовуючи інструкції, наведені тут:
Висновок
Завдяки спільній роботі Booking.com і Amazon MLSL змогли розробити потужний інструмент текстових анотацій, який здатний створювати складні анотації для розпізнавання іменованих об’єктів і зв’язків.
Ми заохочуємо клієнтів AWS, які використовують текстові анотації NER, спробувати інструмент, описаний у цій публікації. Якщо вам потрібна допомога у прискоренні використання ML у ваших продуктах і послугах, зверніться до Лабораторія рішень машинного навчання Amazon.
Про авторів
Ден Нобл є інженером з розробки програмного забезпечення в Amazon, де він допомагає створювати чудові можливості для користувачів. У вільний час він любить читати, займатися фізичними вправами та проводити пригоди зі своєю родиною.
При Ноніс є архітектором глибокого навчання в Amazon ML Solutions Lab, де він працює з клієнтами в різних галузях і допомагає їм прискорити шлях міграції в хмару та вирішувати проблеми машинного навчання за допомогою найсучасніших рішень і технологій.
Ніхаріка Джаянті є інженером переднього плану в AWS, де вона розробляє спеціальні рішення для анотацій для клієнтів Amazon SageMaker. Поза роботою вона любить ходити в музеї та займатися спортом.
Аміт Бека є менеджером машинного навчання в Booking.com, з понад 15-річним досвідом розробки програмного забезпечення та машинного навчання. Його захоплюють люди та мови, а також те, як комп’ютери все ще спантеличені обома.
- '
- 100
- 11
- 7
- МЕНЮ
- доступ
- рахунки
- бухгалтерський облік
- через
- дію
- доповнення
- Додатковий
- ВСІ
- Amazon
- Амазонське машинне навчання
- Amazon SageMaker
- Неоднозначність
- аналіз
- ПЛОЩА
- доступний
- Доступно для всіх
- AWS
- початок
- буття
- будувати
- Створюємо
- який
- випадків
- класифікація
- хмара
- код
- збір
- комплекс
- комп'ютери
- конфігурація
- розгляду
- Консоль
- зміст
- зміст
- може
- створення
- критичний
- Досвід клієнтів
- Клієнти
- дані
- глибоке навчання
- розвивати
- Розробник
- розробка
- різний
- документація
- Ні
- легко
- ефект
- Emoji
- заохочувати
- інженер
- і т.д.
- приклад
- виконання
- чекає
- досвід
- Досліди
- сім'я
- Fed
- зворотний зв'язок
- Поля
- в кінці кінців
- Перший
- фітнес
- харчування
- формат
- знайдений
- Повний
- функція
- GIF
- буде
- гість
- керівництво
- допомога
- допомагає
- тут
- Виділіть
- готель
- Як
- How To
- HTTPS
- IAM
- реалізовані
- важливо
- У тому числі
- індекс
- індивідуальний
- IT
- JavaScript
- робота
- подорож
- ключ
- маркування
- етикетки
- мова
- мови
- великий
- провідний
- УЧИТЬСЯ
- вивчення
- легальний
- рівень
- рівні
- Лінія
- LINK
- Рідина
- список
- оголошення
- локально
- розташування
- шукати
- навчання за допомогою машини
- управління
- позначити
- ринок
- матч
- Meta
- mind
- ML
- модель
- більше
- Музеї
- Імена
- Природна мова
- Обробка природних мов
- необхідний
- nlp
- номера
- Пропозиції
- зсув
- онлайн
- відкрити
- Відкриється
- Можливість
- Інше
- Люди
- фрази
- платформа
- Платформи
- Політика
- політика
- басейн
- Портал
- після пандемії
- потужний
- price
- Головний
- приватний
- процес
- Продукти
- Програмування
- мови програмування
- власність
- забезпечувати
- забезпечує
- Python
- якість
- питання
- читання
- Відносини
- Вимога
- ресурс
- ресурси
- ресторан
- результати
- огляд
- Відгуки
- кімнати
- мудрець
- економія
- шкала
- сенс
- настрій
- Послуги
- комплект
- Короткий
- простий
- So
- Софтвер
- розробка програмного забезпечення
- Рішення
- ВИРІШИТИ
- Простір
- швидкість
- старт
- Заява
- залишатися
- зберігання
- підтримка
- Мета
- Технології
- Джерело
- час
- разом
- Токенізація
- Жетони
- інструмент
- топ
- верхній рівень
- трек
- традиційний
- Навчання
- подорожувати
- лікувати
- відноситься до
- Довіряйте
- us
- користувачі
- значення
- версія
- вид
- Що
- в
- Work
- працював
- робочі
- Трудові ресурси
- робочий
- розробка
- працює
- світ
- світі
- б
- років