Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Lemmatization Mit POS-Tagging | Stemming und Lemmatisierung
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
Lemmatization Mit POS-Tagging

Die englische Sprache ist voller Wörter, die als mehrere Wortarten mit unterschiedlichen Bedeutungen dienen können. Zum Beispiel kann "running" ein Verb ("He is running.") oder ein Substantiv ("Running is fun.") sein.

Wie wir bereits gesehen haben, kann ein Lemmatizer ein Wort nur dann genau auf seine Grundform reduzieren, wenn er die Wortart im gegebenen Kontext kennt. POS-Tagging liefert wiederum diesen Kontext und macht die Lemmatisierung präziser.

Lemmatisierung mit POS-Tagging in NLTK

Da wir bereits mit beiden Techniken separat vertraut sind, ist es an der Zeit, sie zu kombinieren. Es gibt jedoch einen wichtigen Aspekt zu berücksichtigen, nämlich den Unterschied im Format der POS-Tags zwischen pos_tag und dem Format, das der WordNet Lemmatizer erwartet.

Der Zuordnungsprozess beinhaltet die Umwandlung der detaillierten Penn Treebank-Tags in die breiteren Kategorien, die von WordNet erkannt werden. Zum Beispiel würden sowohl 'VBD' (Vergangenheit Verb) als auch 'VBG' (Gerundium oder Partizip Präsens) aus dem Penn Treebank zu 'v' (Verb) für die Verwendung mit dem WordNet-Lemmatizer zugeordnet werden.

Lassen Sie uns eine Funktion für diesen Zweck schreiben:

Diese Funktion überprüft einfach den ersten Buchstaben des Penn Treebank-Tags: Wenn es 'J' ist, gibt es das WordNet-Tag für Adjektive zurück; wenn 'V', für Verben; wenn 'R', für Adverbien.

In allen anderen Fällen, einschließlich wenn das Tag mit 'N' beginnt oder keine der angegebenen Bedingungen erfüllt, wird standardmäßig das WordNet-Tag für Nomen zurückgegeben. Diese ADJ, VERB usw. sind nur Konstanten, wobei ADJ, ADJ_SAT, ADV, NOUN, VERB = "a", "s", "r", "n", "v".

Angesichts dieser Funktion führen wir nun die Lemmatisierung mit vorherigem POS-Tagging durch:

123456789101112131415161718192021222324252627282930313233
from nltk.stem import WordNetLemmatizer from nltk.tokenize import word_tokenize from nltk import pos_tag from nltk.corpus import wordnet as wn import nltk nltk.download('wordnet') nltk.download('averaged_perceptron_tagger_eng') nltk.download('punkt_tab') # Initialize the lemmatizer lemmatizer = WordNetLemmatizer() # Function to map NLTK's POS tags to the format used by the WordNet lemmatizer def get_wordnet_pos(treebank_tag): if treebank_tag.startswith('J'): return wn.ADJ elif treebank_tag.startswith('V'): return wn.VERB elif treebank_tag.startswith('R'): return wn.ADV else: # Default to noun if no match is found or starts with 'N' return wn.NOUN text = "The leaves on the tree were turning a bright red, indicating that fall was leaving its mark." text = text.lower() tokens = word_tokenize(text) tagged_tokens = pos_tag(tokens) # Lemmatize each token with its POS tag lemmatized_tokens = [lemmatizer.lemmatize(token, get_wordnet_pos(tag)) for token, tag in tagged_tokens] print("Original text:", text) print("Lemmatized text:", ' '.join(lemmatized_tokens))
copy

Wie Sie sehen können, haben wir zuerst das POS-Tagging mit der Funktion pos_tag() durchgeführt. Anschließend haben wir List Comprehension verwendet, um eine Liste von lemmatisierten Tokens zu erstellen, indem wir die Methode lemmatize() mit dem aktuellen Token und dem korrekt formatierten Tag (unter Verwendung unserer Funktion get_wordnet_pos(tag)) als Argumente angewendet haben. Wir haben absichtlich keine Stoppwörter entfernt, um zu demonstrieren, dass der Code alle Tokens effektiv verarbeitet.

Aufgabe

Swipe to start coding

Es ist an der Zeit, alle bisher gelernten Textvorverarbeitungstechniken zu kombinieren, um lemmatisierten Text ohne die Stoppwörter aus dem ursprünglichen Rohtext zu erhalten. Ihre Aufgabe ist die folgende:

  1. Konvertieren Sie text in Kleinbuchstaben.

  2. Laden Sie die Liste der englischen Stoppwörter und konvertieren Sie sie in set.

  3. Initialisieren Sie einen Lemmatisierer.

  4. Tokenisieren Sie den text-String.

  5. Filtern Sie die Stoppwörter mit List Comprehension heraus.

  6. Führen Sie das POS-Tagging mit der entsprechenden Funktion durch.

  7. Lemmatisieren Sie die resultierenden Tokens unter Berücksichtigung ihrer POS-Tags mit List Comprehension.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
