Автор оригинала: 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 позволяет легко преобразовать слова к векторы и очень эффективно. Также запросирование на установленном узоре легко и эффективно.