Чому в пошуку без лінгвістики не обійтися?

    Сьогодні мова піде про те, яку роль в Інтернет-пошуку грає лінгвістика. Щоб помістити це в контекст, почну з того, як пов'язані між собою лінгвісти і велика пошукова компанія, наприклад, «Яндекс» (більше 5000 чол.), «Гугл» (більше 50 000 чол.), «Байду» (більше 20 000 ). Від третини до половини цих людей працюють безпосередньо на пошук. Лінгвісти всередині цих компаній приблизно порівну діляться між пошуком і іншими напрямками — новинами, перекладом і т.д.
 
 
 
Я сьогодні буду говорити про ту частину лінгвістів, яка перетинається з пошуком. На діаграмі вона позначена штрихуванням. Можливо, в Google та інших компаніях все влаштовано трошки інакше, ніж у нас, проте, загальна картина приблизно така: лінгвістика є важливим, але не визначальним напрямком роботи пошукових компаній. Ще одне важливе доповнення: у житті, звичайно, межі розпливчасті — неможливо сказати, наприклад, де закінчується лінгвістика і починається машинне навчання. Кожен лінгвіст, що працює в пошуку, трохи займається програмуванням, небагато — машинним навчанням.
 
Оскільки тут присутні в основному люди, пов'язані з наукою, мені хотілося б у двох словах описати різницю між світом науки і світом виробництва. Тут я намалював псевдографіку: на осі х показана складність вирішуваних завдань, на осі у — віддача від цих завдань, неважливо, в грошах або в сукупній користь для людства. Люди, що займаються виробництвом, дуже люблять вибирати собі завдання, що знаходяться у верхньому лівому квадранті — нескладні і з великою віддачею, а люди науки — завдання з правого краю, складні і ніким ще не вирішені, але при цьому з досить довільним розподілом віддачі. Десь у верхньому правому квадранті вони зустрічаються. Дуже хотілося б сподіватися, що саме там знаходяться завдання, якими займаємося ми з вами.
 
 
 
Останнє, про що я хотів згадати в цьому введенні: наука і виробництво існують в двох зовсім різних часових шкалах. Щоб стало зрозуміло, про що я говорю, я виписав кілька дат появи компаній, ідей або технологій, які зараз вважаються важливими. Пошукові компанії з'явилися близько п'ятнадцяти років тому, Фейсбук і Твіттер — менше десяти. У той же час роботи Ноама Хомського відносяться до 1950-их рр.., Модель «сенс — текст», якщо я правильно розумію, — до 1960-их рр.., Латентно-семантичний аналіз — до 1980-м. За мірками науки, це вже зовсім недавно, але, з іншого боку, це час, коли не те, що інтернет-пошуку, самого інтернету як такого ще не було. Я не хочу сказати, що наука перестала розвиватися, просто у неї своя тимчасова шкала.
 
Тепер перейдемо до теми. Щоб розуміти роль лінгвістів в пошуку, давайте для початку спробуємо придумати власний пошук і перевірити, як він працює. Тут ми зрозуміємо, що це завдання не так проста, як багато хто думає, і познайомимося зі структурами даних, які нам знадобляться згодом.
 
Інтуїтивно користувачі уявляють, що сучасні пошукові системи шукають «просто» за ключовими словами. Система знаходить документи, в яких зустрічаються всі ключові слова із запиту, і як-небудь їх впорядковує. Наприклад, за популярністю. Такому підходу часом протиставляється «розумний», «семантичний» пошук, який виявляється набагато якіснішим за рахунок застосування якихось особливих знань. Ця картина не дуже схожа на правду, і щоб зрозуміти, чому, давайте спробуємо самі подумки зробити подібний «пошук за ключовими словами» і подивитися, що він зможе і чого не зможе знайти.
 
Візьмемо для наочності всього три документа — інформаційний (витяг з Вікіпедії), текст про магазини і випадковий анекдот:
 
 
     
  1. «Новокосіно» — район в місті Москві і однойменна станція метрополітену, кінцева Калінінської лінії. Слід за станцією «Новогиреево».
  2.  
  3. Магазини «Перехрестя». Продаж продуктів харчування. Огляд асортименту. Адреси магазинів. Інформація для клієнтів.
  4.  
  5. Міліція впіймала групу шахраїв, що продають дипломи в метро. «Нам довелося їх відпустити», — заявив доктор економічних наук сержант Іванов.
  6.  
