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

Эта проблема

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

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

Итак… (барабанная дробь, пожалуйста) 🥁

Как мы можем сделать это для наших текстовых наборов данных?

Есть ли способ автоматизировать процесс увеличения размера наших наборов данных с помощью данных, которые достаточно разнообразны, чтобы обеспечить хорошее обучение?

Основа

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

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

Исследование

Генерация текста

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

Gartner предсказал в отношении NLG следующее:

«К 2018 году 20 процентов бизнес-контента будет создаваться машинами»

«К 2019 году генерация естественного языка станет стандартной функцией 90% современных платформ бизнес-аналитики и аналитики».

«К 20-му году 20 ведущих поставщиков управления веб-контентом (WCM) будут предоставлять возможности генерации естественного языка как часть своего общего предложения».

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

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

Текстовое предсказание

Поскольку NLG не соответствовал моим потребностям, я вкратце изучил предсказание текста; по сути, это обеспечивает то, что называется «исходным текстом», и модель предсказывает, каким будет следующий набор слов. Однако этот метод сталкивается с теми же проблемами, что и NLG, он требует большого количества данных; точная проблема, на которую я смотрел.

Текст морфинг

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

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

Увеличение текста

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

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

Замена синонима

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

Хотя были проблемы, что такие слова, как «мы», были извлечены, а затем вырваны из контекста, поскольку машина не понимала цели вопроса. Он взял «нас» и заменил его на «америка», «соединенные штаты» и т. Д. Создание новых вопросов с помощью этих замен означало, что новый вопрос не имел смысла, особенно для тех, кто раньше не видел исходный вопрос. .

Вы можете обойти эту проблему, определив набор слов (корпус). Корпус будет напоминать контент, для которого вы не хотите искать синоним и заменять его. Я также предлагаю вам попробовать альтернативные методы извлечения ключевых слов, прежде чем переходить к этапу замены. Для этого исследования я использовал библиотеку Rake для извлечения ключевых слов, возможно, стоит попробовать другую библиотеку.

Языковой перевод

Второй метод увеличения был скорее авантюрой, переводом с английского на иностранный язык обратно на английский. Я видел, как это упоминалось на форумах fast.ai, где эта техника использовалась для конкурса Kaggle, Классификации токсичных комментариев. Удивительно, но это сработало очень хорошо, особенно с языками, находящимися далеко от дома, такими как японский и арабский. Я считаю, что эти языки работали хорошо из-за разницы в структурах предложений и значениях отдельных слов, что означало, что они переводились немного иначе, чем исходное предложение. Последним набором языков, которые я использовал, были японский, украинский, сербский, арабский и болгарский. Используя службы перевода Azure, я случайным образом выбрал 500 вопросов и смог сгенерировать в 5 раз больше, поскольку использовал только 5 языков. В будущем я хотел бы увеличить количество переводимых вопросов, чтобы увидеть, насколько это повлияет на эталонный тест.

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

В таблице я пометил исходный объем данных, с которых я начал, сгенерированное количество, которое было произведено с использованием указанного метода слева, и их совокупную сумму. Четвертая строка, начинающаяся с «Переведено -› Дополнено », показывает результаты, когда я объединил аугментацию (замену синонимов) и перевод. Все это дает ценные результаты и показывает пользу от применения каждого метода. Было бы целесообразно дополнительно протестировать это на других наборах данных и, возможно, реализовать это в чат-боте, чтобы увидеть, может ли система вопросов и ответов обрабатывать более разнообразные вопросы.

Заключение

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

В последнее время в обработке естественного языка (NLP) были достигнуты некоторые успехи, которые могут помочь в этой области, такие как DecaNLP, модели преобразователей и недавнее исследование Google «Активная переформулировка вопросов с обучением с подкреплением». На все это стоит обратить внимание, если вы хоть как-то интересуетесь естественным языком и машинным обучением.

Контакты ✉️

Если вы хотите узнать больше о нашей работе в группе прикладных инноваций, не стесняйтесь обращаться к нам по адресу [email protected].

Github // @ jakeyoung2410