Модель «торба слів»
Модель «торба слів» (англ. 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 };
Кожен ключ — це слово, і кожне значення — це число появ цього слова в текстовому документі.
Порядок елементів вільний, так, наприклад {"теж":1,"Марія":1,"фільми":2,"Джон":1,"дивитися":1,"любить":2
}, також є BoW1. Це те, що ми очікується від представлення у вигляді JSON об'єкта.
Примітка: якщо інший документ подібний об'єднанню цих двох документів,
(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», оскільки «Джон» з'являється у першому документі 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_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)} унікальних токенів.')
Геш-трюк
Загальною альтернативою використання словників є геш-трюк, де слова відображаються безпосередньо на індекси з геш-функцією[5]. Таким чином, для зберігання словника не потрібна пам'ять. Геш-колізії зазвичай вирішуються через звільнення пам'яті для збільшення кількості геш-корзин. На практиці, гешування спрощує реалізацію моделей торби слів і покращує масштабованість.
Приклад використання: фільтрація спаму
У баєсівській фільтрації спаму повідомлення електронної пошти моделюється як невпорядкований набір слів, вибраних з одного з двох розподілів ймовірностей: один представляє спам, і один представляє реальні електронні листи. Уявіть, що є дві справжні торби, повні слів. Одна торба наповнена словами, знайденими в спам-повідомленнях, а інша — словами, знайденими в звичайних повідомленнях електронної пошти. Хоча будь-яке слово, ймовірно, буде зустрічатись в обох торбах, проте торба «спам» буде містити слова, пов'язані зі спамом, такі як «акції», «віагра» і «купувати» значно частіше, а інша торба міститиме більше слів, пов'язаних з друзями або робочим місцем користувача.
Щоб класифікувати повідомлення електронної пошти, баєсівський спам-фільтр припускає, що повідомлення являє собою купу слів, які були висипані випадковим чином з однієї з двох торбин, і використовує байєсову ймовірність, щоб визначити, де він, швидше за все, буде.
Див. також
- Адитивне згладжування
- Модель торби слів у комп'ютерному зорі
- Класифікація документів
- Терм-документна матриця
- Виділяння ознак
- Гешування ознак
- Машинне навчання
- MinHash
- N-грам
- Обробка природної мови
- Векторна модель
- w-shingling
Примітки
- Sivic, Josef (April 2009). Efficient visual search of videos cast as text retrieval. IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 31, NO. 4. IEEE. с. 591–605.
- McTear et al 2016, p. 167.
- 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. Bibcode:2009arXiv0902.2206W. arXiv:0902.2206.
Література
- McTear, Michael (et al) (2016). The Conversational Interface. Springer International Publishing.