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

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

Чтобы понимать слова, нам нужно знать, какие слова похожи.

Чтобы понять это, рассмотрите следующие два предложения:

«Вчера вечером я вкусно поел»

«Вчера вечером я вкусно поел»

Интуитивно вы понимаете, что «вкусно» и «вкусно» - похожие слова. На самом деле они практически взаимозаменяемы. Это позволяет вам обобщить предыдущий опыт. Как только вы узнаете, что означает первое предложение, тот факт, что вкусное и вкусное так похожи, позволит вам угадать значение второго предложения. Мы могли бы пойти еще дальше:

«Вчера я прекрасно пообедал»

Это не означает в точности одно и то же. Но это не за горами, и хотя большинство слов изменилось, предложения все еще можно разбить на пары похожих слов / фраз:

  1. «ел» → «имел»
  2. «вкусно» → «замечательно»
  3. «еда» → «ужин»
  4. «вчера вечером» → «вчера»

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

Так что же такое встраивание слов? Это просто карта!

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

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

Таким образом, точно так же, как Бирмингем находится примерно в 20 милях от Ковентри, но более чем в 200 милях от Эдинбурга, мы можем точно определить, насколько похожи два слова, вычислив «расстояние» между их вложениями слов.

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

Автомобиль = (0,7, 0,3)

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

Экран, который вы сейчас читаете, является двухмерным, поэтому наш эскиз выше имел только два измерения. В результате наш «автомобильный вектор» содержал только два числа; 0,7 и 0,3.

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

Автомобиль = (0,7, 0,3, 0,1,…., 0,8)

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

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

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