«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Встраивание слов с помощью Python: Wordc

Встраивание слов с помощью Python: Wordc

Опубликовано 8 ноября 2024 г.
Просматривать:788

Word-embedding-with-Python: Wordc

реализация word2vec с помощью Python (и Gensim)

  • Примечание: этот код написан на Python 3.6.1 ( Gensim 2.3.0)

  • Реализация Python и применение word2vec с Gensim

  • Оригинальная статья: Миколов Т., Чен К., Коррадо Г. и Дин Дж. (2013). Эффективная оценка представлений слов в векторном пространстве. Препринт arXiv arXiv:1301.3781.

import re
import numpy as np

from gensim.models import Word2Vec
from nltk.corpus import gutenberg
from multiprocessing import Pool
from scipy import spatial
  • Импорт набора обучающих данных
  • Импортировать корпус «Гамлета» Шекспира из библиотеки nltk.
sentences = list(gutenberg.sents('shakespeare-hamlet.txt'))   # import the corpus and convert into a list

print('Type of corpus: ', type(sentences))
print('Length of corpus: ', len(sentences))

Тип корпуса: класс 'list'
Длина корпуса: 3106

print(sentences[0])    # title, author, and year
print(sentences[1])
print(sentences[10])

['[', 'The', 'Трагедия', 'из', 'Гамлет', 'автор', 'Уильям', 'Шекспир', '1599', ']']
['Актус', 'Примус', '.']
['Фрэн', '.']

Предварительная обработка данных

  • Используйте модуль re для предварительной обработки данных
  • Преобразовать все буквы в нижний регистр
  • Удалить знаки препинания, цифры и т. д.
for i in range(len(sentences)):
    sentences[i] = [word.lower() for word in sentences[i] if re.match('^[a-zA-Z] ', word)]  
print(sentences[0])    # title, author, and year
print(sentences[1])
print(sentences[10])

['трагедия', 'о', 'Гамлет', 'автор', 'Уильям', 'Шекспир']
['актус', 'примус']
['фрэн']

Создать и обучить модель

  • Создайте модель word2vec и обучите ее с помощью корпуса Hamlet
  • Описание ключевых параметров (https://radimrehurek.com/gensim/models/word2vec.html)
    • предложения: данные обучения (должен представлять собой список токенизированных предложений)
    • размер: размер пространства для встраивания
    • sg: CBOW, если 0, пропуск грамма, если 1
    • окно: количество слов, учитываемых для каждого контекста (если окно
    • размер равен 3, учитываются 3 слова в левом районе и 3 слова в правом)
    • min_count: минимальное количество слов, которые можно включить в словарь
    • iter: количество итераций обучения
    • workers: количество рабочих потоков для обучения
model = Word2Vec(sentences = sentences, size = 100, sg = 1, window = 3, min_count = 1, iter = 10, workers = Pool()._processes)

model.init_sims(replace = True)

Сохранить и загрузить модель

  • Модель word2vec можно сохранить и загрузить локально
  • Это поможет сократить время на повторное обучение модели.
model.save('word2vec_model')
model = Word2Vec.load('word2vec_model')

Расчет сходства

  • Сходство между внедренными словами (т. е. векторами) можно вычислить с использованием таких показателей, как косинусное сходство.
model.most_similar('hamlet')

[('Горацио', 0.9978846311569214),
('королева', 0,9971947073936462),
('лаэрт', 0.9971820116043091),
('король', 0,9968599081039429),
('мать', 0.9966716170310974),
('где', 0,9966292381286621),
('олень', 0,9965540170669556),
('офелия', 0,9964221715927124),
('очень', 0,9963752627372742),
('о', 0,9963476657867432)]

v1 = model['king']
v2 = model['queen']

# define a function that computes cosine similarity between two words
def cosine_similarity(v1, v2):
    return 1 - spatial.distance.cosine(v1, v2)

cosine_similarity(v1, v2)

0,99437165260314941

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/ragoli86/word-embedding-with-python-word2vec-540c?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3