Онлайн час в Google Meet
Лого на 91. НЕГ „Проф. Константин Гълъбов“

11. клас · Избираем модул · Урок 24

Текстът като числа. Торба с думи

Речник, честоти на думите и векторът „торба с думи“; стоп-думи; сравнение на два текста по общи думи и по посока на векторите. Какво се губи, когато забравим реда.

Същият номер, но с думи

Изображението стана матрица (урок 21) и оттам — признаци (урок 23). Текстът трябва да мине по същия път: преди алгоритъмът да реши дали съобщението е спам, дали отзивът е ядосан или за какво е статията, думите трябва да станат числа.

Днес правим най-простия и най-стария такъв превод. Той е достатъчно добър за спам филтър и достатъчно прост, за да го напишем на C# в следващия час.

Речник и честоти

Първата стъпка е да разбием текста на думи: махаме препинателните знаци, правим всички букви малки (иначе „Утре“ и „утре“ са две различни думи) и режем по интервалите. После броим.

„Утре имаме контролно, а утре е и мачът.“

утре → утре имаме контролно а утре е и мачът

утре: 2   имаме: 1   контролно: 1   а: 1   е: 1   и: 1   мачът: 1

Речник

Списъкът от всички различни думи, които се срещат в текстовете, с които работим. Всяка дума получава позиция — номер в списъка.

Честота на думата

Колко пъти думата се среща в един текст. Таблицата „дума → честота“ е първото число, което имаме за текста.

Торба с думи

Сега подреждаме честотите по позициите в речника. Получава се ред от числа с дължина колкото речника — вектор, както при изображението.

Торба с думи (bag of words)

Представяне на текст като вектор, в който на всяка дума от речника съответства едно число — колко пъти се среща в текста. Казва се „торба“, защото думите са изсипани вътре без ред.

утрефиналпартиконтролнокластекст А11101текст Б10111Речникът е общ; всеки текст е ред от числа с една и съща дължина.
Два текста върху общ речник от пет думи. Съвпадащите позиции показват какво им е общо.

Речникът трябва да е общ за всички текстове, иначе векторите не могат да се сравняват. Ако дума от речника липсва в текста, на нейното място стои 0. За истински текстове речникът има десетки хиляди думи и почти всички стойности са нули.

Стоп-думи

Ако сравним два текста по честоти, най-честите думи ще са „и“, „в“, „на“, „е“, „се“, „да“ — във всеки български текст. Те не казват нищо за темата, но са навсякъде и заглушават думите, които имат значение.

Стоп-думи

Много чести думи без собствено значение — съюзи, предлози, частици, спомагателни глаголи, — които се махат преди броенето.

Сравнение на два текста

Общи думи

Най-простата мярка: колко думи от речника имат честота над 0 и в двата текста. Много общи думи — вероятно обща тема. Работи, но дългият текст има повече думи и „печели“ всяко сравнение.

Посока на вектора

По-добрата мярка гледа не броя, а пропорциите. Два вектора са „в една посока“, когато едни и същи думи са им силни и едни и същи — слаби, независимо от общия брой думи. Мярката се нарича косинусова близост (cosine similarity): 1 означава еднаква посока (една и съща тема), 0 — нито една обща дума. За какво е „косинус“ ще видите в 12. клас; засега е достатъчно да мислите за ъгъла между два вектора.

А = (1, 1, 1, 0, 1)      Б = (1, 0, 1, 1, 1)
общи думи: утре, парти, клас → 3 от 5
посока: близка, но не еднаква — различават се във „финал“ и „контролно“

Какво се губи

Торбата е торба: редът на думите изчезва. Тези две изречения имат напълно еднакви вектори:

„Кучето ухапа човека.“     →  кучето: 1, ухапа: 1, човека: 1
„Човека ухапа кучето.“     →  кучето: 1, ухапа: 1, човека: 1
  • Редът се губи — кой кого, преди или след, причина или следствие.
  • Формите на думите се броят отделно: „финал“, „финала“ и „финалът“ са три различни позиции в речника.
  • Синонимите са чужди един на друг: „кола“ и „автомобил“ нямат нищо общо в торбата.
  • Отрицанието се превръща в една дума повече, без да обръща смисъла.

Въпреки всичко торбата с думи е достатъчна за учудващо много задачи — спам, тема, груб тон — защото за тях е важно кои думи има, не как са подредени. За останалото има по-добри представяния, в които близките по смисъл думи получават близки числа; те са тема за 12. клас.

Какво трябва да запомниш

  • Текстът се разбива на думи: малки букви, без препинателни знаци, по интервали.
  • Речникът е общият списък от различни думи; честотата е колко пъти думата се среща в текста.
  • Торбата с думи е вектор с по едно число за всяка дума от речника — 0, ако я няма.
  • Стоп-думите (и, в, на, е…) се махат, защото са навсякъде и не носят тема — освен ако не търсим точно тях.
  • Два текста се сравняват по общи думи или по посока на векторите (косинусова близост).
  • Торбата губи реда, формите на думите, синонимите и отрицанието — но стига за спам и тема.