Heim >Technologie-Peripheriegeräte >IT Industrie >Erste Schritte mit natürlicher Sprachverarbeitung in Python

Erste Schritte mit natürlicher Sprachverarbeitung in Python

Joseph Gordon-Levitt
Joseph Gordon-LevittOriginal
2025-02-10 10:51:09725Durchsuche

Getting Started with Natural Language Processing in Python

In der heutigen Welt wird eine große Menge an Daten unstrukturiert, z. B. Textdaten wie Social -Media -Kommentare, Browserhistorie und Kundenfeedback. Angesichts massiver Textdaten weiß ich nicht, wo ich mit der Analyse beginnen soll? Die NLP -Technologie (natürliche Sprachverarbeitung) von Python kann Ihnen helfen!

Dieses Tutorial ist so konzipiert, dass Sie die Kernkonzepte von NLP verwenden und Textdaten in Python analysieren. Wir werden lernen, wie man Text in kleinere Einheiten (Word -Metamorphose) aufschließt, Wörter in eine Stammform (Stammextraktion und morphologische Wiederherstellung) normalisiert und wie Dokumente zur Vorbereitung auf weitere Analyse bereinigt werden.

Beginnen wir!

Kernpunkte

  • Pythons natürliche Sprachverarbeitung (NLP) beinhaltet das Aufbrechen von Text in Wortelemente, die Normalisierung von Wörtern in STEM -Formen und die Reinigung von Dokumenten zur weiteren Analyse. Wir werden die NLTK -Bibliothek von Python verwenden, um diese Operationen auszuführen.
  • Die beiden Techniken zum Umwandeln von Wörtern in Stammform sind die Stammextraktion und die restaurierte Form. Die STEM -Extraktion ist ein einfacher Algorithmus, der Wort -Affixe entfernt.
  • Datenreinigung in NLP beinhaltet das Entfernen von Interpunktion und Stoppwörter (wie gemeinsame Wörter wie „I“, „A“ und „The“), da diese Wörter bei der Analyse von Text wenig Bedeutung haben.
  • Nach dem Reinigen des Textes können Sie die FreqDist -Klasse von NLTK verwenden, um eine Wortfrequenz zu finden. Dies ist sehr nützlich, um gemeinsame Begriffe im Text zu finden.

Vorsichtsmaßnahmen

Dieses Tutorial verwendet die NLTK -Bibliothek von Python, um alle NLP -Operationen im Text auszuführen. Beim Schreiben dieses Tutorials verwendeten wir NLTK Version 3.4. Sie können die Bibliothek mit dem PIP -Befehl am Terminal installieren:

<code class="language-bash">pip install nltk==3.4</code>

Um die im System installierte NLTK -Version zu überprüfen, können Sie die Bibliothek in den Python -Interpreter importieren und die Version überprüfen:

<code class="language-python">import nltk
print(nltk.__version__)</code>

In diesem Tutorial müssen Sie möglicherweise bestimmte Ressourcen herunterladen, um bestimmte Operationen in NLTK auszuführen. Wir werden jede Ressource bei Bedarf beschreiben.

Wenn Sie jedoch vermeiden möchten, Ressourcen einzeln in der späteren Phase des Tutorials herunterzuladen, können Sie jetzt alle Ressourcen gleichzeitig herunterladen:

<code class="language-bash">python -m nltk.downloader all</code>

Schritt 1: Wortmetamorphose

Computersysteme können die natürliche Sprache nicht selbst verstehen. Der erste Schritt im Umgang mit natürlicher Sprache besteht darin, den Originaltext in Wortelemente umzuwandeln. Ein Wortelement ist eine Kombination von kontinuierlichen Zeichen mit einer Bedeutung. Es liegt an Ihnen, Sätze in lexikalische Elemente zu zerlegen. Zum Beispiel besteht ein einfacher Weg darin, den Satz durch Spaziergänge zu teilen, um ihn in ein einzelnes Wort zu zerlegen.

