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

Python Gensim Word2Vec.

Gensim, Gensim Word2Vec, Word2Vec Python, Python Gensim Tutorial, Python Word To Vector Modeling, Gensim Topic Modeling, Gensim Tutorial, Google Word2Vec, Text Mining в Python, добыча данных в Python

Автор оригинала: Pankaj Kumar.

Генсим Это векторное пространство с открытым исходным кодом и инструментариями для моделирования темы. Это реализовано в Python и использует Numpy & Scipy Отказ Он также использует Cython для производительности.

1. Модуль Python Gensim

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

Это на самом деле отличает его от других, так как большинство из них только целевые в памяти и пакетной обработки. В основе генсима несущимизных алгоритмов, таких как скрытый семантический анализ, скрытое распределение Дирихле осматривает слово статистические сопонствуции в корпусе учебных документов для обнаружения семантической структуры документов.

2. Зачем использовать Gensim?

У Генсима есть различные функции, которые дают ему преимущество перед другими научными пакетами, как:

  • Независимая память – вам не нужен весь тренировочный корпус для проживания в оперативной памяти в данный момент времени, что означает, что он может обрабатывать большие, веб-шкалы с легкостью.
  • Он предоставляет обертки и преобразователи ввода/вывода вокруг нескольких популярных форматов данных.
  • Gensim обладает эффективными реализациями для различных векторных пространственных алгоритмов, которые включают TF-IDF, распределенные инкрементные латентные распределения Дирихле (LDA) или случайную проекцию, распределенный инкрементный латентный семантический анализ, также добавление новых действительно легко.
  • Это также предоставляет запросы сходства для документов в их семантическом представлении.

3. Начало работы с Gensim

Прежде чем начать работу с GENSIM, вам нужно проверить, готова ли ваша машина для работы с ней. Gensim предполагает, что следует работать на вашей машине:

  • Python 2.6 или позже
  • Numpy 1.3 или позже
  • Scipy 0,7 или позже

3.1) Установите библиотеку Gensim

После того, как у вас есть вышеупомянутые требования, удовлетворенные, ваше устройство готово к Gensim. Вы можете получить его с помощью PIP. Просто перейдите к вашему терминалу и запустите следующую команду:

sudo pip install --upgrade gensim

3.2) Использование Gensim

Вы можете использовать Gensim в любом из ваших сценариев Python, просто импортируя его как любой другой пакет. Просто используйте следующий импорт:

import gensim

3.3) Разработайте вложение Gensim Word2Vec

Мы много говорили о тексте, Word и Vector, вводя в Gensim, давайте начнем с разработки слова 2 вложении вектора 2:

from gensim.models import Word2Vec
# define training data
sentences = [['this', 'is', 'the', 'first', 'sentence', 'for', 'word2vec'],
			['this', 'is', 'the', 'second', 'sentence'],
			['yet', 'another', 'sentence'],
			['one', 'more', 'sentence'],
			['and', 'the', 'final', 'sentence']]
# train model
model = Word2Vec(sentences, min_count=1)
# summarize the loaded model
print(model)
# summarize vocabulary
words = list(model.wv.vocab)
print(words)
# access vector for one word
print(model['sentence'])
# save model
model.save('model.bin')
# load model
new_model = Word2Vec.load('model.bin')
print(new_model)

Давайте запустим код, мы ожидаем вектора для каждого слова:

3.4) Визуализируйте встраивание слова

Мы можем видеть несколько векторов для каждого слова в наших тренировочных данных, и это определенно трудно понять. Визуализация может помочь нам в этом сценарии:

from gensim.models import Word2Vec
from sklearn.decomposition import PCA
from matplotlib import pyplot
# define training data
sentences = [['this', 'is', 'the', 'first', 'sentence', 'for', 'word2vec'],
			['this', 'is', 'the', 'second', 'sentence'],
			['yet', 'another', 'sentence'],
			['one', 'more', 'sentence'],
			['and', 'the', 'final', 'sentence']]
# train model
model = Word2Vec(sentences, min_count=1)
# fit a 2d PCA model to the vectors
X = model[model.wv.vocab]
pca = PCA(n_components=2)
result = pca.fit_transform(X)
# create a scatter plot of the projection
pyplot.scatter(result[:, 0], result[:, 1])
words = list(model.wv.vocab)
for i, word in enumerate(words):
	pyplot.annotate(word, xy=(result[i, 0], result[i, 1]))
pyplot.show()

Давайте запустим программу и посмотрим, получаем ли мы что-то проще, и мы можем легко понять:

3.5) Загрузить вложение Google Word2Vec

Использование существующих предварительно обученных данных, может быть не лучший подход для приложения NLP, но это может быть действительно трудоемким и трудной задачей для обучения ваших собственных данных в этот момент, поскольку требуется много компьютерных оперативных операций и времени. Таким образом, мы используем данные Google для этого примера. Для этого примеру вам нужно будет иметь файл, который вы можете найти здесь Отказ

Загрузите файл, расстегните его, и мы использовали двоичный файл внутри.

Вот образец программы:

from gensim.models import KeyedVectors
# load the google word2vec model
filename = 'GoogleNews-vectors-negative300.bin'
model = KeyedVectors.load_word2vec_format(filename, binary=True)
# calculate: (king - man) + woman = ?
result = model.most_similar(positive=['woman', 'king'], negative=['man'], topn=1)
print(result)

Приведенный выше пример загружает слово Google в данные VEC, а затем рассчитывает King-Man + Woman =? Отказ Мы должны ожидать следующее:

[('queen', 0.7118192315101624)]

Давайте посмотрим на вывод этой программы:

3.6) Загрузить встраивание перчатки Стэнфорда

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

Поскольку мы используем существующие данные, мы будем нуждаться в файле, это относительно меньшее и может быть загружено из здесь Отказ

Сначала нам нужно будет преобразовать файл в формат VEC, и это можно сделать как:

from gensim.scripts.glove2word2vec import glove2word2vec
glove_input_file = 'glove.6B.100d.txt'
word2vec_output_file = 'glove.6B.100d.txt.word2vec'
glove2word2vec(glove_input_file, word2vec_output_file)

Как только это сделано, мы готовы отправиться вперед с нашим примером как:

# load the Stanford GloVe model
filename = 'glove.6B.100d.txt.word2vec'
model = KeyedVectors.load_word2vec_format(filename, binary=False)
# calculate: (king - man) + woman = ?
result = model.most_similar(positive=['woman', 'king'], negative=['man'], topn=1)
print(result)

Опять же, мы ожидаем, что королева как вывод, давайте запустим программу и проверку результатов. Давайте посмотрим на вывод этой программы:

4. Вывод

В этом руководстве мы видели, как производить и загружать слои вложения слова в Python, используя Gensim. Чтобы быть конкретным, мы узнали:

  • Для обучения нашего собственного слова встраиваемой модели на текстовые данные.
  • Визуализировать обученный слов встраиваемой модели.
  • Для загрузки предварительно обученной перчатки и Word2Vec слов встраивает модели из Стэнфорда и Google соответственно

Мы видели, что Gensim позволяет легко преобразовать слова к векторы и очень эффективно. Также запросирование на установленном узоре легко и эффективно.