У справжньої пошукової системи таких документів не три, а три мільярди, тому ми не можемо дозволити собі кожен раз, коли користувач задає свій запит, навіть просто подивитися на кожен з них. Ми повинні покласти їх в якусь структуру даних, яка дозволяє шукати швидше. У цій структурі даних для кожного слова вказано, в яких документах воно зустрічається. Наприклад, з декількох слів трьох цих документів вийде такий індекс:
                          
магазини 2. 1. 1
продуктів 2. 2. 2
в 1. 1. 3, 3. 1 .7
москві 1. 1. 5
метро 3. 1. 8
сержант 3. 2. 9
Перша цифра позначає номер документа, в якому слово зустрічається, друга вказує на пропозицію, а третя — на позицію в ньому.
 
Тепер спробуємо відповісти на пошуковий запит користувача. Перший запит: [магазини продуктів]. Всі спрацювало, пошук знайшов другий документ. Візьмемо більш складний запит: [магазини продуктів в Москві]. Пошук знайшов ці слова в усіх документах, причому навіть не зрозуміло, який з них виграє. Запит [московське метро]. Слово «московське» ніде не зустрічається, а слово «метро» є в третьому документі з анекдотами. При цьому в першому документі є слово «метрополітен». Виходить, що в першому випадку ми знайшли те, що шукали, в другому — знайшли дуже багато, і нам тепер належить правильно упорядкувати знайдене, а в третьому не знайшли нічого корисного, бо не знали, що «метро» і «метрополітен» — це одне і те ж. Тут ми побачили дві типові проблеми інтернет-пошуку: повноту і ранжування.
 
Буває так, що користувач знаходить дуже багато документів, і пошукова система показує щось на кшталт «знайшлося 10 мільйонів відповідей». Саме по собі це не є проблемою, проблема в тому, щоб правильно їх упорядкувати і першими видати ті відповіді, які найбільше відповідають його запиту. Це проблема ранжирування, головна проблема інтернет-пошуку. Повнота — також серйозна проблема. Якщо за пошуковим запитом, що містить слово «метро», ми не знаходимо єдиний релевантний документ тільки тому, що в ньому немає слова «метро», а є слово «метрополітен», це не дуже добре.
 
Тепер розглянемо роль лінгвістики у вирішенні цих двох проблем. На діаграмі нижче немає цифр, тут зображені загальні відчуття: лінгвістика допомагає в ранжуванні остільки оскільки; велику роль відіграють в ранжуванні так звані чинники ранжирування, машинне навчання і антиспам. Зараз я поясню ці терміни. Що таке «фактор ранжування»? Ми можемо помітити, що деякі характеристики запиту або документа, або пари «запит — документ» явно повинні впливати на той порядок, в якому ми їх повинні представити людині, але заздалегідь невідомо, як саме і наскільки сильно. До таких характеристик відноситься, наприклад, популярність документа, то, чи всі слова запиту зустрічаються в тексті документа, і де саме, скільки разів і з якими ключовими словами на цей документ посилаються, довжина URL, кількість спеціальних символів в ньому, і т.д. «Фактор ранжирування» — не загальноприйнята назва; в «Гуглі», якщо не помиляюся, це називають сигналами .
 
 
 
Можна придумати кілька тисяч різних подібних факторів ранжирування, і система має можливість на кожен запит порахувати їх для всіх документів, знайдених за цим запитом. Інтуїтивно можна зробити висновок, що такий-то фактор, напевно, повинен підвищувати релевантність документа (наприклад, його популярність), а інший, напевно, знижувати (наприклад, кількість косих рис в адресі сторінки). Але ніяка людина не зможе скомбінувати тисячі чинників в єдину процедуру або формулу, яка працювала б найкраще, тому тут в справу вступає машинне навчання. Що це таке? Спеціальні люди заздалегідь вибирають скількись запитів і привласнюють оцінки документам, які знаходяться по кожному з них. Після цього мета машини — підібрати таку формулу, яка зв'яже чинники ранжирування так, що результат обчислень за цією формулою буде максимально схожий на ті оцінки, які придумали люди. Тобто машина навчається ранжувати так, як це роблять люди.
 
