"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Incorporação de palavras com Python: Wordc

Incorporação de palavras com Python: Wordc

Publicado em 2024-11-08
Navegar:987

Word-embedding-with-Python: Wordc

Implementação word2vec com Python (& Gensim)

  • Nota: Este código está escrito em Python 3.6.1 ( Gensim 2.3.0)

  • Implementação Python e aplicação de word2vec com Gensim

  • Artigo original: Mikolov, T., Chen, K., Corrado, G., & Dean, J. (2013). Estimativa eficiente de representações de palavras no espaço vetorial. Pré-impressão 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
  • Importar conjunto de dados de treinamento
  • Importar o corpus Hamlet de Shakespeare da biblioteca 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))

Tipo de corpus: classe 'lista'
Comprimento do corpus: 3106

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

['[', 'O', 'Tragédia', 'de', 'Hamlet', 'por', 'William', 'Shakespeare', '1599', ']']
['Actus', 'Primus', '.']
['Fran', '.']

Pré-processar dados

  • Use o módulo re para pré-processar dados
  • Converta todas as letras em minúsculas
  • Remova pontuações, números, etc.
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])

['o', 'tragédia', 'de', 'hamlet', 'por', 'william', 'shakespeare']
['actus', 'primus']
['fran']

Criar e treinar modelo

  • Crie um modelo word2vec e treine-o com Hamlet corpus
  • Descrição do parâmetro principal (https://radimrehurek.com/gensim/models/word2vec.html)
    • frases: dados de treinamento (deve ser uma lista com frases tokenizadas)
    • tamanho: dimensão do espaço de incorporação
    • sg: CBOW se 0, pular grama se 1
    • janela: número de palavras contabilizadas para cada contexto (se a janela
    • o tamanho é 3, 3 palavras na vizinhança esquerda e 3 palavras na vizinhança direita são consideradas)
    • min_count: contagem mínima de palavras a serem incluídas no vocabulário
    • iter: número de iterações de treinamento
    • workers: número de threads de trabalho para treinar
model = Word2Vec(sentences = sentences, size = 100, sg = 1, window = 3, min_count = 1, iter = 10, workers = Pool()._processes)

model.init_sims(replace = True)

Salvar e carregar modelo

  • o modelo word2vec pode ser salvo e carregado localmente
  • Isso pode reduzir o tempo para treinar o modelo novamente
model.save('word2vec_model')
model = Word2Vec.load('word2vec_model')

Cálculo de similaridade

  • A semelhança entre palavras incorporadas (ou seja, vetores) pode ser calculada usando métricas como similaridade de cosseno
model.most_similar('hamlet')

[('horatio', 0,9978846311569214),
('rainha', 0,9971947073936462),
('laertes', 0,9971820116043091),
('rei', 0,9968599081039429),
('mãe', 0,9966716170310974),
('onde', 0,9966292381286621),
('deere', 0,9965540170669556),
('ofélia', 0,9964221715927124),
('muito', 0,9963752627372742),
('oh', 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

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/ragoli86/word-embedding-with-python-word2vec-540c?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3