Gensim - Dokumente & Korpus

Hier lernen wir die Kernkonzepte von Gensim kennen, wobei der Schwerpunkt auf den Dokumenten und dem Korpus liegt.

Kernkonzepte von Gensim

Im Folgenden sind die Kernkonzepte und -begriffe aufgeführt, die zum Verständnis und zur Verwendung von Gensim erforderlich sind:

  • Document - ZIt bezieht sich auf einen Text.

  • Corpus - Es bezieht sich auf eine Sammlung von Dokumenten.

  • Vector - Die mathematische Darstellung eines Dokuments wird als Vektor bezeichnet.

  • Model - Es bezieht sich auf einen Algorithmus, der zum Transformieren von Vektoren von einer Darstellung in eine andere verwendet wird.

Was ist ein Dokument?

Wie bereits erwähnt, bezieht es sich auf einen Text. Wenn wir ins Detail gehen, handelt es sich um ein Objekt vom Typ Textsequenz, das als bekannt ist‘str’ In Python 3. In Gensim kann ein Dokument beispielsweise Folgendes sein:

  • Kurzer Tweet mit 140 Zeichen
  • Einzelner Absatz, dh Zusammenfassung eines Artikels oder eines Forschungspapiers
  • Nachrichtenartikel
  • Book
  • Novel
  • Theses

Textsequenz

Ein Textsequenztyp ist allgemein bekannt als ‘str’ in Python 3. Wie wir wissen, werden Textdaten in Python mit Zeichenfolgen oder genauer behandelt ‘str’Objekte. Strings sind im Grunde unveränderliche Sequenzen von Unicode-Codepunkten und können auf folgende Arten geschrieben werden:

  • Single quotes - Zum Beispiel ‘Hi! How are you?’. Es erlaubt uns auch, doppelte Anführungszeichen einzubetten. Zum Beispiel,‘Hi! “How” are you?’

  • Double quotes - Zum Beispiel "Hi! How are you?". Es ermöglicht uns auch, einfache Anführungszeichen einzubetten. Zum Beispiel,"Hi! 'How' are you?"

  • Triple quotes - Es kann entweder drei einfache Anführungszeichen haben wie: '''Hi! How are you?'''. oder drei doppelte Anführungszeichen wie,"""Hi! 'How' are you?"""

Alle Leerzeichen werden in das Zeichenfolgenliteral aufgenommen.

Beispiel

Es folgt ein Beispiel für ein Dokument in Gensim -

Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”

Was ist Korpus?

Ein Korpus kann als der große und strukturierte Satz maschinenlesbarer Texte definiert werden, die in einer natürlichen Kommunikationsumgebung erstellt werden. In Gensim wird eine Sammlung von Dokumentobjekten als Korpus bezeichnet. Der Plural von Korpus istcorpora.

Rolle des Korpus in Gensim

Ein Korpus in Gensim erfüllt die folgenden zwei Rollen:

Dient als Eingabe für das Training eines Modells

Die allererste und wichtigste Rolle, die ein Korpus in Gensim spielt, ist die Eingabe eines Modells. Um die internen Parameter des Modells zu initialisieren, sucht das Modell während des Trainings nach einigen allgemeinen Themen und Themen aus dem Trainingskorpus. Wie oben erläutert, konzentriert sich Gensim auf unbeaufsichtigte Modelle und erfordert daher keinerlei menschliches Eingreifen.

Dient als Topic Extractor

Sobald das Modell trainiert ist, kann es verwendet werden, um Themen aus den neuen Dokumenten zu extrahieren. Hier sind die neuen Dokumente diejenigen, die in der Schulungsphase nicht verwendet werden.

Beispiel

Der Korpus kann alle Tweets einer bestimmten Person, eine Liste aller Artikel einer Zeitung oder alle Forschungsarbeiten zu einem bestimmten Thema usw. enthalten.

Korpus sammeln

Es folgt ein Beispiel eines kleinen Korpus, der 5 Dokumente enthält. Hier ist jedes Dokument eine Zeichenfolge, die aus einem einzelnen Satz besteht.

t_corpus = [
   "A survey of user opinion of computer system response time",
   "Relation of user perceived response time to error measurement",
   "The generation of random binary unordered trees",
   "The intersection graph of paths in trees",
   "Graph minors IV Widths of trees and well quasi ordering",
]

Korpus vorverarbeiten

Sobald wir den Korpus gesammelt haben, sollten einige Vorverarbeitungsschritte unternommen werden, um den Korpus einfach zu halten. Wir können einfach einige häufig verwendete englische Wörter wie 'the' entfernen. Wir können auch Wörter entfernen, die nur einmal im Korpus vorkommen.

Das folgende Python-Skript wird beispielsweise verwendet, um jedes Dokument in Kleinbuchstaben zu schreiben, es durch Leerzeichen aufzuteilen und Stoppwörter herauszufiltern.

Beispiel

import pprint
t_corpus = [
   "A survey of user opinion of computer system response time", 
   "Relation of user perceived response time to error measurement", 
   "The generation of random binary unordered trees", 
   "The intersection graph of paths in trees", 
   "Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
   for document in t_corpus]
	
pprint.pprint(processed_corpus)
]

Ausgabe

[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'],
['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'],
['generation', 'random', 'binary', 'unordered', 'trees'],
['intersection', 'graph', 'paths', 'trees'],
['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]

Effektive Vorverarbeitung

Gensim bietet auch Funktionen für eine effektivere Vorverarbeitung des Korpus. Bei einer solchen Vorverarbeitung können wir ein Dokument in eine Liste von Token in Kleinbuchstaben konvertieren. Wir können auch Token ignorieren, die zu kurz oder zu lang sind. Eine solche Funktion istgensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).

gensim.utils.simple_preprocess() fucntion

Gensim bietet diese Funktion, um ein Dokument in eine Liste von Token in Kleinbuchstaben zu konvertieren und um zu kurze oder zu lange Token zu ignorieren. Es hat die folgenden Parameter -

doc (str)

Es bezieht sich auf das Eingabedokument, auf das die Vorverarbeitung angewendet werden soll.

deacc (bool, optional)

Dieser Parameter wird verwendet, um die Akzentmarkierungen von Token zu entfernen. Es verwendetdeaccent() um dies zu tun.

min_len (int, optional)

Mit Hilfe dieses Parameters können wir die Mindestlänge eines Tokens festlegen. Die Token, die kürzer als die definierte Länge sind, werden verworfen.

max_len (int, optional)

Mit Hilfe dieses Parameters können wir die maximale Länge eines Tokens festlegen. Die Token, die länger als die definierte Länge sind, werden verworfen.

Die Ausgabe dieser Funktion wären die aus dem Eingabedokument extrahierten Token.