Ще одна важлива річ в ранжуванні — антиспам. Як відомо, кількість спаму в інтернеті жахливо. Останнім часом він рідше трапляється на очі, ніж кілька років тому, але це відбулося не само собою, а в результаті активних дій співробітників антиспаму самих різних компаній.
 
Чому лінгвістика не має дуже допомагає в ранжуванні? Звичайно, може бути, хорошої відповіді на це питання немає, а справа в тому, що галузь просто не дочекалася якогось свого генія. Але мені все ж здається, що є більш істотна причина. Здавалося б, чим глибше машина розуміє зміст текстів і документів та запитів, тим краще вона може відповідати, і саме лінгвістика може забезпечити її подібним глибоким розумінням. Але проблема в тому, що життя дуже різноманітна, і люди задають питання, які не загнати ні в які рамки. Будь-яка спроба знайти якусь схему, всеосяжну класифікацію, побудувати єдину онтологію запитів, або їх універсальний парсер, зазвичай провалюється.
 
Зараз я покажу кілька прикладів реальних запитів, про які спотикається навіть людина, не кажучи вже про машину. Їх задавали в пошук живі люди, насправді. Наприклад: [знайомства в Москві без реєстрації]. Не зовсім зрозуміло, яка реєстрація мається на увазі. А ось людина, що звикла робити запити на зразок [як зібрати стіл своїми руками], породжує запит [ніж прочистити каналізацію своїми руками]. Часто зустрічаються запити, які навіть людина зрозуміти не в змозі, а ранжувати потрібно відповіді і на них.
 
Перейдемо до проблеми повноти. Тут є разюча відмінність, тому що вона здебільшого вирішується саме засобами лінгвістики. Якісь фактори ранжирування теж можуть допомагати. Наприклад, пошукова система може включати в себе таке правило: якщо такий-то фактор ранжування для пари запит-документ має значення вище деякого порога, то показувати цей документ по цьому запиту, навіть якщо в ньому знайшлися далеко не всі слова. Наприклад, запит починається зі слова «Фейсбук», а далі написано щось зовсім незрозуміле і ніде не зустрічається. А ми все одно покажемо головну сторінку facebook.com в надії на те, що користувач саме це мав на увазі, а поруч він написав, скажімо, невідоме нам назву Фейсбуку по-арабськи. І машинне навчання теж якось впливає на повноту, наприклад, допомагає сформувати подібні правила. Але головну роль відіграє саме лінгвістика.
 
 
 
Наведу деякі приклади того, чому без застосування лінгвістики досягти повноти можна. Насамперед, нам потрібно вміти породжувати різні форми слів, розуміти, наприклад, що «пішов» і «пішов» — це форми одного і того ж слова. Потрібно знати, що «Москва» і «московський» — це пов'язані один з одним слова, і що слова «серфінг» і «серфер» один з одним пов'язані, і що букви «е» і «е» — часто одне і те ж. Нам потрібно вміти розуміти запити на Інтернет-жаргоні, або записані з використанням небуквених символів, і розуміти, які слова російської мови їм відповідають.
 
Важливо вміти зіставляти слова, фрази та тексти на різних мовах. Користувач може задати запит [Голова Верховної Ради України], а в сюжеті його документі назва цього державного органу зустрічається тільки українською мовою. Добре б уміти відповісти на запит, заданий на одній мові, результатами на інших мовах — родинних чи ні. Насправді, чим більше ми дивимося на запити користувачів, тим більше розуміємо, що будь-який пошук — це переклад з мови запиту на мову документа.
 
Тепер поговоримо докладніше про те, як лінгвісти допомагають вирішити пов'язані з пошуком завдання. Я скористаюся концепцією лінгвістичної піраміди, в якій аналіз тексту розбивається на кілька рівнів: лексичний (розбиття тексту на слова), морфологічний (зміна слів), синтаксичний (комбінація слів один з одним у словосполученнях і реченнях), семантичний (зміст слів і пропозицій) і прагматичний (мета породження висловлювання і його зовнішній контекст, в тому числі немовний).
 
 
 
