Складываем и вычитаем
🔜 Введение 🔙
Сегодня трогаем NLP - natural language processing. Это когда программисты пробуют себя в лингвистике и пишут модели для обработки или генерации текста.
Я знаю, что у моих подписчиков разная мат база, но предполагаю, что все имеют представление о том, что:
📌 можно складывать не только числа, но и вектора
📌вектор может быть двумерным, трехмерным, многомерным, но правила сложения останутся такими же
добавим к этим знаниям еще одно:
📌чем меньше угол между векторами, тем они ближе. близость векторов измеряется формулой косинусного расстояния.
🔜 Основная часть 🔙
А теперь к лингвистике: есть гипотеза, что значения слов можно оценить по шкалам, например, слово "мышь" по шкале маленький-большой получит значение близкое к нулю, а по шкале лысый-пушистый будет близко к максимуму. Таких шкал для слова можно задать очень много. Мы как будто играем в игру в данетки: оно маленькое? оно живое? оно пушистое? оно - мышь?
И вот, мы имеем значения по каждой из шкал, а каждая из шкал - это ось в нашем векторном пространстве. Если сложим вектора "маленьковость: 0,1" + "пушистость: 100" + еще какие-то значимые шкалы, то получим слово "мышь"
Такой подход использовался в алгоритме word2vec , который в 2013 предложили разработчики гугла для поиска сходных по смыслу слов и текстов. Сначала алгоритм обучается на большом корпусе текстов, чтобы составить векторное пространство слов. Потом с этими словами можно работать как с векторами: вектора синонимов будут иметь очень близкое расстояние, вектора антонимов будут противоположны.
🔷Классический пример: королева равно король минус мужчина плюс женщина .
🔶Классический пример 2: берлин поделить на германию равно париж поделить на францию
А дальше люди изобрели emoji2vec. Обучили на твиттере и попробовали складывать эмодзики. Как вы думаете, какому эмодзику равно ☂️ - 🌧 + ☀️ ?
🔜 Заключение 🔙
Этот пост было трудно писать, потому что у всех подписчиков разная матбаза: кто-то каждый день вертит n-мерные вектора, а кто-то пришел сюда за лингвистикой. Давайте пересчитаемся, ставьте эмодзики докуда вам было понятно:
❤️ - знаю, как складывать числа
✨ - знаю как складывать вектора
👍 - отличаю косинусы от синусов
🔥 - читал про дистрибутивную семантику
🤯 - я разработчик гугла
Post #104
516