Автор оригинала: Pankaj Kumar.
Сумка моделей слов – очень простой способ представления текстовых данных для алгоритма изучения машины. Доказано, что он очень эффективен в проблемных областях NLP, таких как классификация документов.
В этой статье мы реализуем модель банта с помощью Python.
Понимание сумки модельной модели слов
Перед внедрением сумки слов модели, давайте просто получим интуицию о том, как она работает.
Рассмотрим следующий текст, который мы хотим представлять в форме вектора, используя модель лука:
- Она любит пиццу, пицца вкусная.
- Она хороший человек.
- Хорошие люди лучшие.
Теперь мы создаем набор всех слов в данном тексте.
set = {'she', 'loves', 'pizza', 'is', 'delicious', 'a', 'good', 'person', 'people', 'are', 'the', 'best'}
У нас есть 12 разных слов в нашем тексте корпус. Это будет длина нашего вектора.
Теперь мы просто должны подсчитать частоту появления слов в каждом документе, и результат, который мы получаем, это мешок слова, представленные предложениями.
В приведенном выше показателе, показано, что мы просто поддерживаем количество раз, когда каждое слово происходит в предложении.
Реализация сумки слов модели в Python
Давайте приступим к приведению вышеуказанных концепций в код.
1. Предварительная обработка данных
Предварительно обработка данных и токена предложений. (Мы также преобразуем слова к снижению случая, чтобы избежать повторения слов)
#Importing the required modules import numpy as np from nltk.tokenize import word_tokenize from collections import defaultdict #Sample text corpus data = ['She loves pizza, pizza is delicious.','She is a good person.','good people are the best.'] #clean the corpus. sentences = [] vocab = [] for sent in data: x = word_tokenize(sent) sentence = [w.lower() for w in x if w.isalpha() ] sentences.append(sentence) for word in sentence: if word not in vocab: vocab.append(word) #number of words in the vocab len_vector = len(vocab)
2. Назначьте индекс слова
Создайте словарь индекса, чтобы назначить уникальный индекс для каждого слова
#Index dictionary to assign an index to each word in vocabulary index_word = {} i = 0 for word in vocab: index_word[word] = i i += 1
3. Определите сумку слов модели функцию
Наконец-то определяя мешок слов функции для возврата векторного представления нашего входного предложения.
def bag_of_words(sent): count_dict = defaultdict(int) vec = np.zeros(len_vector) for item in sent: count_dict[item] += 1 for key,item in count_dict.items(): vec[index_word[key]] = item return vec
4. Тестирование нашей модели
С полной реализацией сделана, давайте проверим нашу функциональность модели.
vector = bag_of_words(sentences[0]) print(vector)
Ограничения сумки-слов
Несмотря на то, что мешок слов модели очень просты для реализации, у него все еще есть недостатки.
- Рекрестота : Модели лука создают редкие векторы, которые увеличивают космические сложности, а также усложняют его алгоритм прогнозирования для изучения.
- Смысл : Порядок последовательности не сохраняется в модели лука, следовательно, контекст и значение предложения могут быть потеряны.
Заключение
Эта статья была все о том, как работает модель лук, и мы реализовали нашу собственную модель с нуля с помощью Python. Мы также сосредоточены на ограничениях этой модели.
Счастливое обучение!