In der NLTK -Bibliothek können Sie die Funktion word_tokenize() verwenden, um Zeichenfolgen in lexikalische Elemente umzuwandeln. Sie müssen jedoch zuerst die Punkt -Ressource herunterladen. Führen Sie den folgenden Befehl im Terminal aus:

<code class="language-bash">nltk.download('punkt')</code>

Als nächstes müssen Sie nltk.tokenize aus word_tokenize importieren, um es zu verwenden:

<code class="language-python">from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))</code>
Die Ausgabe des

Code ist wie folgt:

<code class="language-bash">pip install nltk==3.4</code>

Sie werden feststellen, dass word_tokenize nicht nur Strings basierend auf Räumen aufteilt, sondern auch die Interpunktionsmarkierungen in Wortelemente unterteilt. Die Durchführung oder Entfernen von Interpunktionsmarken hängt von Ihren analytischen Bedürfnissen ab.

Schritt 2: Konvertieren Sie das Wort in STEM -Form

Beim Umgang mit natürlicher Sprache stellen Sie häufig fest, dass es verschiedene grammatikalische Formen desselben Wortes gibt. Zum Beispiel sind "Go", "Going" und "Gone" alle unterschiedliche Formen desselben Verbs "Go".

Während Ihr Projekt möglicherweise verschiedene grammatikalische Formen von Wörtern bewahren muss, lassen Sie uns einen Weg diskutieren, verschiedene grammatikalische Formen desselben Wortes in seine Stammform umzuwandeln. Es gibt zwei Techniken, mit denen Sie ein Wort in seine STEM -Form umwandeln können.

Die erste Technik ist die Extraktion. Die Stammextraktion ist ein einfacher Algorithmus, der Wort -Affixe entfernt. In NLTK gibt es eine Vielzahl von Stammextraktionsalgorithmen. In diesem Tutorial verwenden wir den Porter -Algorithmus.

importieren wir zuerst nltk.stem.porter aus PorterStemmer. Als nächstes initialisieren wir den Stammextraktor in die stemmer -Variable und verwenden dann die .stem() -Methode, um die Stammform des Wortes zu finden:

<code class="language-python">import nltk
print(nltk.__version__)</code>

Die Ausgabe des obigen Codes ist Go. Wenn Sie den oben beschriebenen Stammextraktor für andere Formen von "Go" durchführen, werden Sie feststellen, dass der Stammextraktor die gleiche Stammform "Go" zurückgibt. Da die Stammextraktion jedoch nur ein einfacher Algorithmus ist, der auf dem Entfernen von Wortanträgen basiert, schlägt sie fehl, wenn Wörter in der Sprache weniger häufig verwendet werden.

Wenn Sie beispielsweise versuchen, einen Stammextraktor für das Wort "konstituten" zu verwenden, gibt es unintuitive Ergebnisse:

<code class="language-bash">python -m nltk.downloader all</code>

Sie werden feststellen, dass die Ausgabe "Constitut" ist.

Dieses Problem kann gelöst werden, indem ein komplexerer Ansatz verfolgt wird, der die STEM -Form eines Wortes in einem bestimmten Kontext nachgibt. Dieser Prozess wird als Reduzierung der Wortform bezeichnet. Die Wiederherstellung der Wortform normalisiert die Wörter basierend auf dem Kontext und dem Wortschatz des Textes. In NLTK können Sie die WordNetLemmatizer -Klasse verwenden, um die morphologische Wiederherstellung von Sätzen durchzuführen.

Erstens müssen Sie WordNet -Ressourcen aus dem NLTK -Downloader im Python -Terminal herunterladen:

<code class="language-bash">nltk.download('punkt')</code>

Nach Abschluss des Downloads müssen Sie die WordNetLemmatizer -Klasse importieren und initialisieren:

<code class="language-python">from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))</code>

Um den Morphologie -Restaurator zu verwenden, verwenden Sie die Methode .lemmatize(). Es akzeptiert zwei Parameter: Wort und Kontext. In unserem Beispiel werden wir "V" als Kontext verwenden. Nachdem wir die Ausgabe der .lemmatize() -Methode anzeigen, werden wir den Kontext weiter untersuchen:

<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>