Почнемо з лексичного рівня. Що таке слово? Пошукові компанії році в 1995 мали відповісти на це питання хоч як-небудь, щоб мати можливість почати роботу. Наприклад, визначити слово як послідовність буквених символів, обмежених ліворуч і праворуч пробілами або знаками пунктуації. На жаль, це часто невірно, особливо якщо говорити не про слова в звичайному сенсі, а про неподільних шматках тексту, що зустрічаються в Інтернеті. Серед них поширені, наприклад, Інтернет-адреси, дати, телефонні номери і т.д. Часто взагалі складно відповісти на запитання, де закінчується одне слово і починається інше. Ось, наприклад, сума із зазначенням валюти — це одне слово або два? Нам потрібно з цим якось визначитися. Символи валют, формати телефонних номерів у різних країнах, і тому подібні речі можуть здаватися дуже далекими від лінгвістики, але проблема в тому, що груба реальність зачіпає самі базові речі, навіть поділ тексту на слова.
 
Крім уже згаданих часто зустрічаються випадків — електронних адрес, телефонів, дат — є й інші приклади складних, нетривіальних «слів». Ось приклад словосполучення, яке в пошуку зручно було б вважати одним словом: «завод імені Фрунзе». При цьому добре б вважати «завод ім. Фрунзе »формою того ж самого« слова ». Запит [Нью Йорк] часто пишуть без дефіса, але від цього він не перетворюється на два окремих слова: було б невірно показувати по ньому документи, де окремо зустрічаються слова «Йорк» і, припустимо, «Нью Гемпшир».
 
Буває, що знаки пунктуації та спеціальні символи є важливою частиною слова. Назва радіостанції користувачі можуть написати так: «Європа +», а телеканал може називатися «1 +1». На світі є навіть музична група, з чудовим назвою, яке в такому вигляді не знаходить жоден пошуковик: «# # # # #». Аналогічні проблеми часто виникають при пошуку назв змінних і функцій, а також інших запитів програмістів. Чому так відбувається? Тому, що хтось на зорі пошукових систем вирішив, що символи%, _, # і + не вважатимуться буквами.
 
 
 
Здавалося б, тепер ми накопичили необхідний досвід, знаємо про всі ці особливих випадках, і можемо ділити текст на слова набагато правильніше, але проблема в тому, що пошуковий індекс вже готовий. Якщо тепер ми поміняємо наше уявлення про те, що таке слово, нам потрібно буде внести зміни у всі програми, які працюють з цим індексом, і переіндексувати весь Інтернет, то є мільярди документів. Значить, будь-яку помилку лексичного аналізу виправити дуже дорого. Так що лексичний аналіз документів необхідно реалізувати максимально правильно з першої ж версії, а це вимагає мудрості, якої п'ятнадцять років тому ще ні в кого не було.
 
Перейдемо до морфологічному аналізу. Чого ми від нього хочемо? Насамперед, ми хочемо знати, які словоформи є у словникових слів. На щастя, ця задача вже вирішена для основних мов світу. Слова в них вже поділені на частини мови, відмінювання, дієвідміни і їм подібні категорії, і ми знаємо, як вони змінюються за відмінками, за родами, за часами і т.д. Гірше йде справа з власними іменами: їх багато, а словників власних назв практично не існує. При цьому добре б знати, що «Москва» і «до Москви» — одне і те ж, добре б знати, як схиляються «Нижні Сичі», не кажучи вже про імена і прізвища, яких дуже багато. Особливо важко саме з прізвищами, а це важливий випадок: особливий гріх пошукової системи — якщо людина шукає і не може знайти сам себе. Крім того, є слова, яких немає ні в одному словнику, і які постійно змінюються: назви брендів, організацій, фірм. Значить, потрібно вміти автоматично віднести незнайоме слово до однієї з відомих нам словотворчих моделей.
 
