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

Начальный разговор: очевидные видимые черты

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

  • Я буду вылетать с 20 марта по 25 марта 2021.
  • Ровно в 18:30 IST шоу начинается!
  • Количество цифр в токене.

ПРИМЕЧАНИЕ. Вы можете заметить, что тексты примеров не охватывают все случаи. Вывод из этого блога - методология, а не решение проблемы синтаксического анализа даты и времени.

Методология: уточнение набора функций

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

  1. Количество алфавитов в токене.
  2. Длина токена.
  3. Число / (косая черта) или - (дефис) или: (двоеточие) или. (Точка).
  4. Заканчивается ли оно на st, nd, rd или th?
  5. Is it am or pm?
  6. Алиса думает о жетоне и оценивает в уме определенные характеристики жетона.

Хорошо! У нас достаточно функций, чтобы начать.

Послушайте этот разговор…

Для простоты предположим, что размер команды - 2 человека, а членами являются Алиса и Боб. Голосовые разговоры, которые они произносят, записываются в стандартном формате, а их мысли выделены курсивом.

Вот игра!

  • Затем Алиса представляет Бобу значения характеристик, не раскрывая токен.
  • Боб произносит свой мыслительный процесс вслух и использует эти функции, чтобы сказать «да» или «нет». Да означает, что токен является частью потенциальной даты и времени, а нет означает, что токен не является частью потенциальной даты и времени.
  • Затем Алиса показывает жетон и оценивает Боба, прав он или нет.
  • Наконец, набор функций уточняется, т.е. добавляются дополнительные функции, одна или несколько функций удаляются или одна или несколько существующих функций изменяются, и они меняют свои роли и повторяют шаги с самого начала.
  • Количество цифр в токене.

Заметьте, что цель этой игры - заставить оппонента затруднить правильную классификацию.

Заключение

Алиса: позвольте мне начать!
Алиса : Учитывая эти особенности, позвольте мне подумать о месяце. Март! Итак, особенности марта: (0, 5, 5, 0, нет, нет).
Алиса: Итак, характеристики: (0, 5, 5, 0 , нет нет). Является ли это частью даты или времени?
Боб: здесь нет цифр, поэтому не должно быть значения даты или времени. Слово из 5 букв, все из которых являются алфавитами. Я могу думать о многих! Такие слова, как: ценность, Алиса, игры, и такие месяцы, как март, апрель. Я запутался, может быть, это НЕ часть даты? Я права?
Алиса: Нет! Я думал о слове «марш». Ты не правильно понял. Давайте уточним наш набор функций. Когда вы вербализовали свои мысли, я немного расширил свои мысли и придумал эту функцию. Как насчет функции, которая показывает, содержит ли токен слово «Янв», «Фев», «Мар», «Апр»… «Декабрь» в любом случае, то есть верхний или нижний?
Боб : Да, это здорово! Итак, функция номер 7: есть ли в токене слово «Янв», «Фев», «Мар»… «Декабрь».

Боб: Теперь моя очередь!
Боб: Хм! Где еще я найду номера? Уличные номера! Яблочко, я тоже получу в нем «st», «nd», «rd» и «th». Позвольте мне вспомнить «3-й» в «3-м блоке». Для этого установлены следующие функции (1, 2, 3, 0, нет, да, нет).
Боб: Вот особенности токена, о котором я подумал, (1, 2, 3, 0, нет, да, нет).
Алиса: одна цифра, два алфавита, и это один из «st», «nd» и « rd ». Достаточно информации! Я понял! Это должно быть что-то вроде «1st», «2nd», «4th» и т. Д. Итак, ДА, это часть даты и времени!
Боб: Ваш мыслительный процесс был правильным! Но я воспользовался этим 😉! Вы ошиблись! Я подумал о слове «3-я» как о названиях улиц. Я думаю, что нам нужно смотреть вперед, а также, возможно, оглядываться назад. Например, 3-граммовый? и / или мы могли бы использовать повторяющиеся нейронные сети.
Алиса: Что такое 3-граммовый? Что такое рекуррентные нейронные сети?
Боб: объясняет, что такое 3-грамма в контексте обработки естественного языка и рекуррентных нейронных сетей…

