„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Worteinbettung mit Python: Wordc

Worteinbettung mit Python: Wordc

Veröffentlicht am 08.11.2024
Durchsuche:416

Word-embedding-with-Python: Wordc

word2vec-Implementierung mit Python (& Gensim)

  • Hinweis: Dieser Code ist in Python 3.6.1 (Gensim 2.3.0) geschrieben

  • Python-Implementierung und Anwendung von word2vec mit Gensim

  • Originalarbeit: Mikolov, T., Chen, K., Corrado, G. & Dean, J. (2013). Effiziente Schätzung von Wortdarstellungen im Vektorraum. arXiv-Vorabdruck 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
  • Trainingsdatensatz importieren
  • Importieren Sie Shakespeares Hamlet-Korpus aus der NLTK-Bibliothek
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))

Korpustyp: Klasse 'Liste'
Korpuslänge: 3106

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

['[', 'The', 'Tragedie', 'of', 'Hamlet', 'by', 'William', 'Shakespeare', '1599', ']']
['Actus', 'Primus', '.']
['Fran', '.']

Daten vorverarbeiten

  • Re-Modul zur Vorverarbeitung von Daten verwenden
  • Alle Buchstaben in Kleinbuchstaben umwandeln
  • Entfernen Sie Satzzeichen, Zahlen usw.
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])

['the', 'tragedie', 'of', 'hamlet', 'by', 'william', 'shakespeare']
['actus', 'primus']
['fran']

Modell erstellen und trainieren

  • Erstellen Sie ein Word2VEC-Modell und trainieren Sie es mit dem Hamlet-Korpus
  • Beschreibung der wichtigsten Parameter (https://radimrehurek.com/gensim/models/word2vec.html)
    • Sätze: Trainingsdaten (muss eine Liste mit tokenisierten Sätzen sein)
    • Größe: Dimension des Einbettungsraums
    • sg: CBOW wenn 0, Skip-Gramm wenn 1
    • Fenster: Anzahl der Wörter, die für jeden Kontext berücksichtigt werden (wenn das Fenster
    • Größe ist 3, 3 Wörter in der linken Nachbarschaft und 3 Wörter in der rechten Nachbarschaft werden berücksichtigt)
    • min_count: Mindestanzahl der Wörter, die in den Wortschatz aufgenommen werden sollen
    • iter: Anzahl der Trainingsiterationen
    • workers: Anzahl der zu trainierenden Worker-Threads
model = Word2Vec(sentences = sentences, size = 100, sg = 1, window = 3, min_count = 1, iter = 10, workers = Pool()._processes)

model.init_sims(replace = True)

Modell speichern und laden

  • word2vec-Modell kann lokal gespeichert und geladen werden
  • Dadurch kann die Zeit zum erneuten Trainieren des Modells verkürzt werden
model.save('word2vec_model')
model = Word2Vec.load('word2vec_model')

Ähnlichkeitsberechnung

  • Ähnlichkeit zwischen eingebetteten Wörtern (d. h. Vektoren) kann mithilfe von Metriken wie der Kosinusähnlichkeit berechnet werden
model.most_similar('hamlet')

[('horatio', 0,9978846311569214),
('Königin', 0,9971947073936462),
('laertes', 0,9971820116043091),
('König', 0,9968599081039429),
('Mutter', 0,9966716170310974),
('wo', 0,9966292381286621),
('deere', 0,9965540170669556),
('ophelia', 0,9964221715927124),
('sehr', 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

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/ragoli86/word-embedding-with-python-word2vec-540c?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3