Як комп'ютер розуміє близькість слів
Коли «Словозв'яз» каже, що «пляж» на 31-й позиції від слова «море», а «цегла» на 22897-й, він не заглядає у тлумачний словник і не питає людину. Він порівнює числа. Ця стаття пояснює без формул, звідки ці числа беруться, чому вони справді відображають зміст слів і в яких місцях цей підхід дає збої. Це загальна освітня розповідь; про те, як саме ці ідеї застосовані у грі, читайте методику.
Слово пізнається за товариством
В основі всього лежить спостереження, яке лінгвісти сформулювали ще у середині двадцятого століття і назвали дистрибутивною гіпотезою: слова зі схожим значенням уживаються у схожих контекстах. Ми знаємо, що «горнятко» і «чашка» близькі, навіть не відкриваючи словника, бо обидва слова з'являються поруч із «кава», «чай», «гаряче», «налити», «блюдце».
Спробуйте самі: у реченні «Вранці я налив собі повне ___ запашної кави» пропуск можна заповнити словами «горнятко», «чашка», «філіжанка», і речення залишиться природним. А от «велосипед» туди не поставиш. Контексти, у яких слово доречне, і є його значенням з погляду статистики. Комп'ютеру цього достатньо: значення не треба «розуміти», його можна виміряти.
Від контекстів до координат
Уявіть, що для кожного слова ми завели анкету з тисяч питань: як часто воно зустрічається біля «вода»? біля «їсти»? біля «швидкий»? Відповіді на всі питання разом дають довгий список чисел. Цей список і називають вектором слова, а можна думати про нього як про координати точки у просторі з сотнями вимірів.
Сучасні моделі на кшталт word2vec або GloVe отримують ці координати хитріше: нейронна мережа читає корпус текстів і вчиться за словом передбачати його сусідів. У процесі навчання схожі за вживанням слова самі собою з'їжджаються в одну околицю простору: «кава», «чай» і «какао» опиняються поруч, «молоток», «викрутка» і «обценьки» в іншому кутку, а «кава» і «викрутка» далеко одне від одного. Нікого не цікавить, що означає окремо взята координата номер 117: працює лише геометрія, взаємне розташування точок.
Як міряють відстань між словами
Коли у кожного слова є координати, близькість значень перетворюється на геометричну задачу. Найчастіше використовують косинусну подібність: грубо кажучи, дивляться на кут між двома векторами. Що менший кут, то схожіші слова. Одиниця означає повний збіг напрямів, нуль означає «нічого спільного».
Саме це відбувається у «Словозв'язі» під час підготовки кожної гри: береться вектор секретного слова, обчислюється його подібність з усіма словами словника, і список сортується від найближчого до найдальшого. А ваш ранг і є позицією вашого слова у відсортованому списку.
Чому «кіт» далеко від «кита»
Людське око чіпляється за схожість написання: «кіт» і «кит» відрізняються однією літерою. Але модель ніколи не бачила ці слова як набори літер у порівнянні: вона бачила контексти. «Кіт» живе у текстах про домівку, мишей, муркотіння і сметану. «Кит» живе в океані поруч зі словами «плавник», «ссавець» і «глибина». Їхні вектори дивляться у різні боки, тому в грі вони далекі сусіди, і це правильно: за змістом вони справді майже не пов'язані.
Зворотний бік тієї самої монети: слова, які людина не назвала б синонімами, можуть виявитися дуже близькими. «Лікар» і «пацієнт» протилежні за роллю, але живуть в одних реченнях, тому їхні вектори сусідять. Для гри це не вада, а сама суть: вона винагороджує вміння думати ситуаціями, а не гортати словник синонімів.
Навіщо розбивати слова на шматочки
Класичний word2vec вчить окремий вектор для кожного слова зі словника. Для англійської це стерпно, а для української з її відмінками, родами й дієвідмінами словоформ у десятки разів більше, ніж лем: «море», «моря», «морем», «морях» формально різні рядки. Новіші підходи розв'язують це елегантно: вектор слова складається з векторів його фрагментів по кілька літер. «Морем» і «морях» поділяють більшість фрагментів, тому автоматично отримують схожі координати, навіть якщо якась форма траплялася в текстах рідко. Для морфологічно багатих мов, як українська, це відчутно підвищує якість.
Чого вектори не знають
Чесна розповідь про векторні представлення має закінчуватися їхніми межами:
- Багатозначність. В одного написання один вектор, тому «коса» дівчини, «коса» косаря і піщана «коса» змішуються в усередненій точці. Новіші підходи розрізняють значення за тлумаченнями, і гра частково використовує це для уточнення рейтингів.
- Факти і логіка. Вектор не знає, скільки лап у павука. Він знає лише, що «павук» часто згадується біля «павутина».
- Залежність від корпусу. Модель віддзеркалює тексти, на яких навчалася, разом з їхніми перекосами: газетна лексика представлена краще за розмовну, а нові значення слів з'являються із запізненням.
Попри ці обмеження, векторні представлення стали одним із наріжних каменів сучасної обробки мови: на цих самих ідеях виросли й великі мовні моделі. «Словозв'яз» у певному сенсі дає помацати цю технологію руками: кожна партія стає маленькою експедицією простором значень української мови. Як застосувати ці знання на практиці, підказує сторінка стратегії.