Модель «торба слів»Модель «торба слів» (англ. bag-of-words) — спрощене подання, що використовується в обробці природних мов і інформаційному пошуку. У цій моделі текст (наприклад, речення або документ) представляється у вигляді торби (мультимножини) його слів, не беручи до уваги граматику і навіть порядок слів, але зберігаючи множинність. Модель «мішок слів» також використовується для задач комп'ютерного зору[1]. Модель «торба слів» зазвичай використовується в методах класифікації документів, де (частота) виникнення кожного слова використовується як ознака для навчання класифікатору[2]. Раннє посилання на термін «торба слів» у мовному контексті можна знайти в статті 1954 року Зелліга Гарріса про структуру розподілу[3]. Приклад реалізаціїНаступні моделі створюють текстовий документ за допомогою торби слів. Ось два простих текстових документа: (1) Джон любить дивитися фільми. Марія теж любить фільми.
(2) Джон також любить дивитися футбольні матчі.
На основі цих двох текстових документів, для кожного документа будується список таким чином: «Джон», «любить», «дивитися», «фільми», «Марія», «любить», «фільми», «теж»
«Джон», «також», «любить», «дивитися», «футбольні», «матчі»
Кожен з цих списків стає JSON-об'єктом і присвоюється відповідній змінній JavaScript: BoW1 = { "Джон" : 1 , "любить" : 2 , "дивитися" : 1 , "фільми" : 2 , "Марія" : 1 , "теж" : 1 };
BoW2 = { "Джон" : 1 , "також" : 1 , "любить" : 1 , "дивитися" : 1 , "футбольні" : 1, "матчі" : 1 };
Кожен ключ — це слово, і кожне значення — це число появ цього слова в текстовому документі. Порядок елементів вільний, так, наприклад Примітка: якщо інший документ подібний об'єднанню цих двох документів, (3) Джон любить дивитися фільми. Марія теж любить фільми. Джон також любить дивитися футбольні матчі.
то його представлення Javascript буде: BoW3 = { "Джон" : 2 , "любить" : 3 , "дивитися" : 2 , "фільми" : 2 , "Марія" : 1 , "теж" : 1 , "також" : 1 , "футбольні" : 1 , "матчі" : 1 };
Таким чином, як ми бачимо в алгебрі торби, «об'єднання» двох документів формально є диз'юнктним об'єднанням, що підсумовує кратності кожного елементу.
ЗастосуванняНа практиці модель «торба слів» використовується в основному як інструмент формування ознак. Перетворивши текст на «торбу слів», можна утворювати різні міри, що характеризують текст. Найбільш поширеним типом характеристик, або ознак, розрахованим за моделлю «торба слів», є частота термів, а саме, кількість разів, скільки терм з'являється в тексті. У наведеному вище прикладі ми можемо побудувати наступні два списки для запису частот термів всіх окремих слів (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]. Проте, частоти термів не обов'язково є найкращими характеристиками тексту. Поширені слова, такі як «і», «а», «то» майже завжди є термами з найвищою частотою в тексті. Таким чином, наявність високої частоти не обов'язково означає, що відповідне слово є більш важливим. Для розв'язання цієї проблеми одним з найпопулярніших способів «нормалізації» частоти термів є вага терму до оберненої частоти документа, або TF-IDF. Крім того, для спеціальних задач класифікації були розроблені альтернативи методи керованого навчання, які враховують тип документа[4]. Пізніше, стали використовувати бінарні (наявність/відсутність або 1/0) ваги замість частот для деяких задач (наприклад, така опція є у ПЗ машинного навчання Weka). Модель N-грамМодель «торба слів» — це не впорядковане представлення документа — важлива лише кількість слів. Наприклад, у наведеному вище прикладі «Джон любить дивитися фільми. Мері теж любить фільми», представлення торби слів не вкаже на те, що дієслово «любить» завжди йде за ім'ям людини в цьому тексті. Як альтернатива, n-грам модель може зберігати цю просторову інформацію. Якщо застосувати для наведеного прикладу біграм модель, то вона розіб'є текст на наведені далі одиниці й міститиме частоту кожної одиниці: [ "Джон любить", "любить дивитися", "дивитися фільми", "Марія любить", "любить фільми", "фільми теж", ] Концептуально ми можемо розглядати модель торби слів як окремий випадок моделі n-грам з n = 1. Для n > 1 модель називається w-shingling (де w еквівалентна n, що позначає кількість згрупованих слів). Див. Мовну модель для більш детального обговорення. Реалізація на Pythonsentence_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)} унікальних токенів.')
Геш-трюкЗагальною альтернативою використання словників є геш-трюк[en], де слова відображаються безпосередньо на індекси з геш-функцією[5]. Таким чином, для зберігання словника не потрібна пам'ять. Геш-колізії зазвичай вирішуються через звільнення пам'яті для збільшення кількості геш-корзин. На практиці, гешування спрощує реалізацію моделей торби слів і покращує масштабованість. Приклад використання: фільтрація спамуУ баєсівській фільтрації спаму повідомлення електронної пошти моделюється як невпорядкований набір слів, вибраних з одного з двох розподілів ймовірностей: один представляє спам, і один представляє реальні електронні листи. Уявіть, що є дві справжні торби, повні слів. Одна торба наповнена словами, знайденими в спам-повідомленнях, а інша — словами, знайденими у звичайних повідомленнях електронної пошти. Хоча будь-яке слово, ймовірно, буде зустрічатись в обох торбах, проте торба «спам» буде містити слова, пов'язані зі спамом, такі як «акції», «віагра» і «купувати» значно частіше, а інша торба міститиме більше слів, пов'язаних з друзями або робочим місцем користувача. Щоб класифікувати повідомлення електронної пошти, баєсівський спам-фільтр припускає, що повідомлення являє собою купу слів, які були висипані випадковим чином з однієї з двох торбин, і використовує Баєсову ймовірність, щоб визначити, де він, швидше за все, буде. Див. також
Примітки
Література
|
Portal di Ensiklopedia Dunia