Далі ми стикаємося ще з однією цікавою проблемою, яка поза пошуку якщо і зустрічається, то рідко: які форми слова близькі один одному, а які — далекі? Наприклад, якщо в запиті задано слово «йти», то чи потрібно по ньому шукати документи, де є слова «що йшов» або «йдучи»? Швидше за все, людина, що формував запит, мав на увазі слово «йти» саме в такій формі. Інший приклад: «рити» і «роєм». Слово «рити» в запиті, швидше за все, зустрінеться в контексті «як рити канаву», а слово «роєм» може бути формою слів «рити», «рій» та імені «Рой». Навіть якщо це дійсно форма слова «рити», його вживання в тексті, цілком можливо, не має нічого спільного із запитом користувача. Не факт, що ми повинні шукати навіть головну форму використаного в запиті слова. Наприклад, у запиті зустрілося слово «будинками» — чи потрібно шукати документи зі словом «будинок»? Телепередачу «Дом-2», журнал «Ваш дім»…
 
Ми маємо справу не з однією мовою, і від цього все стає тільки складніше. Існує, наприклад, українське іменник «мета», від якого можна сформувати форми «мети» і «мету», які збігаються з російськими формами дієслова «помсти». Виходить повна каша. Проблема ще в тому, що українське слово «мета» — це назва українського інтернет-порталу, і тому може зустрічатися і в російській тексті. Тобто нам потрібно вміти розпізнавати мови і розуміти, на якій мові написаний документ, а, в ідеалі, кожне слово в цьому документі.

Іноді по контексту або за допомогою якихось інших способів можна зробити зняття омонімії і зрозуміти, про яке слово йде мова. Але потрібно розуміти, що у цього процесу не завжди стовідсоткова точність і повнота, і його неможливо здійснити, не привертаючи якихось даних про реальний світ. Комп'ютеру, наприклад, дуже складно зрозуміти фразу «Скільки голів у Павлюченка?»: Адже щоб зрозуміти, що форма «голів» походить від слова «гол», а не «голова», потрібно знати, хто такий Павлюченко. Про цей приклад спотикається більшість алгоритмів зняття омонімії.



Окрема тема — синоніми. Не зовсім зрозуміло, до якого рівня лінгвістичної піраміди вона відноситься, тому що вона близька одночасно семантикою та морфології. Можна розглядати синоніми як розширення морфології: якщо ми вважаємо, що слово може в запиті зустрітися в одній формі, а у знайденому документі — в іншій, чому б не чинити так само і з синонімами. Наприклад, видавати на запит зі словом «бабусі» документи зі словом «бабусі», в запиті «бегемот» — у відповіді «гіпопотам», «рожа» — «морда», і так далі. Питання в тому, як шукати їх автоматично, адже не можна вручну скласти всі такі пари.

Один із способів — шукати слова, які часто зустрічаються в одних і тих же контекстах. Тут ми стикаємося не стільки з лінгвістичними, скільки з програмістські проблемами. Наприклад, щоб знайти всі пари слів, які зустрічаються в однакових контекстах, нам потрібно для початку помножити саму на себе матрицю, що має розміри близько 1.000.000.000 * 1.000.000.000, в якій записано, яке слово і як часто зустрічається в яких контекстах. Це вже нетривіальна операція. Скажімо, такі обсяги даних в принципі не можна вмістити на одному комп'ютері. Крім того, хочеться, щоб ці обчислення проходили якнайшвидше, оскільки для досягнення необхідної якості нам потрібно випробувати безліч її варіантів, трохи відрізняються один від одного.

Більшість пар синонімів виглядає не як «бабусі» — «бабусі», а складається зі схожих за звучанням слів. Може бути, не зовсім коректно використовувати для позначення таких пар слово «синоніми», але за відсутністю кращого я буду вживати цей термін. Наприклад, бувають різні допустимі варіанти написання одного й того ж слова, бувають транслітерації, бувають слова, які можна писати як разом, так і окремо. Спеціальний облік подібних патернів допомагає знаходити більше синонімів і робити це точніше.

Наступна проблема: синонімів насправді не існує, тому що немає пари слів, повністю замінюють один одного: «моя бабуся» і «моя бабуся» — це зовсім різні речі, «кота Бегемота» не можна замінити на «кота гіпопотами», а слово «рожа» в сенсі хвороби — словом «морда». Отже, синоніми мають бути контекстно-залежними, тобто відносини синонімії можливі не між парою слів, а парою слів в якомусь контексті . Повністю завдання обліку контексту в синонімії поки ще не вирішена. Іноді без досить складного контексту взагалі не можна обійтися: в одному прикладі II може означати «Другий», а в іншому — «Друга». Слова «вісімдесят шостій» можуть означати як цифру 86, так і цифру 1986.



