Недавно мы писали о том, как компьютеры «понимают» значения слов благодаря дистрибутивным моделям (их еще называют векторными). Таким моделям не нужно толковых словарей, энциклопедий и справочников. Просто дайте им Очень. Много. Текстов — и вуаля, они могут сказать, что помидор и томат очень похожи по смыслу, а помидор и лингвистика — совсем нет.
Но дистрибутивные модели умеют не только сравнивать слова по смысловой близости. Еще они могут складывать и вычитать значения — в самом прямом арифметическом смысле. Например, такая модель (и без всякого искусственного интеллекта!) выдаст вам слово «королева», если вы скомандуете взять «короля», вычесть из него «мужчину» и прибавить «женщину». Кстати, вы можете воспроизвести это сами на rusvectores.org (который мы тоже уже показывали) в разделе семантический калькулятор. Советуем использовать модель, обученную сразу на Национальном корпусе русского языка и русской Wikipedia.
![](https://sysblok.ru/wp-content/uploads/2019/02/unnamed-file.jpg)
Еще пара примеров. Вычтем из птицы крыло и прибавим плавник:
![](https://sysblok.ru/wp-content/uploads/2019/02/0-1.jpg)
А теперь немного похулиганим — вычтем из Гитлера Германию и прибавим СССР. Конец немного предсказуем:
![](https://sysblok.ru/wp-content/uploads/2019/02/323.jpg)
Напоследок — философский вопрос. А что будет, если из слова жизнь вычесть слово любовь?
![](https://sysblok.ru/wp-content/uploads/2019/02/rwy-leb6og0.jpg)
Как видите, дистрибутивные модели — те еще философы. Напоминаем, ни в одном случае модель на самом деле не обладает никаким настоящим знанием о значениях слов. Такой результат получается благодаря тому, что модель запоминает контексты употребления каждого слова в виде вектора (т.е. попросту набора чисел — с какой частотой встречались рядом с этим словом другие слова). А про вектора мы помним со школы, что их можно складывать и вычитать. Так и работает семантический калькулятор.