Sie werden feststellen, dass die .lemmatize() -Methode das Wort "Konstitute" in seine STEM -Form "Konstitut" korrekt umwandelt. Sie werden auch feststellen, dass die Wiederherstellung der Wortform länger dauert als die Stammextraktion, da der Algorithmus komplexer ist.

Überprüfen Sie, wie Sie den zweiten Parameter der .lemmatize() -Methode programmatisch bestimmen. NLTK hat eine pos_tag() -Funktion, die den Kontext von Wörtern in einem Satz ermittelt. Sie müssen jedoch zunächst averaged_perceptron_tagger Ressource herunterladen:

<code class="language-bash">pip install nltk==3.4</code>

Importieren Sie als nächstes die Funktion pos_tag() und führen Sie sie im Satz aus:

<code class="language-python">import nltk
print(nltk.__version__)</code>

Sie werden feststellen, dass die Ausgabe eine Paarliste ist. Jedes Paar enthält ein Wortelement und sein Tag, das den Kontext des Wortelements im gesamten Text darstellt. Bitte beachten Sie, dass das Etikett der Zeichensetzung selbst selbst:

ist
<code class="language-bash">python -m nltk.downloader all</code>

Wie dekodieren Sie den Kontext jedes Wortes? Unten finden Sie eine vollständige Liste aller Tags im Web und deren entsprechende Bedeutungen. Bitte beachten Sie, dass alle Substantive Etiketten haben, die mit "N" beginnen und alle Verben mit "V" Etiketten haben. Wir können diese Informationen im zweiten Parameter der .lemmatize() -Methode verwenden:

<code class="language-bash">nltk.download('punkt')</code>

Die Ausgabe des obigen Codes lautet wie folgt:

<code class="language-python">from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))</code>

Diese Ausgabe ist erwartungsgemäß und "Konstitute" und "Magistrates" werden in "Konstitut" bzw. "Magistrat" ​​umgewandelt.

Schritt 3: Datenreinigung

Der nächste Schritt bei der Vorbereitung der Daten besteht darin, die Daten zu bereinigen und alles zu entfernen, was Ihrer Analyse keine Bedeutung hinzufügt. Insgesamt werden wir uns untersuchen, wie Interpunktion und Stoppwörter aus der Analyse entfernt werden können.

Interpunktionsmarken entfernen ist eine ziemlich einfache Aufgabe. string Das Objekt der Bibliothek enthält alle Interpunktionsmarken in Englisch: punctuation

<code>['Hi', ',', 'this', 'is', 'a', 'nice', 'hotel', '.']</code>
Die Ausgabe dieses Code -Snippets lautet wie folgt:

<code class="language-python">from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
print(stemmer.stem("going"))</code>
Um Interpunktionsmarken aus Word -Elementen zu entfernen, können Sie einfach den folgenden Code ausführen:

<code class="language-python">print(stemmer.stem("constitutes"))</code>
Als nächstes werden wir uns darauf konzentrieren, wie Sie Stoppwörter entfernen können. Stoppwörter werden üblicherweise verwendete Wörter in der Sprache, wie z. B. "I", "A" und "The", und bei der Analyse von Text bieten diese Wörter wenig Bedeutung. Daher werden wir die Stoppwörter aus der Analyse entfernen. Download Stopwords -Ressourcen vom NLTK -Downloader:

<code class="language-bash">nltk.download('wordnet')</code>
nach dem Download ist abgeschlossen, importieren Sie

aus nltk.corpus und verwenden Sie die stopwords -Methode mit "Englisch" als Parameter. Hier ist eine Liste von 179 Stoppwörtern in Englisch: words()

<code class="language-python">from nltk.stem.wordnet import WordNetLemmatizer
lem = WordNetLemmatizer()</code>
Wir können das Beispiel für Wortform -Wiederherstellen mit den in diesem Abschnitt diskutierten Konzepten kombinieren, um die folgende Funktion

zu erstellen. Darüber hinaus werden wir das Wort in Kleinbuchstaben konvertieren, bevor wir vergleichen, ob es Teil der Stop -Word -Liste ist. Auf diese Weise können wir es immer noch erfassen, wenn das Stoppwort zu Beginn des Satzes erscheint und Kapitalisierung erbringt: clean_data()