toggle bottom row

book
Lemmatization Mit POS-Tagging

Die englische Sprache ist voller Wörter, die als mehrere Wortarten mit unterschiedlichen Bedeutungen dienen können. Zum Beispiel kann "running" ein Verb ("He is running.") oder ein Substantiv ("Running is fun.") sein.

Wie wir bereits gesehen haben, kann ein Lemmatizer ein Wort nur dann genau auf seine Grundform reduzieren, wenn er die Wortart im gegebenen Kontext kennt. POS-Tagging liefert wiederum diesen Kontext und macht die Lemmatisierung präziser.

Lemmatisierung mit POS-Tagging in NLTK

Da wir bereits mit beiden Techniken separat vertraut sind, ist es an der Zeit, sie zu kombinieren. Es gibt jedoch einen wichtigen Aspekt zu berücksichtigen, nämlich den Unterschied im Format der POS-Tags zwischen pos_tag und dem Format, das der WordNet Lemmatizer erwartet.

Der Zuordnungsprozess beinhaltet die Umwandlung der detaillierten Penn Treebank-Tags in die breiteren Kategorien, die von WordNet erkannt werden. Zum Beispiel würden sowohl 'VBD' (Vergangenheit Verb) als auch 'VBG' (Gerundium oder Partizip Präsens) aus dem Penn Treebank zu 'v' (Verb) für die Verwendung mit dem WordNet-Lemmatizer zugeordnet werden.

Lassen Sie uns eine Funktion für diesen Zweck schreiben:

Diese Funktion überprüft einfach den ersten Buchstaben des Penn Treebank-Tags: Wenn es 'J' ist, gibt es das WordNet-Tag für Adjektive zurück; wenn 'V', für Verben; wenn 'R', für Adverbien.

In allen anderen Fällen, einschließlich wenn das Tag mit 'N' beginnt oder keine der angegebenen Bedingungen erfüllt, wird standardmäßig das WordNet-Tag für Nomen zurückgegeben. Diese ADJ, VERB usw. sind nur Konstanten, wobei ADJ, ADJ_SAT, ADV, NOUN, VERB = "a", "s", "r", "n", "v".

Angesichts dieser Funktion führen wir nun die Lemmatisierung mit vorherigem POS-Tagging durch:

123456789101112131415161718192021222324252627282930313233
from nltk.stem import WordNetLemmatizer from nltk.tokenize import word_tokenize from nltk import pos_tag from nltk.corpus import wordnet as wn import nltk nltk.download('wordnet') nltk.download('averaged_perceptron_tagger_eng') nltk.download('punkt_tab') # Initialize the lemmatizer lemmatizer = WordNetLemmatizer() # Function to map NLTK's POS tags to the format used by the WordNet lemmatizer def get_wordnet_pos(treebank_tag): if treebank_tag.startswith('J'): return wn.ADJ elif treebank_tag.startswith('V'): return wn.VERB elif treebank_tag.startswith('R'): return wn.ADV else: # Default to noun if no match is found or starts with 'N' return wn.NOUN text = "The leaves on the tree were turning a bright red, indicating that fall was leaving its mark." text = text.lower() tokens = word_tokenize(text) tagged_tokens = pos_tag(tokens) # Lemmatize each token with its POS tag lemmatized_tokens = [lemmatizer.lemmatize(token, get_wordnet_pos(tag)) for token, tag in tagged_tokens] print("Original text:", text) print("Lemmatized text:", ' '.join(lemmatized_tokens))
copy

Wie Sie sehen können, haben wir zuerst das POS-Tagging mit der Funktion pos_tag() durchgeführt. Anschließend haben wir List Comprehension verwendet, um eine Liste von lemmatisierten Tokens zu erstellen, indem wir die Methode lemmatize() mit dem aktuellen Token und dem korrekt formatierten Tag (unter Verwendung unserer Funktion get_wordnet_pos(tag)) als Argumente angewendet haben. Wir haben absichtlich keine Stoppwörter entfernt, um zu demonstrieren, dass der Code alle Tokens effektiv verarbeitet.

Aufgabe

Swipe to start coding

Es ist an der Zeit, alle bisher gelernten Textvorverarbeitungstechniken zu kombinieren, um lemmatisierten Text ohne die Stoppwörter aus dem ursprünglichen Rohtext zu erhalten. Ihre Aufgabe ist die folgende:

  1. Konvertieren Sie text in Kleinbuchstaben.

  2. Laden Sie die Liste der englischen Stoppwörter und konvertieren Sie sie in set.

  3. Initialisieren Sie einen Lemmatisierer.

  4. Tokenisieren Sie den text-String.

  5. Filtern Sie die Stoppwörter mit List Comprehension heraus.

  6. Führen Sie das POS-Tagging mit der entsprechenden Funktion durch.

  7. Lemmatisieren Sie die resultierenden Tokens unter Berücksichtigung ihrer POS-Tags mit List Comprehension.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
We're sorry to hear that something went wrong. What happened?
some-alt