Модель набора слов - это упрощенное представление, используемое при обработке естественного языка и поиске информации (IR). В этой модели текст (например, предложение или документ) представлен как мешок (мультимножество) его слов без учета грамматики и даже порядка слов, но с сохранением множественности . Модель мешка слов также использовалась для компьютерного зрения . [1]
Модель набора слов обычно используется в методах классификации документов, где (частота) появления каждого слова используется как признак для обучения классификатора . [2]
Раннее упоминание «мешка слов» в лингвистическом контексте можно найти в статье Зеллига Харриса о структуре распределения 1954 года . [3]
Пример реализации
Следующее моделирует текстовый документ с использованием набора слов. Вот два простых текстовых документа:
(1) Джон любит смотреть фильмы. Мэри тоже любит фильмы.
(2) Мэри также любит смотреть футбольные матчи.
На основе этих двух текстовых документов для каждого документа составляется список следующим образом:
"Джон" , "лайки" , "в" , "смотреть" , "фильмы" , "Мэри" , "лайки" , "фильмы" , "тоже"«Мэри» , «также» , «лайки» , «на» , «смотреть» , «футбол» , «игры»
Представление каждого набора слов как объект JSON и присвоение соответствующей переменной JavaScript :
BoW1 = { "Джон" : 1 , "любит" : 2 , " кому " : 1 , "смотреть" : 1 , "фильмы" : 2 , "Мэри" : 1 , "тоже" : 1 }; BoW2 = { "Мэри" : 1 , "также" : 1 , "нравится" : 1 , " кому " : 1 , "смотреть" : 1 , "футбол" : 1 , "игры" : 1 };
Каждый ключ - это слово, а каждое значение - это количество вхождений этого слова в данный текстовый документ.
Порядок элементов свободный, поэтому, например {"too":1,"Mary":1,"movies":2,"John":1,"watch":1,"likes":2,"to":1}
, также эквивалентен BoW1 . Это также то, чего мы ожидаем от строгого представления объекта JSON .
Примечание: если другой документ подобен объединению этих двух,
(3) Джон любит смотреть фильмы. Мэри тоже любит фильмы. Еще Мэри любит смотреть футбольные матчи.
его представление в JavaScript будет:
BoW3 = { «Джон» : 1 , «нравится» : 3 , « кому » : 2 , «смотреть» : 2 , «фильмы» : 2 , «Мэри» : 2 , «тоже» : 1 , «также» : 1 , "футбол" : 1 , "игры" : 1 };
Итак, как мы видим в алгебре мешков , «объединение» двух документов в представлении мешков слов является, формально, несвязным объединением , суммирующим кратности каждого элемента.
.
Заявление
На практике модель набора слов в основном используется как инструмент для создания признаков. После преобразования текста в «мешок слов» мы можем вычислить различные меры для характеристики текста. Наиболее распространенный тип характеристик или характеристик, вычисляемых по модели «мешка слов», - это частота термина, а именно, сколько раз термин встречается в тексте. В приведенном выше примере мы можем построить следующие два списка для записи частот терминов всех отдельных слов (BoW1 и BoW2, упорядоченные, как в BoW3):
( 1 ) [ 1 , 2 , 1 , 1 , 2 , 1 , 1 , 0 , 0 , 0 ] ( 2 ) [ 0 , 1 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 1 ]
Каждая запись в списках относится к количеству соответствующей записи в списке (это также представление гистограммы). Например, в первом списке (который представляет документ 1) первые две записи - «1,2»:
- Первая запись соответствует слову «Джон», которое является первым словом в списке, и его значение равно «1», поскольку «Джон» появляется в первом документе один раз.
- Вторая запись соответствует слову «нравится», которое является вторым словом в списке, и его значение равно «2», поскольку «нравится» встречается в первом документе дважды.
Это представление списка (или вектора) не сохраняет порядок слов в исходных предложениях. Это лишь главная особенность модели «Мешок слов». Такое представление имеет несколько успешных применений, таких как фильтрация электронной почты . [1]
Однако частота терминов не обязательно является лучшим представлением текста. Общие слова, такие как «the», «a», «to», почти всегда встречаются в тексте чаще всего. Таким образом, наличие большого количества необработанных данных не обязательно означает, что соответствующее слово более важно. Чтобы решить эту проблему, один из самых популярных способов «нормализовать» частоту терминов - это взвесить термин по величине, обратной частоте документа, или tf – idf . Кроме того, для конкретной цели классификации были разработаны контролируемые альтернативы для учета метки класса документа. [4] Наконец, бинарная (наличие / отсутствие или 1/0) взвешивание используется вместо частот для некоторых задач (например, эта опция реализована в ВЕКА машинного обучения системы программного обеспечения).
n -граммная модель
Модель «Сумка слов» - это неупорядоченное представление документа - имеет значение только количество слов. Например, в приведенном выше примере «Джон любит смотреть фильмы. Мэри тоже любит фильмы», набор слов не покажет, что глагол «нравится» всегда следует за именем человека в этом тексте. В качестве альтернативы модель n -граммы может хранить эту пространственную информацию. Применительно к тому же примеру выше, модель биграммы проанализирует текст на следующие единицы и сохранит частоту термина каждой единицы, как и раньше.
[ «Джон любит» , «любит» , «смотреть» , «смотреть фильмы» , «Мэри любит» , «любит фильмы» , «фильмы тоже» , ]
Концептуально мы можем рассматривать модель мешка слов как частный случай модели n-грамм с n = 1. Для n> 1 модель называется w-shingling (где w эквивалентно n, обозначающему количество сгруппированных слов). См. Языковую модель для более подробного обсуждения.
Реализация Python
от keras.preprocessing.text импорта Tokenizerпредложение = [ "Джон любит смотреть фильмы. Мэри тоже любит фильмы." ]Защиту print_bow ( предложение : ул ) -> None : токенизатор = Tokenizer () токенизатор . fit_on_texts ( предложение ) последовательности = токенизатор . text_to_sequences ( предложение ) word_index = tokenizer . word_index bow = {} для ключа в word_index : bow [ key ] = последовательностей [ 0 ] . count ( word_index [ ключ ]) print ( f "Пакет словесного предложения 1: \ n { bow } " ) print ( f 'Мы нашли { len ( word_index ) } уникальных токенов.' )print_bow ( предложение )
Уловка хеширования
Распространенной альтернативой использованию словарей является трюк с хешированием , при котором слова отображаются непосредственно в индексы с помощью функции хеширования. [5] Таким образом, для хранения словаря не требуется памяти. Конфликты хеширования обычно устраняются через освободившуюся память для увеличения количества хэш-сегментов. На практике хеширование упрощает реализацию моделей набора слов и улучшает масштабируемость.
Пример использования: фильтрация спама
При байесовской фильтрации спама сообщение электронной почты моделируется как неупорядоченный набор слов, выбранных из одного из двух распределений вероятностей: одно представляет спам, а другое - законную электронную почту («ветчина»). Представьте, что есть два буквальных мешка, наполненных словами. Один пакет заполнен словами, найденными в спам-сообщениях, а другой - словами, найденными в законной электронной почте. Хотя любое данное слово, вероятно, находится где-то в обоих пакетах, пакет «спам» будет содержать слова, связанные со спамом, такие как «акции», «Виагра» и «купить», значительно чаще, а пакет «ветчина» будет содержать больше слов, относящихся к друзьям или работе пользователя.
Чтобы классифицировать сообщение электронной почты, байесовский фильтр спама предполагает, что сообщение представляет собой стопку слов, которая была случайным образом вылита из одного из двух пакетов, и использует байесовскую вероятность, чтобы определить, в какой сумке оно с большей вероятностью находится.
Смотрите также
Заметки
- ^ a b Сивич, Йозеф (апрель 2009 г.). «Эффективный визуальный поиск видео в формате текстового поиска» (PDF) . IEEE TRANSACTIONS ПО АНАЛИЗУ ШАБЛОНОВ И МАШИННОМУ ИНТЕЛЛЕКТУ, ТОМ. 31, NO. 4 . IEEE. С. 591–605.
- ^ МакТир и др., 2016, стр. 167.
- ^ Харрис, Зеллиг (1954). «Распределительная структура». Слово . 10 (2/3): 146–62. DOI : 10.1080 / 00437956.1954.11659520 .
И этот набор комбинаций элементов становится фактором, влияющим на последующий выбор ... ибо язык - это не просто набор слов, но инструмент с особыми свойствами, которые были сформированы в процессе его использования.
- ^ Ёнджун Ко (2012). «Изучение схем взвешивания терминов с использованием информации о классах для классификации текста». СИГИР'12 . ACM .
- ^ Weinberger, KQ; Дасгупта А .; Langford J .; Смола А .; Аттенберг, Дж. (2009). «Функция хеширования для крупномасштабного многозадачного обучения». Труды 26-й ежегодной международной конференции по машинному обучению : 1113–1120. arXiv : 0902.2206 . Bibcode : 2009arXiv0902.2206W .
Рекомендации
- МакТир, Майкл (и др.) (2016). Разговорный интерфейс . Издательство Springer International.