<code class="language-python">print(lem.lemmatize('constitutes', 'v'))</code>
Die Ausgabe dieses Beispiels ist wie folgt:

<code class="language-bash">nltk.download('averaged_perceptron_tagger')</code>
Wie Sie sehen können, wurden Interpunktion und Stoppwörter entfernt.

Wortfrequenzverteilung

Nachdem Sie mit den grundlegenden Reinigungstechniken in NLP vertraut sind, versuchen wir, die Häufigkeit von Wörtern im Text zu finden. In dieser Übung werden wir den Text des Märchens "Ratte, Vogel und Wurst" verwenden, die für das Gutenberg -Projekt kostenlos verfügbar ist. Wir werden den Text dieses Märchens in einer String text speichern.

Zuerst multiplizieren wir die text und reinigen es dann mit der oben definierten Funktion clean_data:

<code class="language-bash">pip install nltk==3.4</code>

Um die Frequenzverteilung von Wörtern im Text zu finden, können Sie die FreqDist -Klasse von NLTK verwenden. Initialisieren Sie die Klasse mit Wortelementen als Parameter. Verwenden Sie dann die Methode .most_common(), um gemeinsame Begriffe zu finden. In diesem Fall versuchen wir, die zehn besten Begriffe zu finden:

<code class="language-python">import nltk
print(nltk.__version__)</code>

Folgendes sind die zehn am häufigsten gesehenen Begriffe in diesem Märchen:

<code class="language-bash">python -m nltk.downloader all</code>

Nach den Erwartungen sind die drei häufigsten Begriffe die drei Hauptfiguren in Märchen.

Bei der Analyse von Text ist die Häufigkeit von Wörtern möglicherweise nicht wichtig. Im Allgemeinen besteht der nächste Schritt in NLP darin, Statistiken zu generieren-TF-IDF (Word-Frequenz-Inverse-Dokumentfrequenz)-, die die Bedeutung von Wörtern in einer Reihe von Dokumenten angibt.

Schlussfolgerung

In diesem Tutorial haben wir ein vorläufiges Verständnis der Verarbeitung natürlicher Sprache in Python. Wir konvertieren Text in lexikalische Elemente, konvertieren Wörter in ihre STEM -Form und reinigen den Text schließlich, um einen Teil zu entfernen, der der Analyse keine Bedeutung hinzufügt.

Während wir uns einfache NLP -Aufgaben in diesem Tutorial angesehen haben, gibt es viele andere Techniken zu erforschen. Zum Beispiel möchten wir möglicherweise Themenmodellierung für Textdaten durchführen, um gemeinsame Themen zu finden, über die Text diskutiert wird. Eine komplexere Aufgabe in NLP ist die Implementierung von Stimmungsanalysemodellen, um die Emotionen hinter jedem Text zu bestimmen.

Gibt es Kommentare oder Fragen? Fühlen Sie sich frei, mich auf Twitter zu kontaktieren.

Häufig gestellte Fragen zur Verarbeitung natürlicher Sprache mit Python (FAQ)

Was ist der Hauptunterschied zwischen natürlicher Sprachverarbeitung (NLP) und natürliches Sprachverständnis (NLU)?

natürliche Sprachverarbeitung (NLP) und natürliches Sprachverständnis (NLU) sind zwei Unterfelder künstlicher Intelligenz, die oft verwirrt sind. NLP ist ein breiteres Konzept, das alle Methoden zur Interaktion mit Computern mit natürlicher Sprache enthält. Dies beinhaltet das Verständnis und die Erzeugung menschlicher Sprache. NLU hingegen ist eine Untergruppe von NLP, die sich auf das Verständnis von Aspekten spezialisiert hat. Es beinhaltet die Verwendung von Algorithmen, um die menschliche Sprache auf wertvolle Weise zu verstehen und zu interpretieren.

Wie verbessert man die Genauigkeit von NLP -Modellen in Python?

