Топ питань
Часова шкала
Чат
Перспективи

Модель «торба слів»

модель тексту, де використовується представлення тексту, що базується на невпорядкованому наборі («мішку») слів З Вікіпедії, вільної енциклопедії

Remove ads

Модель «торба слів» (англ. bag-of-words) — спрощене подання, що використовується в обробці природних мов і інформаційному пошуку. У цій моделі текст (наприклад, речення або документ) представляється у вигляді торби (мультимножини) його слів, не беручи до уваги граматику і навіть порядок слів, але зберігаючи множинність. Модель «мішок слів» також використовується для задач комп'ютерного зору[1].

Модель «торба слів» зазвичай використовується в методах класифікації документів, де (частота) виникнення кожного слова використовується як ознака для навчання класифікатору[2].

Раннє посилання на термін «торба слів» у мовному контексті можна знайти в статті 1954 року Зелліга Гарріса про структуру розподілу[3].

Remove ads

Приклад реалізації

Узагальнити
Перспектива

Наступні моделі створюють текстовий документ за допомогою торби слів. Ось два простих текстових документа:

(1) Джон любить дивитися фільми. Марія теж любить фільми.

(2) Джон також любить дивитися футбольні матчі.

На основі цих двох текстових документів, для кожного документа будується список таким чином:

«Джон», «любить», «дивитися», «фільми», «Марія», «любить», «фільми», «теж»

«Джон», «також», «любить», «дивитися», «футбольні», «матчі»

Кожен з цих списків стає JSON-об'єктом і присвоюється відповідній змінній JavaScript:

 BoW1  =  { "Джон" : 1 , "любить" : 2 , "дивитися" : 1 , "фільми" : 2 , "Марія" : 1 , "теж" : 1 }; 
 BoW2  =  { "Джон" : 1 , "також" : 1 , "любить" : 1 , "дивитися" : 1 , "футбольні" : 1, "матчі" : 1 };

Кожен ключ — це слово, і кожне значення — це число появ цього слова в текстовому документі.

Порядок елементів вільний, так, наприклад {"теж":1,"Марія":1,"фільми":2,"Джон":1,"дивитися":1,"любить":2}, також є BoW1. Це те, що очікується від представлення у вигляді JSON об'єкта.

Примітка: якщо інший документ подібний об'єднанню цих двох документів,

 (3) Джон любить дивитися фільми. Марія теж любить фільми. Джон також любить дивитися футбольні матчі.

то його представлення Javascript буде:

BoW3  =  { "Джон" : 2 , "любить" : 3 , "дивитися" : 2 , "фільми" : 2 , "Марія" : 1 , "теж" : 1 , "також" : 1 , "футбольні" : 1 , "матчі" : 1 };

Таким чином, як ми бачимо в алгебрі торби, «об'єднання» двох документів формально є диз'юнктним об'єднанням, що підсумовує кратності кожного елементу.

Remove ads

Застосування

Узагальнити
Перспектива

На практиці модель «торба слів» використовується в основному як інструмент формування ознак. Перетворивши текст на «торбу слів», можна утворювати різні міри, що характеризують текст. Найбільш поширеним типом характеристик, або ознак, розрахованим за моделлю «торба слів», є частота термів, а саме, кількість разів, скільки терм з'являється в тексті. У наведеному вище прикладі ми можемо побудувати наступні два списки для запису частот термів всіх окремих слів (BoW1 і BoW2 впорядковані як у BoW3):

(1) [1, 2, 1, 2, 1, 1, 0, 0, 0]
(2) [1, 1, 1, 0, 0, 0, 1, 1, 1]

Кожен запис у списках відповідає підрахунку відповідного запису у списку (це також представлення гістограми). Наприклад, у першому списку (який представляє документ 1), перші два записи це «1, 2»:

  • Перший запис відповідає слову «Джон», що є першим словом у списку, і його значення «1», оскільки «Джон» з'являється у першому документі 1 раз.
  • Другий запис відповідає слову «любить», що є другим словом у списку, і його значення «2», тому що «любить» з'являється у першому документі 2 рази

Цей список (або вектор) не зберігає порядок слів у початкових реченнях. Це головна особливість моделі «торби слів». Таке представлення має кілька успішних застосунків, таких як фільтрування електронної пошти[1].

Проте, частоти термів не обов'язково є найкращими характеристиками тексту. Поширені слова, такі як «і», «а», «то» майже завжди є термами з найвищою частотою в тексті. Таким чином, наявність високої частоти не обов'язково означає, що відповідне слово є більш важливим. Для розв'язання цієї проблеми одним з найпопулярніших способів «нормалізації» частоти термів є вага терму до оберненої частоти документа, або TF-IDF. Крім того, для спеціальних задач класифікації були розроблені альтернативи методи керованого навчання, які враховують тип документа[4]. Пізніше, стали використовувати бінарні (наявність/відсутність або 1/0) ваги замість частот для деяких задач (наприклад, така опція є у ПЗ машинного навчання Weka).

Remove ads

Модель N-грам

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

[ 
    "Джон любить", 
    "любить дивитися", 
    "дивитися фільми", 
    "Марія любить", 
    "любить фільми", 
    "фільми теж", 
]

Концептуально ми можемо розглядати модель торби слів як окремий випадок моделі n-грам з n = 1. Для n > 1 модель називається w-shingling (де w еквівалентна n, що позначає кількість згрупованих слів). Див. Мовну модель для більш детального обговорення.

Реалізація на Python

sentence_1 = ["Джон любить дивитися фільми. Марія любить фільми теж."]
    tokenizer = Tokenizer()
    tokenizer.fit_on_texts(sentence_1)
    sequences_1 = tokenizer.texts_to_sequences (sentence_1)
    word_index_1 = tokenizer.word_index
    BoW_1 = {}
    for key in word_index_1:
        BoW_1 [key] = sequences_1[0].count(word_index_1[key])
    print(BoW_1)
    print(f"Торба слів речення 1 :\n{BoW_1}")
    print(f'Ми знайшли {len (word_index_1)} унікальних токенів.')
Remove ads

Геш-трюк

Загальною альтернативою використання словників є геш-трюк[en], де слова відображаються безпосередньо на індекси з геш-функцією[5]. Таким чином, для зберігання словника не потрібна пам'ять. Геш-колізії зазвичай вирішуються через звільнення пам'яті для збільшення кількості геш-корзин. На практиці, гешування спрощує реалізацію моделей торби слів і покращує масштабованість.

Приклад використання: фільтрація спаму

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

Щоб класифікувати повідомлення електронної пошти, баєсівський спам-фільтр припускає, що повідомлення являє собою купу слів, які були висипані випадковим чином з однієї з двох торбин, і використовує Баєсову ймовірність, щоб визначити, де він, швидше за все, буде.

Remove ads

Див. також

Примітки

Література

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads