Кожен ключ — це слово, і кожне значення — це число появ цього слова в текстовому документі.
Порядок елементів вільний, так, наприклад {"теж":1,"Марія":1,"фільми":2,"Джон":1,"дивитися":1,"любить":2}, також є BoW1. Це те, що очікується від представлення у вигляді JSON об'єкта.
Примітка: якщо інший документ подібний об'єднанню цих двох документів,
(3) Джон любить дивитися фільми. Марія теж любить фільми. Джон також любить дивитися футбольні матчі.
Таким чином, як ми бачимо в алгебрі торби, «об'єднання» двох документів формально є диз'юнктним об'єднанням, що підсумовує кратності кожного елементу.
Застосування
На практиці модель «торба слів» використовується в основному як інструмент формування ознак. Перетворивши текст на «торбу слів», можна утворювати різні міри, що характеризують текст. Найбільш поширеним типом характеристик, або ознак, розрахованим за моделлю «торба слів», є частота термів, а саме, кількість разів, скільки терм з'являється в тексті. У наведеному вище прикладі ми можемо побудувати наступні два списки для запису частот термів всіх окремих слів (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).
Модель 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_indexBoW_1={}forkeyinword_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]. Таким чином, для зберігання словника не потрібна пам'ять. Геш-колізії зазвичай вирішуються через звільнення пам'яті для збільшення кількості геш-корзин. На практиці, гешування спрощує реалізацію моделей торби слів і покращує масштабованість.
Приклад використання: фільтрація спаму
У баєсівській фільтрації спаму повідомлення електронної пошти моделюється як невпорядкований набір слів, вибраних з одного з двох розподілів ймовірностей: один представляє спам, і один представляє реальні електронні листи. Уявіть, що є дві справжні торби, повні слів. Одна торба наповнена словами, знайденими в спам-повідомленнях, а інша — словами, знайденими у звичайних повідомленнях електронної пошти. Хоча будь-яке слово, ймовірно, буде зустрічатись в обох торбах, проте торба «спам» буде містити слова, пов'язані зі спамом, такі як «акції», «віагра» і «купувати» значно частіше, а інша торба міститиме більше слів, пов'язаних з друзями або робочим місцем користувача.
Щоб класифікувати повідомлення електронної пошти, баєсівський спам-фільтр припускає, що повідомлення являє собою купу слів, які були висипані випадковим чином з однієї з двох торбин, і використовує Баєсову ймовірність, щоб визначити, де він, швидше за все, буде.
↑Harris, Zellig (1954). Distributional Structure. Word(англ.). 10 (2/3): 146—62. І цей запас комбінацій елементів стає чинником того, як пізніше вибираються, бо мова — це не просто мішок слів, а інструмент, який має особливі властивості, які були створені під час його використання
↑Youngjoong Ko (2012). A study of term weighting schemes using class information for text classification. SIGIR'12. ACM.
↑Weinberger, K. Q.; Dasgupta A.; Langford J.; Smola A.; Attenberg, J. (2009). Feature hashing for large scale multitask learning,. Proceedings of the 26th Annual International Conference on Machine Learning: 1113—1120. arXiv:0902.2206. Bibcode:2009arXiv0902.2206W.
Література
McTear, Michael (et al) (2016). The Conversational Interface. Springer International Publishing.