Модель «Мешок слов»
Модель «мешка слов» (BoW) — это модель текста, в которой используется представление текста, основанное на неупорядоченной коллекции (« мешок ») слов. Он используется при обработке естественного языка и поиске информации (IR). Он игнорирует порядок слов (и, следовательно, большую часть синтаксиса и грамматики), но учитывает множественность .
Модель «мешка слов» обычно используется в методах классификации документов , где, например, частота (частота) появления каждого слова используется в качестве признака для обучения классификатора . [1] Он также использовался для компьютерного зрения . [2]
Раннее упоминание «мешка слов» в лингвистическом контексте можно найти в Зеллига Харриса статье «Структура распределения » 1954 года . [3]
Определение
[ редактировать ]Следующее моделирует текстовый документ с использованием набора слов. Вот два простых текстовых документа:
(1) John likes to watch movies. Mary likes movies too.
(2) Mary also likes to watch football games.
На основе этих двух текстовых документов для каждого документа строится список следующим образом:
"John","likes","to","watch","movies","Mary","likes","movies","too"
"Mary","also","likes","to","watch","football","games"
Представление каждого набора слов в виде объекта JSON и присвоение соответствующей переменной JavaScript :
BoW1 = {"John":1,"likes":2,"to":1,"watch":1,"movies":2,"Mary":1,"too":1};
BoW2 = {"Mary":1,"also":1,"likes":1,"to":1,"watch":1,"football":1,"games":1};
Каждый ключ — это слово, а каждое значение — это количество вхождений этого слова в данный текстовый документ.
Порядок элементов свободный, так, например {"too":1,"Mary":1,"movies":2,"John":1,"watch":1,"likes":2,"to":1}
также эквивалентен BoW1 . Это также то, чего мы ожидаем от строгого представления объекта JSON .
Примечание: если другой документ представляет собой объединение этих двух,
(3) John likes to watch movies. Mary likes movies too. Mary also likes to watch football games.
его представление JavaScript будет:
BoW3 = {"John":1,"likes":3,"to":2,"watch":2,"movies":2,"Mary":2,"too":1,"also":1,"football":1,"games":1};
Итак, как мы видим в алгебре мешков , «объединение» двух документов в представлении мешков слов формально представляет собой непересекающееся объединение , суммирующее кратности каждого элемента.
Порядок слов
[ редактировать ]Представление текста в формате BoW удаляет весь порядок слов. Например, представления BoW слов « человек кусает собаку » и «собака кусает человека» одинаковы, поэтому любой алгоритм, работающий с представлением текста BoW, должен обрабатывать их одинаково. Несмотря на отсутствие синтаксиса и грамматики, представление BoW выполняется быстро и может быть достаточным для простых задач, не требующих порядка слов. Например, при классификации документов , если слова «акции», «торговля», «инвесторы» встречаются несколько раз, то текст, скорее всего, представляет собой финансовый отчет, даже если этого будет недостаточно, чтобы провести различие между
Вчера инвесторы росли, а сегодня отступают.
и
Вчера инвесторы отступали, но сегодня они растут.
и поэтому представление BoW будет недостаточным для определения подробного значения документа.
Реализации
[ редактировать ]Реализации модели «мешка слов» могут включать использование частот слов в документе для представления его содержимого. Частоты могут быть «нормализованы» посредством обратной частоты документа или tf–idf . Кроме того, для конкретной цели классификации были разработаны контролируемые альтернативы для учета метки класса документа. [4] Наконец, для некоторых задач вместо частот используется двоичное (наличие/отсутствие или 1/0) взвешивание (например, эта опция реализована в системе программного обеспечения машинного обучения WEKA ).
Реализация Python
[ редактировать ]# Make sure to install the necessary packages first
# pip install --upgrade pip
# pip install tensorflow
from tensorflow import keras
from typing import List
from keras.preprocessing.text import Tokenizer
sentence = ["John likes to watch movies. Mary likes movies too."]
def print_bow(sentence: List[str]) -> None:
tokenizer = Tokenizer()
tokenizer.fit_on_texts(sentence)
sequences = tokenizer.texts_to_sequences(sentence)
word_index = tokenizer.word_index
bow = {}
for key in word_index:
bow[key] = sequences[0].count(word_index[key])
print(f"Bag of word sentence 1:\n{bow}")
print(f"We found {len(word_index)} unique tokens.")
print_bow(sentence)
Хеш-трюк
[ редактировать ]Распространенной альтернативой использованию словарей является прием хеширования , при котором слова сопоставляются непосредственно с индексами с помощью хеш-функции. [5] Таким образом, для хранения словаря не требуется никакой памяти. Коллизии хэшей обычно разрешаются через освобожденную память для увеличения количества хеш-корзин. [ нужны разъяснения ] . На практике хеширование упрощает реализацию моделей «мешка слов» и улучшает масштабируемость.
См. также
[ редактировать ]- Аддитивное сглаживание
- Извлечение признаков
- Машинное обучение
- Минхеш
- Векторная космическая модель
- ш-черепица
Примечания
[ редактировать ]- ^ МакТир и др. 2016, стр. 167
- ^ Сивич, Йозеф (апрель 2009 г.). «Эффективный визуальный поиск видео в виде текстового поиска» (PDF) . ТРАНЗАКЦИИ IEEE ПО АНАЛИЗУ ШАБЛЕН И МАШИННОМУ ИНТЕЛЛЕКТУ, VOL. 31, НЕТ. 4 . оппозиция. стр. 591–605.
- ^ Харрис, Зеллиг (1954). «Структура распределения». Слово . 10 (2/3): 146–62. дои : 10.1080/00437956.1954.11659520 .
И этот запас комбинаций элементов становится фактором, повлиявшим на последующий выбор... ибо язык — это не просто мешок слов, а инструмент с особыми свойствами, которые сформировались в ходе его использования.
- ^ Ёнджун Ко (2012). «Исследование схем взвешивания терминов с использованием информации о классах для классификации текста». СИГИР'12 . АКМ .
- ^ Вайнбергер, КК; Дасгупта А.; Лэнгфорд Дж.; Смола А.; Аттенберг, Дж. (2009). «Хеширование функций для крупномасштабного многозадачного обучения». Материалы 26-й ежегодной международной конференции по машинному обучению . стр. 1113–1120. arXiv : 0902.2206 . Бибкод : 2009arXiv0902.2206W . дои : 10.1145/1553374.1553516 . ISBN 9781605585161 . S2CID 291713 .
Ссылки
[ редактировать ]- Мактир, Майкл (и др.) (2016). Разговорный интерфейс . Международное издательство Спрингер.