Окрема проблема — друкарські помилки. Чи правильно вважати слова, написані з помилками, синонімами слів, написаних правильно, або до них потрібно ставитися особливим чином? Однозначної відповіді не існує, але, судячи з усього, з друкарськими помилками потрібно поступати інакше, наприклад, виправляти помилку користувача явним чином. При цьому навіть виправлення друкарських помилок в поширених словах — пекельно складне заняття. Наприклад, багато правильно написані українські слова легко прийняти за друкарську помилку в російськомовному запиті. Існують навіть запити на зразок [врядли або навряд чи], зміст яких повністю втрачається, якщо в них виправити написання. Багато прізвища пошукові системи із завидною регулярністю виправляють на схожі прізвища знаменитостей, такими діями можна легко зіпсувати користувачеві настрій.

Переходимо до синтаксичному аналізу. Я трохи лукавив, коли ілюстрував концепцію лінгвістичної піраміди за допомогою трапеції, тому що в реальному пошуку піраміда виглядає не так. Рівень синтаксичного аналізу дуже маленький і на ньому практично нічого не робиться. У мене є кілька припущень про те, чому це так. Перше: справа у конфлікті структур даних. Синтаксичний аналіз передбачає деревоподібну структуру даних зі складними зв'язками між частинами пропозиції і т.д. А в момент пошуку у системи є тільки інвертований індекс, в якому слову зіставлені номери документів і ще якась проста інформація начебто номерів пропозицій. І не зовсім зрозуміло, як покласти туди таку складну структуру даних так, щоб вона не займала надмірно багато місця, щоб це подання було зручним, розширюваним. Це не є неможливим, але, наскільки я розумію, це завдання ніким толком не вирішена. Друге припущення: вся справа в структурі користувача запитів. Зазвичай вони складаються з невеликого числа слів, часто навіть один з одним не узгоджених, і синтаксичний аналіз в принципі не може дати нам про них багато інформації.

Тим не менш, є приклад, коли він дуже сильно допомагає пошуку. Це відбувається при обробці специфічного класу запитів, в яких важливі так звані стоп-слова — «if», "і", «the», а також інші артиклі, прийменники та спілки, що зустрічаються в природних текстах дуже часто. Перші пошукові системи взагалі їх ігнорували, і навіть зараз з ними обходяться особливим чином. Скажімо, слово «в» є практично в будь-якому документі в російськомовному інтернеті, обійти всі документи, де воно зустрічається, складно. Але є спеціального роду запити, в яких стоп-слова дуже важливі. Наприклад, [дах для машини] і [машина без даху] — це два різних запиту. Без правильного обліку стоп-слів не можна обробити, наприклад, пошук музичного гурту «The The» або чудовий запит [в в в].



Перейдемо до семантичному аналізу. Традиційно це вважається складним завданням, але в пошуку якісь речі, які можна віднести до семантичному аналізу, зустрічаються часто. Найпоширеніше: всі основні пошукові системи так чи інакше вміють визначати «жанр» тексту: відрізняють один від одного статті, сторінки магазину, записи в блогах, новинні стрічки і т.д. Це цілком лінгвістична завдання — побудувати класифікатор, який навчиться відносити текст до одного з цих жанрів. Інше завдання — визначити по тексту документа або запиту, про якій тематиці йдеться. Наприклад, «комп'ютери», «автомобілі», «сім'я», «астрологія». Збіг тематики документа і запиту можна потім використовувати, наприклад, як фактор ранжування. Окрема важлива тема — «дорослі» сайти і запити. Коли користувач нічого такого не мав на увазі, а пошук видає йому посилання на «дорослі» сайти, це традиційно викликає роздратування. Щоб вирішити цю проблему, доводиться будувати відповідні класифікатори.