Алиса: Итак, пока у нас остались эти функции -

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

  1. Количество алфавитов в токене.
  2. Длина токена.
  3. Число / (косая черта) или - (дефис) или. (Точка).
  4. Число: (двоеточие).
  5. Заканчивается ли оно на st, nd, rd или th?
  6. Is it am or pm?
  7. В нем есть «Янв», «Фев», «Мар»,… «Дек»?
  8. Есть ли число в диапазоне 0–60?
  9. Есть ли число в диапазоне 0–24?
  10. Есть ли число в диапазоне 1–31?
  11. Алиса: Потрясающе! А теперь я спрошу тебя, Боб!
    Алиса: Хмм! Мне становится все труднее думать о крайних случаях! Дай мне подумать о чем-нибудь близком! «42-й дворник?» Думаю, он сможет правильно это определить. Продолжительность «Января» отличается от «Дворника». Насчет раз. Хм… «Студент набрал 99.00 3 раза в этом семестре по математике». Итак, функции для «99,00 3»: ((0, 6, 6, 0, нет, нет, нет), (4, 0, 5, 1, нет, нет, нет) , (1, 0, 1, 0, нет, нет, нет)).
    Алиса. Характеристики 3-граммового токена: ((0, 6, 6, 0, нет, нет, нет), (4, 0, 5, 1, нет, нет, нет), (1, 0, 1, 0, нет, нет, нет)).
    Боб: Интересно! Маркер содержит 4 цифры и точку, двоеточие, дефис или косую черту. Это должна быть половина даты, например, 21 марта или время 20:00. Это похоже на начало даты или времени, если оно вообще есть, поэтому я могу спокойно игнорировать взгляд назад. Забегая вперед, я ожидал бы «утра» или «вечера» в случае 12-часового формата. Но загляните в будущее, похоже, это одно число. Может быть, что-то вроде 16:00 3 марта? Есть ли способы, при которых это не может быть дата и время? Хм. Процент? Ага! Но длина токена должна быть 6, а не 5, если токен содержит «%», как в «11.11%», или если это случай «11.11 ‹space›%», следующий токен не должен быть цифра. Итак, я делаю вывод, это часть даты и времени!
    Алиса: Невероятное мышление! Вы были близки, но все же неправильно определили. Я думал о словосочетании «99,00 3» в тексте «Он 3 раза набрал 99,00». Давайте подумаем о функции, которая различает такие входные данные. Я считаю, что нам также нужны функции, чтобы проверять, находятся ли номера токенов в диапазоне 0–60, 0–24 и 1–31, чтобы лучше классифицировать. Но ваш мыслительный процесс заставил меня подумать, что процентные значения также могут быть похожи на время, например, 12.00. Вот моя мысль. Отделим: (двоеточие) количество от других символов. Причина в том, что я заметил, что даты могут иметь. (Точка), / (косая черта) или - (дефис) в качестве разделителей, в то время как время в основном может иметь: (двоеточие) в качестве разделителя. Мы бы пошли на компромисс в отношении отдаленного времени, в котором в качестве разделителя используются символы, отличные от: (двоеточие), что еще хуже, если вводить аналогично тому, что я думал: «шоу запланировано на 16.00 3 марта 2021 года». Но пока этот выброс можно игнорировать. Он не так хорошо сформирован, не так ли? Возможно, продолжая этот разговор, мы должны найти способы справляться и с этими ситуациями. Итак, в заключение, мы изменим номер функции 4 на «Число / (косая черта) или - (дефис) или. (точка) ». И мы добавим новую функцию, которая отображает «Число: (двоеточие)». Кроме того, чтобы помочь лучше классифицировать, есть еще три функции: «Есть ли в токене число, которое находится в диапазоне от 0 до 60?», «Есть ли в токене число, которое находится в диапазоне от 0 до 24?», «Есть ли в токене число в диапазоне от 0 до 24?» число в токене, которое находится в диапазоне 1–31? "

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

Я не буду доступен в 16:00 21 марта.

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

Вам не знакома эта методология? Вы, наверное, уже должны были это получить! Вот как обучается модель глубокого обучения Generative Adversarial Network! Спрашивающий является генератором, а респондент - дискриминатором. Алиса и Боб гордились собой. Они считают, что познакомили бы мир с GAN, если бы GAN еще не был разработан.

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

Как я использую машинное обучение на работе