Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Anpassen des Bag of Words | Grundlegende Textmodelle
Einführung in NLP
course content

Kursinhalt

Einführung in NLP

Einführung in NLP

1. Grundlagen der Textvorverarbeitung
2. Stemming und Lemmatisierung
3. Grundlegende Textmodelle
4. Wort-Einbettungen

book
Anpassen des Bag of Words

Das Bag of Words-Modell, insbesondere seine Implementierung durch die CountVectorizer-Klasse, bietet mehrere Parameter zur Anpassung. Dies ermöglicht es, das Modell an die spezifischen Bedürfnisse verschiedener Textanalyseaufgaben anzupassen und die Effektivität des Modells erheblich zu steigern.

Minimale und maximale Dokumentenfrequenz

Der min_df-Parameter definiert die minimale Anzahl von Dokumenten, in denen ein Begriff vorkommen muss, um in den Wortschatz aufgenommen zu werden, entweder als absolute Zahl oder als Proportion. Er hilft, seltene Begriffe auszuschließen, die oft weniger informativ sind.

Ähnlich bestimmt max_df die maximale Häufigkeit, die ein Begriff in Dokumenten haben kann, um im Wortschatz zu bleiben, ebenfalls spezifizierbar als absolute Zahl oder Proportion. Es filtert zu häufige Begriffe heraus, die nicht dazu beitragen, zwischen Dokumenten zu unterscheiden.

Schauen wir uns ein Beispiel an:

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Exclude words which appear in more than 3 documents vectorizer = CountVectorizer(max_df=3) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Das Setzen von max_df=3 schließt Wörter aus, die in mehr als 3 Dokumenten vorkommen. In unserem Korpus gehören dazu Wörter wie "quick" und "brown". Da sie in jedem oder fast jedem Dokument vorkommen, helfen sie nicht wirklich, zwischen den Dokumenten zu unterscheiden. Alternativ könnten wir max_df=0.6 setzen, da 60% von 5 Dokumenten 3 Dokumente sind.

N-Gramm-Bereich

Der Parameter ngram_range ermöglicht es Ihnen, den Bereich der n-Gramm-Größen zu definieren, die im Vokabular enthalten sein sollen.

Standardmäßig berücksichtigt CountVectorizer nur Unigramme (einzelne Wörter). Das Einbeziehen von Bigrammen (Wortpaare), Trigrammen (Worttripel) oder größeren n-Grammen kann jedoch das Modell bereichern, indem mehr Kontext und semantische Informationen erfasst werden, was die Leistung potenziell verbessern kann.

Dies wird erreicht, indem ein Tupel (min_n, max_n) an den Parameter ngram_range übergeben wird, wobei min_n die minimale n-Gramm-Größe darstellt, die einbezogen werden soll, und max_n die maximale Größe.

Konzentrieren wir uns nun ausschließlich auf Trigramme, die in zwei oder mehr Dokumenten innerhalb unseres Korpus erscheinen:

123456789101112131415
from sklearn.feature_extraction.text import CountVectorizer import pandas as pd corpus = [ "The quick brown fox jumps over the lazy dog.", "Quick brown foxes leap over lazy dogs in summer.", "The quick brown fox is often seen jumping over lazy dogs.", "In summer, the lazy dog plays while the quick brown fox rests.", "A quick brown fox is quicker than the laziest dog." ] # Include trigrams which appear in 2 or more documents vectorizer = CountVectorizer(min_df=2, ngram_range=(3, 3)) bow_matrix = vectorizer.fit_transform(corpus) bow_df = pd.DataFrame(bow_matrix.toarray(), columns=vectorizer.get_feature_names_out()) print(bow_df)
copy

Dies sind die am häufigsten verwendeten Parameter. Falls Sie jedoch mehr davon erkunden möchten, können Sie die Dokumentation einsehen.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt