stringtranslate.com

Модель «Мешок слов»

Модель «мешка слов» — это модель текста, в которой используется представление текста, основанное на неупорядоченной коллекции (или « мешке ») слов. Он используется при обработке естественного языка и поиске информации (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 };  

Итак, как мы видим в алгебре мешков , «объединение» двух документов в представлении мешков слов формально представляет собой непересекающееся объединение , суммирующее кратности каждого элемента.


.

Приложение

Реализации модели «мешка слов» могут включать использование частот слов в документе для представления его содержимого. Частоты могут быть «нормализованы» посредством обратной частоты документа или tf–idf . Кроме того, для конкретной цели классификации были разработаны контролируемые альтернативы для учета метки класса документа. [4] Наконец, для некоторых задач вместо частот используется двоичное (наличие/отсутствие или 1/0) взвешивание (например, эта опция реализована в системе программного обеспечения машинного обучения WEKA ).

Реализация Python

# Сначала обязательно установите необходимые пакеты # pip install --upgrade pip # pip install tensorflow из  tensorflow  import  keras from  typing  import  List from  keras.preprocessing.text  import  Tokenizerпредложение  =  [ "Джон любит смотреть фильмы. Мэри тоже любит фильмы." ]def  print_bow ( предложение :  List [ str ])  ->  Нет :  tokenizer  =  Tokenizer ()  tokenizer . fit_on_texts ( предложение )  последовательности  =  токенизатор . texts_to_sequences ( предложение )  word_index  =  токенизатор . word_index  лук  =  {}  для  ключа  в  word_index :  лук [ ключ ]  =  последовательности [ 0 ] . счетчик ( word_index [ ключ ]) print ( f "Мешок слов, предложение 1: \n { лук } " )  print ( f "Мы нашли { len ( word_index ) } уникальных токенов." )print_bow ( предложение )

Хеш-трюк

Распространенной альтернативой использованию словарей является прием хеширования , при котором слова сопоставляются непосредственно с индексами с помощью хеш-функции. [5] Таким образом, для хранения словаря не требуется никакой памяти. Коллизии хэшей обычно решаются через освобожденную память для увеличения количества хеш-корзин [ необходимы пояснения ] . На практике хеширование упрощает реализацию моделей «мешка слов» и улучшает масштабируемость.

Смотрите также

Примечания

  1. ^ Сивич, Йозеф (апрель 2009 г.). «Эффективный визуальный поиск видео в виде текстового поиска» (PDF) . ТРАНЗАКЦИИ IEEE ПО АНАЛИЗУ ШАБЛОНОВ И МАШИННОМУ ИНТЕЛЛЕКТУ, VOL. 31, НЕТ. 4 . оппозиция. стр. 591–605.
  2. ^ МакТир и др. 2016, стр. 167.
  3. ^ Харрис, Зеллиг (1954). «Структура распределения». Слово . 10 (2/3): 146–62. дои : 10.1080/00437956.1954.11659520. И этот запас комбинаций элементов становится фактором, повлиявшим на последующий выбор... ибо язык — это не просто мешок слов, а инструмент с особыми свойствами, которые сформировались в ходе его использования.
  4. ^ Ёнджун Ко (2012). «Исследование схем взвешивания терминов с использованием информации о классах для классификации текста». СИГИР'12 . АКМ .
  5. ^ Вайнбергер, KQ; Дасгупта А.; Лэнгфорд Дж.; Смола А.; Аттенберг, Дж. (2009). «Хеширование функций для крупномасштабного многозадачного обучения». Материалы 26-й ежегодной международной конференции по машинному обучению . стр. 1113–1120. arXiv : 0902.2206 . Бибкод : 2009arXiv0902.2206W. дои : 10.1145/1553374.1553516. ISBN 9781605585161. S2CID  291713.

Рекомендации