А ось перед вами текст, подібні якому років десять тому можна було побачити в Інтернеті з великою частотою, а тепер ні на який нормальний запит ви його в результатах пошуку вже не побачите:
Перш ніж відповісти, щоб підсунути руку допомоги коралового приятелю — сервісний. І тут невимовно рятувальний тарзан побачив, що натщесерце йти не буде ніколи, центр. Але його інкрустований розум, законному з математикою, телефонів. Що після удару вниз від плеча він повільніше групується, паралізуючи роботу всіх мікроботів в її межах, samsung.
Насправді згенеровані тексти займають зараз приблизно половину Інтернету, причому, щоб обдурити пошуковик, можуть використовуватися нормальні тексти, в яких міняються місцями слова або якісь слова замінюються на синоніми. Завдання — привести користувача на сайт з цією нісенітницею і отримати з цього якусь вигоду. Нам допомагає відрізняти нормальний текст від подібного згенерованого в тому числі і семантичний аналіз. Цікава особливість — не так важливо, як його проводити: як тільки ми знаходимо будь-яку закономірність, якій підпорядковуються всі природні тексти, будь це n програмні моделі або особливості вживання слів, така закономірність виявляє практично всі неприродні тексти. До тих пір, поки стоять за ними люди не знаходять способу і її зімітувати. Йде своєрідна гонка озброєнь.



Тепер про прагматичному аналізі. Здавалося б, при текстовому пошуку використовувати його неможливо, оскільки в ньому з визначення йдеться про обставини, що знаходяться поза тексту. Однак при обробці запитів зустрічаються процедури, які можна умовно віднести до прагматичного аналізу. Існують слова, які користувачі регулярно вживають в запитах, причому зрозуміло, що вони мають на увазі, але вживання цих слів у запиті не означає бажання знайти їх у тексті документа, це саме вказівку користувальницької прагматики. Наприклад, «безкоштовно» або «в хорошій якості». При цьому слід враховувати, що, наприклад, «недорого» для Москви і провінції — це різні речі. Кожну подібну поширену прагматику добре б врахувати своїм спеціальним чином, і це типовий проект в пошуку, повсякденна робота.

Цікаво, що таких уточнюючих слів може не бути не тільки в тексті документа, але і в тексті запиту, а ми все одно якось повинні здогадатися, що вони маються на увазі. Наприклад, «Гаррі Поттер» може означати і фільм, і книгу; «Ягуар» буває тваринам, напоєм і машиною. Добре б нам це розуміти, і показувати у видачі всі ці речі, причому ще й у правильних пропорціях. Запит [вибори] іноді увазі новини про поточні події, а в інші моменти часу є інформаційним і по ньому правильно показувати посилання на законодавство, статтю у Вікіпедії і т.п. Все це можна навчитися робити, вся необхідна інформація про користувальницьких інтересах для цього є, її нам повідомляють самі користувачі за допомогою своїх запитів. Потрібно вміти знаходити зв'язки між різними запитами і мати якусь модель реальності.



Ми обговорили те, чим лінгвісти займаються в пошуку прямо зараз, тепер трохи про майбутнє. Спочатку — приклади речей, для лінгвістів звичних, але поки що не знайшли застосування в пошуку, або застосовуються не в повну силу. Наприклад, «sentiment analysis»: у нас є текст відгуку чи запису в блозі, і потрібно зрозуміти, позитивний це відгук або негативний, і які переваги і недоліки в ньому відображені. Якщо ми навчимося це робити, можна буде показувати користувачам, що знайшлося, скажімо, сорок відгуків про сюжеті їх товар, з них стільки-то позитивних і стільки-то негативних, стільки-то людей відзначили такий-то недолік, і дати їм можливість прочитати саме відгуки, містять опис цього конкретного недоліку. Це не «rocket science», але в пошуку це ще не зроблено. Потрібно робити, це принесе людям користь.

Інша річ — пошук фактів. Хочеться розуміти запити виду [хто першим перелетів Атлантику] або [висота Евересту], шукати на них закінчені короткі відповіді і показувати їх користувачеві в зручній формі. Є американська система «Ватсон», яка поки вміє робити це краще за всіх і навіть перемогла всіх в американській версії «Своєї гри». Зачатки цього є у всіх пошукових систем, правда, основним джерелом такої інформації для них все одно залишається «Вікіпедія».

