Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Мішок Слів | Базові Текстові Моделі
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Вступ до NLP з Python

bookМішок Слів

Розуміння моделі BoW

Модель "мішок слів" (BoW) представляє документи у вигляді векторів, де кожен вимір відповідає унікальному слову. Кожен вимір може відображати наявність слова в документі (1 — якщо присутнє, 0 — якщо відсутнє) або його частоту (кількість повторень слова). Таким чином, BoW-моделі можуть бути бінарними або частотними.

Розглянемо, як одне й те саме речення (документ) представляється кожним типом:

Бінарна модель представляє цей документ як вектор [1, 1, 1], тоді як частотна модель — як [2, 1, 2], враховуючи частоту слів.

Реалізація BoW

Реалізація моделі BoW є простою задачею, особливо з використанням бібліотеки sklearn (scikit-learn) та її класу CountVectorizer.

Нижче наведено реалізацію бінарної моделі "мішок слів":

12345678910111213
from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a binary Bag of Words model vectorizer = CountVectorizer(binary=True) # Generate a BoW matrix bow_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a dense array print(bow_matrix.toarray())
copy

Кожен рядок у матриці відповідає окремому документу, а кожен стовпець — токену (слову). Для візуалізації ми перетворили цю розріджену матрицю на щільний двовимірний масив за допомогою методу .toarray().

Note
Дізнайтеся більше

Розріджена матриця — це матриця, у якій більшість елементів дорівнює нулю. Вона використовується для ефективного представлення та обробки даних із великою кількістю нульових значень, заощаджуючи пам'ять і обчислювальні ресурси шляхом зберігання лише ненульових елементів.

Щоб створити частотну модель «мішок слів», достатньо видалити параметр binary=True, оскільки його значення за замовчуванням — False:

1234567891011
from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a frequency-based Bag of Words model vectorizer = CountVectorizer() bow_matrix = vectorizer.fit_transform(corpus) print(bow_matrix.toarray())
copy

Перетворення матриці у DataFrame

Зручно перетворити отриману матрицю «мішка слів» у pandas DataFrame. Крім того, екземпляр CountVectorizer має метод get_feature_names_out(), який повертає масив унікальних слів (імен ознак), використаних у моделі. Ці імена ознак можна використовувати як стовпці DataFrame:

12345678910111213
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] vectorizer = CountVectorizer() bow_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix to a DataFrame bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Завдяки цьому представленню можна легко отримати не лише вектор для окремого документа, а й вектор для окремого слова:

12345678910111213
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] vectorizer = CountVectorizer() bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) # Print the vector for 'global' as a NumPy array print(f"Vector for the word 'global': {bow_df['global'].values}")
copy

Оскільки кожне унікальне слово відповідає окремому стовпцю, отримати вектор слова так само просто, як звернутися до стовпця у DataFrame, вказавши слово (наприклад, 'global'). Також використовується атрибут values, щоб отримати масив замість Series як результат.

question-icon

Що представляють різні компоненти матриці BoW?

Rows:
Columns:

A particular element of the matrix:

Натисніть або перетягніть елементи та заповніть пропуски

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookМішок Слів

Свайпніть щоб показати меню

Розуміння моделі BoW

Модель "мішок слів" (BoW) представляє документи у вигляді векторів, де кожен вимір відповідає унікальному слову. Кожен вимір може відображати наявність слова в документі (1 — якщо присутнє, 0 — якщо відсутнє) або його частоту (кількість повторень слова). Таким чином, BoW-моделі можуть бути бінарними або частотними.

Розглянемо, як одне й те саме речення (документ) представляється кожним типом:

Бінарна модель представляє цей документ як вектор [1, 1, 1], тоді як частотна модель — як [2, 1, 2], враховуючи частоту слів.

Реалізація BoW

Реалізація моделі BoW є простою задачею, особливо з використанням бібліотеки sklearn (scikit-learn) та її класу CountVectorizer.

Нижче наведено реалізацію бінарної моделі "мішок слів":

12345678910111213
from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a binary Bag of Words model vectorizer = CountVectorizer(binary=True) # Generate a BoW matrix bow_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix into a dense array print(bow_matrix.toarray())
copy

Кожен рядок у матриці відповідає окремому документу, а кожен стовпець — токену (слову). Для візуалізації ми перетворили цю розріджену матрицю на щільний двовимірний масив за допомогою методу .toarray().

Note
Дізнайтеся більше

Розріджена матриця — це матриця, у якій більшість елементів дорівнює нулю. Вона використовується для ефективного представлення та обробки даних із великою кількістю нульових значень, заощаджуючи пам'ять і обчислювальні ресурси шляхом зберігання лише ненульових елементів.

Щоб створити частотну модель «мішок слів», достатньо видалити параметр binary=True, оскільки його значення за замовчуванням — False:

1234567891011
from sklearn.feature_extraction.text import CountVectorizer corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] # Create a frequency-based Bag of Words model vectorizer = CountVectorizer() bow_matrix = vectorizer.fit_transform(corpus) print(bow_matrix.toarray())
copy

Перетворення матриці у DataFrame

Зручно перетворити отриману матрицю «мішка слів» у pandas DataFrame. Крім того, екземпляр CountVectorizer має метод get_feature_names_out(), який повертає масив унікальних слів (імен ознак), використаних у моделі. Ці імена ознак можна використовувати як стовпці DataFrame:

12345678910111213
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] vectorizer = CountVectorizer() bow_matrix = vectorizer.fit_transform(corpus) # Convert a sparse matrix to a DataFrame bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Завдяки цьому представленню можна легко отримати не лише вектор для окремого документа, а й вектор для окремого слова:

12345678910111213
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ 'Global climate change poses significant risks to global ecosystems.', 'Global warming and climate change demand urgent action.', 'Sustainable environmental practices support environmental conservation.', ] vectorizer = CountVectorizer() bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) # Print the vector for 'global' as a NumPy array print(f"Vector for the word 'global': {bow_df['global'].values}")
copy

Оскільки кожне унікальне слово відповідає окремому стовпцю, отримати вектор слова так само просто, як звернутися до стовпця у DataFrame, вказавши слово (наприклад, 'global'). Також використовується атрибут values, щоб отримати масив замість Series як результат.

question-icon

Що представляють різні компоненти матриці BoW?

Rows:
Columns:

A particular element of the matrix:

Натисніть або перетягніть елементи та заповніть пропуски

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 3
some-alt