Gensim wird als ein Paket zur Verarbeitung natürlicher Sprache bezeichnet, das ‚Topic Modeling for Humans‘ betreibt. Aber es ist praktisch viel mehr als das. Es ist ein führendes und hochmodernes Paket für die Verarbeitung von Texten, die Arbeit mit Wortvektormodellen (wie Word2Vec, FastText usw.) und für die Erstellung von Themenmodellen.
Gensim Tutorial – A Complete Beginners Guide. Photo by Jasmin Schreiber
- Inhalt
- Einführung
- Was ist ein Wörterbuch und ein Korpus?
- Wie erstellt man ein Wörterbuch aus einer Liste von Sätzen?
- Wie erstellt man ein Wörterbuch aus einer oder mehreren Textdateien?
- Wie erstellt man einen Bag of Words Korpus in Gensim?
- 6. Wie erstellt man einen Bag-of-Words-Korpus aus einer Textdatei?
- Wie speichert man ein Gensim-Wörterbuch und einen Korpus auf der Festplatte und lädt sie zurück?
- Wie erstellt man die TFIDF-Matrix (Korpus) in Gensim?
- Wie verwendet man die Gensim Downloader API, um Datensätze zu laden?
- Wie erstellt man Bigramme und Trigramme mit Phraser-Modellen?
- Wie erstellt man Themenmodelle mit LDA?
- Wie interpretiert man die Ausgabe des LDA-Themenmodells?
- Wie erstellt man ein LSI-Themenmodell mit gensim?
- Wie trainiert man ein Word2Vec Modell mit Gensim?
- Wie aktualisiert man ein vorhandenes Word2Vec-Modell mit neuen Daten?
- Wie extrahiert man Wortvektoren unter Verwendung von vortrainierten Word2Vec- und FastText-Modellen?
- Wie erstellt man Dokumentvektoren mit Doc2Vec?
- Wie berechnet man Ähnlichkeitsmetriken wie Cosinus-Ähnlichkeit und Soft-Cosinus-Ähnlichkeit?
- Wie fasst man Textdokumente zusammen?
- Abschluss
Inhalt
1. Einführung
2. Was ist ein Wörterbuch und ein Korpus?
3. Wie erstellt man ein Wörterbuch aus einer Liste von Sätzen?
4. Wie erstellt man ein Wörterbuch aus einer oder mehreren Textdateien?
5. Wie erstellt man einen Bag of Words Korpus in Gensim?
6. Wie erstellt man ein Bag of Words Corpus aus einer externen Textdatei?
7. Wie speichert man ein gensim Wörterbuch und ein Corpus auf der Festplatte und lädt sie zurück?
8. Wie erstellt man die TFIDF-Matrix (Corpus) in gensim?
9. Wie benutzt man die Gensim Downloader API um Datensätze zu laden?
10. Wie erstellt man Bigramme und Trigramme mit Phraser-Modellen?
11. Wie erstellt man Themenmodelle mit LDA?
12. Wie interpretiert man die Ausgabe des LDA-Themenmodells?
13. Wie erstellt man ein LSI-Themenmodell mit gensim?
14. Wie trainiert man ein Word2Vec-Modell mit gensim?
15. Wie aktualisiert man ein bestehendes Word2Vec-Modell mit neuen Daten?
16. Wie extrahiert man Wortvektoren mit Hilfe von trainierten Word2Vec und FastText Modellen?
17. Wie erstellt man Dokumentvektoren mit Doc2Vec?
18. Wie berechnet man Ähnlichkeitsmetriken wie Cosinus-Ähnlichkeit und Soft-Cosinus-Ähnlichkeit?
19. Wie kann man Textdokumente zusammenfassen?
20. Schlussfolgerung
Einführung
Was ist Gensim?
Gensim wird als ein Natural Language Processing Paket bezeichnet, das „Topic Modeling for Humans“ macht. Aber es ist praktisch viel mehr als das.
Wenn Sie mit Topic Modeling nicht vertraut sind, ist es eine Technik, um die zugrundeliegenden Themen aus großen Mengen von Text zu extrahieren. Gensim bietet Algorithmen wie LDA und LSI (die wir später in diesem Beitrag sehen werden) und die nötige Raffinesse, um qualitativ hochwertige Themenmodelle zu erstellen.
Sie mögen argumentieren, dass Themenmodelle und Worteinbettung in anderen Paketen wie Scikit, R usw. verfügbar sind. Aber die Breite und der Umfang der Möglichkeiten, Themenmodelle zu erstellen und zu evaluieren, sind in gensim beispiellos, plus viele weitere komfortable Möglichkeiten für die Textverarbeitung.
Es ist ein großartiges Paket für die Verarbeitung von Texten, die Arbeit mit Wortvektormodellen (wie Word2Vec, FastText usw.) und für die Erstellung von Themenmodellen.
Ein weiterer großer Vorteil von gensim ist, dass man mit großen Textdateien arbeiten kann, ohne die gesamte Datei in den Speicher laden zu müssen.
Dieser Beitrag soll einen praktischen Überblick über fast alle wichtigen Funktionen geben, die auf einfache und leicht verständliche Weise erklärt werden.
Am Ende dieses Tutorials werden Sie wissen:
- Was sind die Kernkonzepte in gensim?
- Was sind Wörterbuch und Korpus, warum sind sie wichtig und wo kann man sie verwenden?
- Wie kann man Wörterbuch und Korpus erstellen und damit arbeiten?
- Wie lädt man Textdaten aus mehreren Textdateien und arbeitet speichereffizient damit
- Erstellen von Themenmodellen mit LDA und Interpretation der Ergebnisse
- Erstellen von TFIDF-Modellen, Bigrammen, Trigrammen, Word2Vec-Modellen, Doc2Vec-Modellen
- Berechnen von Ähnlichkeitsmetriken
- Und vieles mehr.
Lassen Sie uns beginnen.
Was ist ein Wörterbuch und ein Korpus?
Um mit Textdokumenten arbeiten zu können, muss Gensim die Wörter (auch Token genannt) in eindeutige IDs umwandeln. Um dies zu erreichen, können Sie in Gensim ein Dictionary
Objekt erstellen, das jedes Wort auf eine eindeutige ID abbildet.
Wir werden im nächsten Abschnitt sehen, wie man dies tatsächlich tut.
Aber warum wird das Dictionary-Objekt benötigt und wo kann es verwendet werden?
Das Dictionary-Objekt wird typischerweise verwendet, um ein „bag of words“ Corpus zu erstellen. Es ist dieses Wörterbuch und der Bag-of-Words (Corpus), die als Input für die Themenmodellierung und andere Modelle verwendet werden, auf die sich Gensim spezialisiert hat.
Also, welche Art von Texteingaben kann Gensim verarbeiten? Der Eingabetext kommt typischerweise in 3 verschiedenen Formen:
- Als Sätze, die in Pythons nativem Listenobjekt gespeichert sind
- Als eine einzige Textdatei, klein oder groß.
- In mehreren Textdateien.
Wenn die Texteingabe umfangreich ist, muss man in der Lage sein, das Wörterbuchobjekt zu erstellen, ohne die gesamte Textdatei zu laden.
Die gute Nachricht ist, dass Gensim es Ihnen ermöglicht, den Text zu lesen und das Wörterbuch zu aktualisieren, eine Zeile nach der anderen, ohne die gesamte Textdatei in den Systemspeicher zu laden. Wie das geht, sehen wir uns in den nächsten 2 Abschnitten an.
Aber bevor wir einsteigen, sollten wir ein wenig NLP-Jargon verstehen.
Ein „Token“ bedeutet normalerweise ein „Wort“. Ein ‚Dokument‘ kann sich typischerweise auf einen ‚Satz‘ oder ‚Absatz‘ beziehen und ein ‚Korpus‘ ist typischerweise eine ‚Sammlung von Dokumenten als eine Tasche von Wörtern‘. Das heißt, ein Korpus enthält für jedes Dokument die Kennung jedes Worts und die Anzahl seiner Häufigkeit in diesem Dokument. Infolgedessen geht die Information über die Reihenfolge der Wörter verloren.
Wenn alles soweit klar ist, lassen Sie uns die Hände nass machen und sehen, wie man das Wörterbuch aus einer Liste von Sätzen erstellt.
Wie erstellt man ein Wörterbuch aus einer Liste von Sätzen?
In Gensim enthält das Wörterbuch eine Zuordnung aller Wörter (Token) zu ihrer eindeutigen ID.
Sie können ein Wörterbuch aus einem Absatz von Sätzen, aus einer Textdatei, die mehrere Textzeilen enthält, und aus mehreren solchen Textdateien in einem Verzeichnis erstellen. Im zweiten und dritten Fall wird die gesamte Datei nicht in den Speicher geladen, so dass das Wörterbuch beim Lesen des Textes Zeile für Zeile aktualisiert wird.
Beginnen wir mit der Eingabe „Liste von Sätzen“.
Wenn Sie mehrere Sätze haben, müssen Sie jeden Satz in eine Liste von Wörtern umwandeln. List comprehensions ist eine gängige Methode, dies zu tun.
Das Wörterbuch hat 34 eindeutige Token (oder Wörter). Schauen wir uns die eindeutigen IDs für jedes dieser Token an.
Wir haben erfolgreich ein Dictionary-Objekt erstellt. Gensim wird dieses Wörterbuch verwenden, um einen Bag-of-Words-Korpus zu erstellen, in dem die Wörter in den Dokumenten durch ihre jeweilige ID ersetzt werden, die von diesem Wörterbuch bereitgestellt wird.
Wenn Sie in Zukunft neue Dokumente erhalten, ist es auch möglich, ein bestehendes Wörterbuch zu aktualisieren, um die neuen Wörter aufzunehmen.
Wie erstellt man ein Wörterbuch aus einer oder mehreren Textdateien?
Sie können ein Wörterbuch auch aus einer Textdatei oder aus einem Verzeichnis von Textdateien erstellen.
Das folgende Beispiel liest eine Datei Zeile für Zeile und verwendet Gensims simple_preprocess
, um jeweils eine Zeile der Datei zu verarbeiten.
Der Vorteil ist, dass man eine ganze Textdatei lesen kann, ohne die Datei auf einmal in den Speicher zu laden.
Lassen Sie uns eine sample.txt Datei verwenden, um dies zu demonstrieren.
Wir haben ein Wörterbuch aus einer einzigen Textdatei erstellt. Schön!
Wie kann man nun eine Zeile nach der anderen aus mehreren Dateien lesen?
Angenommen, alle Textdateien befinden sich im selben Verzeichnis, dann muss man eine Klasse mit einer __iter__
-Methode definieren. Die __iter__()
-Methode sollte durch alle Dateien in einem bestimmten Verzeichnis iterieren und die verarbeitete Liste der Wort-Token liefern.
Lassen Sie uns eine solche Klasse mit dem Namen ReadTxtFiles
definieren, die den Pfad zum Verzeichnis mit den Textdateien aufnimmt. Ich verwende dieses Verzeichnis mit Sportnahrung als Eingabe.
Dieser Blogbeitrag gibt einen guten Überblick über das Konzept der Iteratoren und Generatoren.
Wie erstellt man einen Bag of Words Korpus in Gensim?
Jetzt wissen Sie, wie man ein Wörterbuch aus einer Liste und aus einer Textdatei erstellt.
Das nächste wichtige Objekt, mit dem Sie sich vertraut machen müssen, um in Gensim arbeiten zu können, ist der Korpus (ein Bag of Words). Das heißt, es handelt sich um ein Korpusobjekt, das die Wort-ID und ihre Häufigkeit in jedem Dokument enthält. Man kann es sich als Gensims Äquivalent einer Dokument-Term-Matrix vorstellen.
Wenn man das aktualisierte Wörterbuch hat, muss man nur noch die tokenisierte Wortliste an den Dictionary.doc2bow()
Lassen Sie uns ein Korpus für eine einfache Liste (my_docs
) mit 2 Sätzen erstellen.
Wie ist das obige Korpus zu interpretieren?
Die (0, 1) in Zeile 1 bedeutet, dass das Wort mit id=0 einmal im ersten Dokument vorkommt.
Gleichermaßen bedeutet die (4, 4) im zweiten Listenelement, dass das Wort mit id 4 viermal im zweiten Dokument vorkommt. Und so weiter.
Nun, das ist nicht für Menschen lesbar. Um die IDs in Wörter umzuwandeln, brauchen Sie das Wörterbuch.
Lassen Sie uns sehen, wie wir die ursprünglichen Texte zurückbekommen.
word_counts = , count) for id, count in line] for line in mycorpus]pprint(word_counts)#> , ]
Beachten Sie, die Reihenfolge der Wörter geht verloren. Nur das Wort und seine Häufigkeitsinformationen bleiben erhalten.
6. Wie erstellt man einen Bag-of-Words-Korpus aus einer Textdatei?
Das Lesen von Wörtern aus einer Python-Liste ist recht einfach, da der gesamte Text bereits im Speicher ist.
Es kann jedoch sein, dass Sie eine große Datei haben, die Sie nicht komplett in den Speicher laden wollen.
Sie können solche Dateien zeilenweise importieren, indem Sie eine Klasse und die __iter__
Funktion definieren, die die Datei iterativ zeilenweise liest und ein Korpusobjekt liefert. Aber wie erstellt man das Korpusobjekt?
Das __iter__()
von BoWCorpus
liest eine Zeile aus der Datei, verarbeitet sie mit simple_preprocess()
zu einer Liste von Wörtern und übergibt diese an das dictionary.doc2bow()
. Kannst du das mit der Klasse ReadTxtFiles
vergleichen, die wir zuvor erstellt haben?
Beachte auch, dass ich smart_open()
aus dem Paket smart_open
verwende, denn damit kannst du große Dateien öffnen und Zeile für Zeile aus einer Vielzahl von Quellen wie S3, HDFS, WebHDFS, HTTP oder lokalen und komprimierten Dateien lesen. Das ist übrigens ziemlich genial!
Wenn Sie jedoch open()
für eine Datei in Ihrem System verwendet haben, wird es auch als Datei perfekt funktionieren.
Wie speichert man ein Gensim-Wörterbuch und einen Korpus auf der Festplatte und lädt sie zurück?
Das ist ziemlich einfach. Siehe die Beispiele unten.
Wir haben die Wörterbuch- und Korpusobjekte gespeichert. Laden wir sie zurück.
Wie erstellt man die TFIDF-Matrix (Korpus) in Gensim?
Die Term Frequency – Inverse Document Frequency (TF-IDF) ist auch ein Bag-of-Words-Modell, aber im Gegensatz zum regulären Korpus gewichtet TFIDF Token (Wörter), die häufig in den Dokumenten vorkommen, nach unten.
Wie wird TFIDF berechnet?
Tf-Idf wird berechnet, indem eine lokale Komponente wie die Termfrequenz (TF) mit einer globalen Komponente, der inversen Dokumenthäufigkeit (IDF), multipliziert und das Ergebnis optional auf eine Einheitslänge normalisiert wird.
Als Ergebnis werden die Wörter, die in den Dokumenten häufig vorkommen, heruntergewichtet.
Es gibt mehrere Varianten von Formeln für TF und IDF. Gensim verwendet das SMART Information Retrieval System, das zur Implementierung dieser Variationen verwendet werden kann. Sie können angeben, welche Formel verwendet werden soll, indem Sie den Parameter smartirs
in der TfidfModel
angeben. Siehe help(models.TfidfModel)
für weitere Details.
Wie erhält man also die TFIDF-Gewichte?
Durch Training des Korpus mit models.TfidfModel()
. Dann wenden Sie den Korpus innerhalb der eckigen Klammern des trainierten tfidf
-Modells an. Siehe Beispiel unten.
Beachten Sie den Unterschied in der Gewichtung der Wörter zwischen dem ursprünglichen Korpus und dem tfidf-gewichteten Korpus.
Die Wörter „ist“ und „der“ kommen in zwei Dokumenten vor und wurden heruntergewichtet. Das Wort ‚this‘, das in allen drei Dokumenten vorkommt, wurde ganz entfernt. Einfach ausgedrückt: Wörter, die in den Dokumenten häufiger vorkommen, erhalten eine geringere Gewichtung.
Wie verwendet man die Gensim Downloader API, um Datensätze zu laden?
Gensim bietet eine eingebaute API zum Herunterladen beliebter Textdatensätze und Worteinbettungsmodelle.
Eine umfassende Liste der verfügbaren Datensätze und Modelle wird hier gepflegt.
Die Verwendung der API zum Herunterladen des Datensatzes ist so einfach wie der Aufruf der Methode api.load()
mit dem richtigen Daten- oder Modellnamen.
Das folgende Beispiel zeigt, wie man das Modell „glove-wiki-gigaword-50“ herunterlädt.
Wie erstellt man Bigramme und Trigramme mit Phraser-Modellen?
Nun wissen Sie, wie man Datensätze und vortrainierte Modelle mit gensim herunterlädt.
Laden wir den text8
-Datensatz herunter, der nichts anderes ist als die „ersten 100.000.000 Bytes Klartext aus Wikipedia“. Daraus werden wir dann Bigramme und Trigramme generieren.
Aber was sind Bigramme und Trigramme und warum sind sie wichtig?
In Absätzen kommen bestimmte Wörter immer paarweise (Bigram) oder in Dreiergruppen (Trigram) vor. Denn die beiden Wörter zusammen bilden die eigentliche Einheit. Ein Beispiel: Das Wort „Französisch“ bezieht sich auf die Sprache oder Region und das Wort „Revolution“ kann sich auf die planetarische Revolution beziehen. Aber die Kombination von beiden, ‚Französische Revolution‘, bezieht sich auf etwas völlig anderes.
Es ist ziemlich wichtig, Bigramme und Trigramme aus Sätzen zu bilden, besonders wenn man mit Bag-of-Words-Modellen arbeitet.
Wie erstellt man nun Bigramme?
Es ist ziemlich einfach und effizient mit dem Phrases
-Modell von gensim. Das erstellte Phrases
-Modell erlaubt die Indizierung, so dass man einfach den Originaltext (Liste) an das erstellte Phrases
-Modell übergeben muss, um die Bigramme zu bilden. Ein Beispiel ist unten dargestellt:
Die Bigramme sind fertig. Können Sie erraten, wie man ein Trigramm erstellt?
Nun, spülen Sie einfach und wiederholen Sie den gleichen Vorgang für die Ausgabe des Bigramm-Modells. Sobald Sie die Bigramme erzeugt haben, können Sie die Ausgabe zum Trainieren eines neuen Phrases
Modells verwenden. Wenden Sie dann den Bigramm-Korpus auf das trainierte Trigramm-Modell an. Verwirrt? Siehe das Beispiel unten.
Wie erstellt man Themenmodelle mit LDA?
Das Ziel von Themenmodellen ist es, die zugrunde liegenden Themen aus einer gegebenen Sammlung von Textdokumenten zu extrahieren. Jedes Dokument im Text wird als eine Kombination von Themen und jedes Thema als eine Kombination von verwandten Wörtern betrachtet.
Die Themenmodellierung kann mit Algorithmen wie Latent Dirichlet Allocation (LDA) und Latent Semantic Indexing (LSI) durchgeführt werden.
In beiden Fällen muss die Anzahl der Themen als Eingabe angegeben werden. Das Themenmodell wiederum liefert die Themenschlüsselwörter für jedes Thema und den prozentualen Anteil der Themen in jedem Dokument.
Die Qualität der Themen hängt stark von der Qualität der Textverarbeitung und der Anzahl der Themen ab, die Sie dem Algorithmus zur Verfügung stellen. In dem früheren Beitrag über die Erstellung der besten Themenmodelle wird das Verfahren ausführlicher erläutert. Ich empfehle jedoch, die grundlegenden Schritte und die Interpretation im folgenden Beispiel zu verstehen.
Schritt 0: Laden der erforderlichen Pakete und Importieren der Stoppwörter.
Schritt 1: Importieren des Datensatzes. Ich werde den text8
-Datensatz verwenden, der mit der Downloader-API von gensim heruntergeladen werden kann.
# Step 1: Import the dataset and get the text and real topic of each news articledataset = api.load("text8")data =
Schritt 2: Bereiten Sie die heruntergeladenen Daten vor, indem Sie Stoppwörter entfernen und sie lemmatisieren. Für die Lemmatisierung benötigt gensim das Paket pattern
. Stellen Sie also sicher, dass Sie pip install pattern
in Ihrem Terminal oder in der Eingabeaufforderung eingeben, bevor Sie dies ausführen. Ich habe die Lemmatisierung so eingestellt, dass nur Substantive (NN), Adjektive (JJ) und Pronomen (RB) erhalten bleiben. Ich ziehe es nämlich vor, dass nur solche Wörter als Schlüsselwörter zum Thema verwendet werden. Dies ist eine persönliche Entscheidung.
Die data_processed
wird nun als Liste von Wortlisten verarbeitet. Damit können Sie nun die Dictionary
und Corpus
erstellen, die dann als Input für das LDA-Modell verwendet werden.
Wir haben das Wörterbuch und den Korpus erstellt. Lassen Sie uns ein LDA-Themenmodell mit 7 Themen erstellen, indem wir LdaMulticore()
verwenden. 7 Themen sind eine willkürliche Wahl für jetzt.
Die lda_model.print_topics
zeigt, welche Wörter zu welchem der 7 Themen beigetragen haben, zusammen mit der Gewichtung des Beitrags des Wortes zu diesem Thema.
Sie können sehen, dass Wörter wie „auch“, „viele“ in verschiedenen Themen vorkommen. Daher würde ich solche Wörter in die stop_words
-Liste aufnehmen, um sie zu entfernen und das Themenmodell weiter auf eine optimale Anzahl von Themen abzustimmen.
LdaMulticore()
unterstützt die Parallelverarbeitung. Alternativ könnte man auch versuchen, welche Themen LdaModel()
liefert.
Wie interpretiert man die Ausgabe des LDA-Themenmodells?
Das lda_model
-Objekt unterstützt Indizierung. Das heißt, wenn man ein Dokument (eine Liste von Wörtern) an lda_model
übergibt, liefert es 3 Dinge:
- Das/die Thema(n), zu dem/denen das Dokument gehört, zusammen mit einem Prozentsatz.
- Das/die Thema(n), zu dem/denen jedes Wort in diesem Dokument gehört.
- Das Thema/die Themen, zu dem/denen jedes Wort in diesem Dokument gehört, UND die phi-Werte.
Was ist also der phi-Wert?
Der phi-Wert ist die Wahrscheinlichkeit, dass das Wort zu diesem bestimmten Thema gehört. Und die Summe der phi-Werte für ein bestimmtes Wort ergibt die Anzahl der Vorkommen dieses Wortes in diesem Dokument.
Zum Beispiel gehört in der untenstehenden Ausgabe für das 0. Dokument das Wort mit id=0 zum Thema Nummer 6 und der phi-Wert ist 3,999. Das bedeutet, dass das Wort mit id=0 4 Mal im 0. Dokument vorkommt.
Wie erstellt man ein LSI-Themenmodell mit gensim?
Die Syntax für die Verwendung eines LSI-Modells ist ähnlich wie bei der Erstellung des LDA-Modells, außer dass wir die LsiModel()
verwenden.
Wie trainiert man ein Word2Vec Modell mit Gensim?
Ein Word Embedding Modell ist ein Modell, das numerische Vektoren für ein bestimmtes Wort liefern kann. Mit der Downloader-API von Gensim können Sie vorgefertigte Worteinbettungsmodelle wie word2vec, fasttext, GloVe und ConceptNet herunterladen. Diese Modelle wurden auf der Grundlage großer Korpusse häufig vorkommender Textdaten wie Wikipedia, Google News usw. erstellt.
Wenn Sie jedoch in einer spezialisierten Nische wie z. B. technischen Dokumenten arbeiten, sind Sie möglicherweise nicht in der Lage, Worteinbettungen für alle Wörter zu erhalten. In solchen Fällen ist es wünschenswert, ein eigenes Modell zu trainieren.
Mit der Word2Vec
Implementierung von Gensim können Sie Ihr eigenes Worteinbettungsmodell für ein bestimmtes Korpus trainieren.
Wir haben ein Word2Vec-Modell für unser Dokument trainiert und gespeichert. Wenn jedoch ein neuer Datensatz hinzukommt, möchten Sie das Modell aktualisieren, um neue Wörter zu berücksichtigen.
Wie aktualisiert man ein vorhandenes Word2Vec-Modell mit neuen Daten?
Bei einem vorhandenen Word2Vec
-Modell rufen Sie die Methode build_vocab()
für den neuen Datensatz und dann die Methode train()
auf. build_vocab()
wird zuerst aufgerufen, weil das Modell darüber informiert werden muss, welche neuen Wörter im neuen Korpus zu erwarten sind.
Wie extrahiert man Wortvektoren unter Verwendung von vortrainierten Word2Vec- und FastText-Modellen?
Wir haben gerade gesehen, wie man die Wortvektoren für das gerade trainierte Word2Vec-Modell erhält. In Gensim können Sie jedoch über die Downloader-API bereits trainierte Modelle nach dem neuesten Stand der Technik herunterladen. Schauen wir uns an, wie man die Wortvektoren aus einigen dieser Modelle extrahiert.
Wir haben 3 verschiedene Einbettungsmodelle. Sie können anhand der evaluate_word_analogies()
des jeweiligen Modells auf einem Standard-Analogie-Datensatz bewerten, welches Modell besser abschneidet.
Wie erstellt man Dokumentvektoren mit Doc2Vec?
Im Gegensatz zu Word2Vec
liefert ein Doc2Vec
Modell eine vektorisierte Darstellung einer Gruppe von Wörtern, die zusammen als eine Einheit betrachtet werden. Es ist kein einfacher Durchschnitt der Wortvektoren der Wörter im Satz.
Wir verwenden den text8
-Datensatz, um Doc2Vec
zu trainieren.
import gensimimport gensim.downloader as api# Download datasetdataset = api.load("text8")data =
Die Trainingsdaten für Doc2Vec
sollten eine Liste von TaggedDocument
s sein. Um eine solche zu erstellen, übergeben wir eine Liste von Wörtern und eine eindeutige Ganzzahl als Eingabe an die models.doc2vec.TaggedDocument()
.
Die Eingabe ist vorbereitet. Um das Modell zu trainieren, müssen Sie das Doc2Vec
-Modell initialisieren, das Vokabular aufbauen und dann das Modell trainieren.
Um den Dokumentenvektor eines Satzes zu erhalten, übergeben Sie ihn als Liste von Wörtern an die infer_vector()
-Methode.
Wie berechnet man Ähnlichkeitsmetriken wie Cosinus-Ähnlichkeit und Soft-Cosinus-Ähnlichkeit?
Die weiche Kosinus-Ähnlichkeit ähnelt der Kosinus-Ähnlichkeit, berücksichtigt aber zusätzlich die semantische Beziehung zwischen den Wörtern durch ihre Vektor-Darstellung.
Um weiche Kosinus-Metriken zu berechnen, benötigen Sie ein Wort-Einbettungsmodell wie Word2Vec oder FastText. Berechnen Sie zunächst die similarity_matrix
. Dann konvertieren Sie die Eingabesätze in einen Bag-of-Words-Korpus und übergeben sie zusammen mit der Ähnlichkeitsmatrix an den softcossim()
.
Nachfolgend finden Sie einige nützliche Ähnlichkeits- und Abstandsmetriken, die auf den Worteinbettungsmodellen wie Fasttext und GloVe basieren. Wir haben diese Modelle bereits mit der Downloader-API heruntergeladen.
Wie fasst man Textdokumente zusammen?
Gensim implementiert die Textrank-Zusammenfassung mit der Funktion summarize()
im Modul summarization
. Alles, was Sie tun müssen, ist, den tet-String zusammen mit der Ausgabezusammenfassung ratio
oder der maximalen count
Anzahl von Wörtern in der zusammengefassten Ausgabe zu übergeben.
Es ist nicht notwendig, den Satz in eine tokenisierte Liste aufzuteilen, da Gensim die Aufteilung mit der eingebauten split_sentences()
Methode im gensim.summarization.texcleaner
Modul durchführt.
Lassen Sie uns den Ausschnitt aus einem neuen Artikel in sample.txt zusammenfassen.
Weitere Informationen zur Zusammenfassung mit gensim finden Sie in diesem Tutorial.
Abschluss
Wir haben eine Menge über die verschiedenen Funktionen von gensim gelernt und einen guten Überblick darüber bekommen, wie man mit Texten arbeitet und sie manipuliert. Die obigen Beispiele sollten Ihnen als gute Vorlagen für verschiedene NLP-Aufgaben dienen, auf denen Sie aufbauen können. Ich hoffe, Sie finden es hilfreich und fühlen sich wohl dabei, Gensim öfter in Ihren NLP-Projekten zu verwenden.