Ще одна тема — моніторинг згадок себе чи своєї компанії в інтернеті. Тим, хто цим займається, у відповідь хочеться отримати не суцільний потік повідомлень, в якому зустрічається і сміття, і спам, а більш структуровану інформацію. На ринку є відповідне програмне забезпечення, але повністю це завдання поки ніким не вирішена, хоча вона і не виглядає неймовірно складною.

Тепер про те, що пошук і пошукова компанія можуть дати лінгвістиці. Тут я спочатку повинен розвіяти деякі оману і сказати про те, чого у нас насправді немає. У нас немає, і не може бути точної статистики того, як часто те чи інше слово або вираз використовується в інтернеті або в блогах. Часом, в тому числі і в лінгвістичній середовищі, можна зустріти аргументи, засновані на тому, яке число знайденого показала пошукова система, але насправді ці цифри мало що значать, вони вірні в кращому випадку з точністю до коефіцієнта 10. Це навіть не число документів, який вона може вам показати: спробуйте задати будь-який запит і подивитися документи на соті сторінці. Пошукова система відмовиться показувати вам більше тисячі документів, і попросить задати інший запит. Так відбувається в основному тому, що будь-який текст в Інтернеті передруковується дуже багато раз — і людьми, і роботами, і в напівавтоматичному режимі, з абсолютно різними цілями.

Тепер про те, що може дати пошук лінгвістиці. Існує мова, якою користуються люди, задаючи пошукові запити. Можна бачити приклади поширених «висловлювань» на цій мові в пошукових підказках, що з'являються, коли ви починаєте набирати свій запит. Що в ньому цікаво? По-перше, у цієї мови є своя власна граматика: наприклад, фраза «східна музика слухати онлайн» є допустимою (це частий запит), а фраза «східну музику слухати онлайн» — ні (в такій формі запит не задають взагалі), хоча з точки зору російської мови друга фраза коректніше.

Тобто мова запитів — маленький природний мову, і це не частина російської мови. Докладному оповіданням про нього присвячений мій попередній пост . Тут я приведу основні ідеї, що безпосередньо стосуються нашої сьогоднішньої теми. Ця нова мова не так давно відбрунькувався від російського, і складається здебільшого з тих же слів (хоча деякі з них використовуються абсолютно особливим чином, наприклад, слово «скачати» в мові запитів є не дієсловом, а якоїсь спеціальної частиною мови, аналога якої в російській мові немає). Мова запитів розвивається природним шляхом. Люди вчаться цій мові, і цей процес багато в чому схожий на вивчення «справжніх» природних мов, хоча і опосередкований комп'ютером. Людина точно так само вчиться породжувати висловлювання на цій мові, йому доступні приклади висловлювань інших людей, він може використовувати найбільш вдалі конструкції, він зустрічається з комунікативним успіхом і з комунікативними невдачами.

Мова запитів — природна мова в тому плані, що він витримує багато тести, наприклад, підкоряється закону Ціпфа та іншим закономірностям природних мов. Що для лінгвістів абсолютно, не побоюся цього слова, офігітельно — у цієї мови є власна граматика. Вона дуже проста, в ній майже відсутня рекурсія, але все ж граматика є. Можна навіть створити автоматичний генератор запитів, аналогічних знаменитій фразі «безбарвні зелені ідеї люто сплять». Вони будуть граматично правильними, хоча і безглуздими: [американські віники купити в Китаї] і т.д.

Це справжній мова, яка сформувалася і розвивається на наших очах, і важливо те, що ми знаємо практично повне безліч всіх висловлювань, коли-небудь породжених цією мовою. Це унікальна властивість, яким не володіє жоден природний мову. Більше того, ми знаємо і можемо порівнювати частоти, з якими породжуються ті чи інші висловлювання, зміни цих частот за часом доби, порами року, регіонам. Така мова — дуже хороша тема для різноманітних досліджень. Тут є й очевидні перешкоди. Потрібно повагу до приватного життя користувача: навіть з урахуванням того, що всі запити анонімні, потрібні якісь сильніші гарантії того, що ніяка інформація про окремих користувачів з такого безлічі запитів не зможе бути витягнута. Потрібно враховувати також різницю менталітету між наукою і виробництвом, про яку я говорив на самому початку.

Сподіваюся, наука і надалі рухатиметься вперед все так само неспішно і настановами.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.