Verbesserung der Genauigkeit von NLP -Modellen beinhaltet eine Vielzahl von Strategien. Erstens können Sie mehr Trainingsdaten verwenden. Je mehr Lerndaten Ihr Modell hat, desto besser seine Leistung. Zweitens sollten Sie verschiedene NLP -Techniken verwenden. Wenn Sie beispielsweise eine Wörterbeutel (Bogen) verwenden, möchten Sie möglicherweise die WordFrequency-Inverse-Dokumentfrequenz (TF-IDF) oder Word2VEC ausprobieren. Schließlich kann die Feinabstimmung der Parameter des Modells auch zu signifikanten Verbesserungen führen.

Was sind die gemeinsamen Anwendungen von NLP in der realen Welt?

nlp hat weite Anwendungen in der realen Welt. Dazu gehören Sprachübersetzung, Sentimentanalyse, Chatbots, Sprachassistenten wie Siri und Alexa, Textübersicht und E -Mail -Spam -Erkennung.

Wie funktioniert die Lexikalisierung in NLP?

Wortmetamorphose ist der Prozess des Zersetzung von Text in einzelne Wörter oder Wortelemente. Dies ist ein wichtiger Schritt in NLP, da das Modell den Text verstehen und analysieren kann. In Python können Sie die word_tokenize -Funktion der NLTK -Bibliothek verwenden, um Lexikalisierung durchzuführen.

Welche Rolle spielt die STOP -Wörter in NLP?

STOP -Wörter sind allgemeine Wörter, die während der Vorverarbeitungsphase von NLP häufig herausgefiltert werden, da sie nicht viele aussagekräftige Informationen enthalten. Beispiele sind "", ",", "," und "usw. Das Entfernen dieser Wörter kann dazu beitragen, die Leistung des NLP -Modells zu verbessern.

Wie gehe ich mit mehreren Sprachen in NLP um?

Die Entsorgung mehrerer Sprachen in NLP kann aufgrund von Unterschieden in Grammatik, Syntax und Wortschatz eine Herausforderung sein. Die NLTK -Bibliothek von Python unterstützt jedoch mehrere Sprachen. Sie können auch eine Spracherkennungsbibliothek wie langdetect verwenden, um die Sprache des Textes zu identifizieren und dann zu verarbeiten.

Was sind Stammextraktion und lexikalische Restaurierung in NLP?

Stammextraktion und morphologische Wiederherstellung sind Techniken, mit denen Wörter in ihren Stamm oder ihre Wurzelform vereinfacht werden. Der Hauptunterschied zwischen ihnen besteht darin, dass die Stammextraktion häufig nicht existierende Wörter erzeugt, während das Prinzip der Wortformrestaurierung das Wort auf seine sprachlich korrekte Wurzelform reduziert.

Wie kann ich NLP für die Stimmungsanalyse verwenden?

emotionale Analyse besteht darin, die im Text ausgedrückten Emotionen zu bestimmen. Dies kann mit verschiedenen NLP -Techniken erfolgen. Sie können beispielsweise die Sentiment -Analyse mit der TextBlob -Bibliothek in Python problemlos durchführen.

Was ist die N-Meta-Syntax in NLP?

n Metagram ist eine kontinuierliche Abfolge von n aufeinanderfolgenden Elementen in einem bestimmten Text oder einer Sprachprobe. Sie werden für NLP verwendet, um das nächste Element in der Sequenz vorherzusagen. Beispielsweise betrachten Sie in binären Grammatik (n = 2) Wortpaare für Analyse oder Vorhersage.

Wie verwendet ich NLP für die Textklassifizierung?

Textklassifizierung umfasst die Klassifizierung von Text in vordefinierte Kategorien. Dies kann mit einer Vielzahl von NLP -Techniken und maschinellem Lernalgorithmen erfolgen. Beispielsweise können Sie eine Tasche mit Wörtern oder TF-IDF zur Feature-Extraktion verwenden und diese Funktionen dann in ein maschinelles Lernmodell zur Klassifizierung eingeben.

Das obige ist der detaillierte Inhalt vonErste Schritte mit natürlicher Sprachverarbeitung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn