Если вы занимались поиском на естественном языке или обработкой естественного языка (NLP), возможно, вы слышали о word2vec. Если нет, мы вас прикрыли.

Word2Vec — это метод машинного обучения, который существует с 2013 года благодаря Томашу Миколову и его команде по обработке и анализу данных в Google. Он используется для обучения компьютера изучению вашего языка (лексики, выражений и т. д.) с использованием корпуса (библиотеки контента). Если вы не специалист по данным, в этой статье вы узнаете, что вам нужно знать, чтобы быть знакомым с учеными данных в вашей жизни.

Как слова кодируются в вашем мозгу

Вложения слов — это векторы, созданные для представления слов и их контекста или отношений между словами. Давайте сначала сделаем шаг назад и рассмотрим, как мы учимся как личности.

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

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

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

Структурные отношения между словами/контекстом

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

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

В сочетании с одеждой или аксессуарами — мы понимаем, что «леопардовый принт» описывает цвета и отметины. В сочетании с такими размерами, как 24 x 36, мы понимаем, что это плакат, а когда мы используем его со словами, такими как песок или грязь, мы знаем, что выслеживаем животное.

В сочетании с одеждой или аксессуарами — мы понимаем, что «леопардовый принт» описывает цвета и отметины. В сочетании с такими размерами, как 24 x 36, мы понимаем, что это плакат, а когда мы используем его со словами, такими как песок или грязь, мы знаем, что выслеживаем животное.

Семантические отношения между словами

Ваш мозг также понимает смысловые отношения между словами.

Например, он понимает, что пары слов, такие как «король» и «королева», «синий» и «желтый», «бег» и «бег», имеют особые отношения. Словосочетание «король» и «бегущий», а также «ферзь» с «желтым» — не надо! Наш мозг также понимает, что семантическое значение слов «туфли» и «носки» отличается от, скажем, отношения между «туфлями» и «сандалиями» или «туфлями» и «бегом».

Ваш мозг знает, что слово «королева» имеет определенные отношения со словом «Англия», которых нет со словом «Калифорния» (если только мы не говорим о поколениях Z в Калифорнии, разговаривающих друг с другом). Слово «тост» связано со словом «французский», но не со словом «испанский».

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

Целевые слова, векторы слов, векторное представление

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

Например, ваши ассоциации со словом «молоко» могут быть следующими: белое, 1%, завтрак, хлопья, корова, миндаль, и если у вас есть опыт аллергии на молочные продукты, опасность, скорая помощь, анафилаксия.

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

Вложения слов

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

Тем не менее, НЛП нужно было с чего-то начинать, и именно здесь оно началось. Поскольку компьютеры понимают только числа, чтобы научить их естественному языку, мы должны представлять слова в числовом виде. Долгое время это делалось путем представления каждого целевого слова в виде строки нулей с 1 в разных позициях для каждого слова. Этот метод называется «горячее векторное кодирование».

Итак, если у вас есть словарный запас из четырех слов, они будут представлены следующим образом:

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

Во-первых, как вы уже догадались, этот метод не позволяет кодировать отношения между словами, которые мы, люди, считаем само собой разумеющимися. У него нет никакого способа узнать, что пара слов СОБАКА и КОШКА похожи — в отличие от СОБАКИ и РИМ. У CAT и PLAY особые отношения, а у CAT и ROME — нет.

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

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

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

В качестве примера давайте посмотрим, как этот метод будет кодировать значение следующих пяти слов:

Каждому слову можно присвоить значение от 0 до 1 по нескольким параметрам, например, «животное», «пушистость», «опасно» и «жутко».

Каждый семантический признак представляет собой отдельное измерение в абстрактном многомерном семантическом пространстве и представлен в виде собственной оси. Можно создавать векторы слов, используя от 50 до 500 измерений (или любое другое количество измерений на самом деле…).

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

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

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

[Аналогия заключается в том, что часто антонимы также очень близки в том же пространстве. Вот как работает Word2vec: слова, которые появляются в одном и том же контексте (а антонимы обычно так и делают), отображаются в одной и той же области пространства.]

Другие семантические отношения между словами, например, гипонимия (отношение подтипа, например, «ложка» является гипонимом слова «столовые приборы») также будут закодированы.

Этот метод также помогает установить связь между конкретными целевыми словами, например

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

Система закодирует, что целевое слово «леопардовый принт» появляется в предложениях, содержащих слова «грязь», «пальто» и «рамки». (Это называется окном слов, а более старые модели, такие как Word2vec, имеют маленькое окно — с целями, находящимися в пределах 3–5 слов.) Глядя на то, что находится до и после целевого слова, компьютер может узнать дополнительную информацию о каждое слово и расположите его как можно точнее в абстрактном векторном пространстве.

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

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

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

Первоначально опубликовано на https://www.coveo.com 24 мая 2022 г.