Промышленная сила Обработка природного языка

1656512423 promyshlennaya sila obrabotka prirodnogo yazyka

Кавита Ганнессон

2F6XhGY9UWpjc4BVuLfrMQRjq8Ev9XpYg-qG

Большую часть своей карьеры я провел как аспирант-исследователь, а теперь как ученый по данным в отрасли. Одно, что я понял, это то, что большинство решений, предложенных как в академических научных работах, так и на рабочем месте, просто не предназначены для доставки — они просто не масштабируются!

И когда я говорю масштаб, я имею в виду:

  • Обработка Реальный мир использует случаи
  • Обработка большие суммы данных
  • Легкость развертывание в производственной среде

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

Чаще проблема заключается в подходе, который использовался, хотя, когда что-то идет не так, мы склонны делать проблему «неразрешимой». Помните, что будет почти всегда быть более одного способа решения проблемы обработки естественного языка (NLP) или науки о данных. Оптимизация вашего выбора увеличит ваши шансы на успех в развертывании ваших моделей в производстве.

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

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

1. ПОЦЕЛУЙТЕ, пожалуйста!

1XNrUYvRw3Ilooemmmyz3J17pu0p41S9vgCS

ПОЦЕЛУЙ (Будь простым, глупый). При решении проблем НЛП это кажется здравым смыслом.

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

Во многих программах НЛП вы обычно замечаете одну из двух вещей:

  1. Глубокая предварительная обработка слоев, ИЛИ
  2. Сложные архитектуры нейронных сетей, которые просто трудно понять, не говоря уже об обучении, поддержке и итерационном совершенствовании.

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

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

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

Подумайте о Word2Vec. Успех Word2Vec состоит в его простоте. Для получения значения используйте большие объемы данных, используя сами данные. Слои? Какие слои?

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

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

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

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

2. Если вы сомневаетесь, используйте подход, проверенный временем

gLMrdH1IGQKjRssKwsV9p6ymkC53mi4-wfsZ
С проверенными временем подходами все не может пойти плохо

С каждой проблемой NLP/текстовой добычи у вас есть много вариантов. Всегда будет несколько способов выполнить одну и ту же задачу.

Например, для поиска подобных документов можно использовать простой подход «мешок слов» и вычислить сходство документов, используя результирующий вектор tf-idf.

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

Какой следует использовать? На самом деле, это зависит от нескольких вещей:

  1. Какой из этих методов имеет более высокие шансы на успех на практике? (Подсказка: мы видим, что tf-idf все время используется для поиска информации, и это очень быстро. Как сравнивается параметр встраивания?)
  2. Что по этому я понимаю лучше? Помните, что чем больше вы понимаете, тем больше у вас шансов настроить это и заставить его работать так, как вы ожидаете.
  3. Есть ли у меня необходимые инструменты/данные для реализации любого из них?

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

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

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

3. Отлично поймите свою конечную точку

ynwV1R1197WSvTb0oVgHmPVLhnbaXw9Pm6hE

Моя работа над темами для GitHub сначала началась как темы для рекомендаций по хранилищам. Эти темы никогда не были бы открыты для пользователя. Они были предназначены только для внутреннего использования для вычисления сходства РЕПО и РЕПО.

При разработке люди были очень взволнованы и предложили, чтобы они были доступны непосредственно пользователям. Мой немедленный ответ был: «Черт пороки, нет!». Но люди удивлялись, почему бы и нет?

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

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

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

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

4. Обратите внимание на качество данных

Q4nrwNbxBOKz1RtKmQETssIbuG01JinLbOzj

«Мусор в, мусор наружу» верно во всех смыслах этого слова, когда речь идет о машинном обучении и НЛП.

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

Представьте, если бы я вам сказал 1+2=3 и в следующий раз я тебе скажу 1+2=4 и в следующий раз я скажу тебе еще раз 1+2=3. Угу, ты бы не растерялся? Это та же аналогия.

Кроме того, если у вас есть 90% положительных примеров и 10% отрицательных, как вы думаете, насколько хорошо ваш классификатор будет работать с отрицательными комментариями? Наверное, каждый комментарий будет положительным.

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

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

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

Возьмем для примера твиты. Твиты очень шумные. Возможно, у вас есть слова, которые не являются такими, как looooooove и сокращение вроде lgtm.

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

5. Не верьте полностью своим количественным результатам.

9WL1Q3Pbo6EWDT3S67TVGyCixTXB0wzplLQH
Сомневайтесь в своих количественных результатах

Иногда цифры могут лгать.

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

Однако, когда вы действительно визуально проверите машину и человеческие резюме, вы можете найти что-то удивительное.

Человек говорит: «это отличный пример плохого итога».
Машина говорит: «Пример отличный, это резюме плохое»

И ваша оценка совпадения все равно будет 100%. Видите мое мнение? Одной количественной оценки недостаточно!

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

В примере обобщения проблема была очевидна: над составлением слов нужно много поработать!

6. Подумайте о стоимости и масштабируемости.

rMebIkecS0sr9JV5PbWUU2vl39WEI4uW194o

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

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

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

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

Чем раньше вы подумаете о стоимости и масштабируемости, тем выше ваши шансы на успех в развертывании ваших моделей.

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

Краткая история…

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

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

Я пишу о Text Mining, NLP и машинном обучении с прикладной точки зрения. Подписывайтесь на мой блог, чтобы продолжать обучаться.

Эта статья была первоначально опубликована на kavita-ganesan.com

Добавить комментарий

Ваш адрес email не будет опубликован.