Рубрики
Без рубрики

Создание сумки слов модели с нуля в Python

Сумка моделей слов – очень простой способ представления текстовых данных для алгоритма изучения машины. Оказалось, что он очень эффективен в

Автор оригинала: 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. Мы также сосредоточены на ограничениях этой модели.

Счастливое обучение!