Wortersetzung und -korrektur mit NLTK in Python

WBOY
Freigeben: 2024-08-02 05:23:58
Original
688 Leute haben es durchsucht

Substituição e Correção de Palavras com NLTK em Python

Wenn wir über natürliche Sprachverarbeitung (NLP) sprechen, ist eine der wichtigsten Aufgaben das Ersetzen und Korrigieren von Wörtern. Dazu gehören Techniken wie Wortstammbildung, Lemmatisierung, Rechtschreibkorrektur und Wortersetzung auf der Grundlage von Synonymen und Antonymen. Der Einsatz dieser Techniken kann die Qualität der Textanalyse erheblich verbessern, sei es für Suchmaschinen, Chatbots oder Sentimentanalysen. Lassen Sie uns untersuchen, wie die NLTK-Bibliothek in Python bei diesen Aufgaben hilft.

Stemming: Suffixe schneiden

Stemming ist eine Technik, die Suffixe aus Wörtern entfernt und nur den Wortstamm übrig lässt. Beispielsweise hat das Wort „running“ die Wurzel „corr“. Dies ist nützlich, um die Anzahl der Wörter zu reduzieren, die eine Suchmaschine indizieren muss.

In NLTK können wir PorterStemmer zum Stemming verwenden. Mal sehen, wie es funktioniert:

from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("correndo")) # Saída: corr print(stemmer.stem("correção")) # Saída: correc
Nach dem Login kopieren
e

Hier haben wir gesehen, dass die Wortstammbildung die Suffixe schneidet und nur den Wortstamm übrig lässt. Dies hilft Ihnen, sich auf die Hauptbedeutung von Wörtern zu konzentrieren, ohne sich über deren Variationen Gedanken machen zu müssen.

Lemmatisierung: Rückkehr zur Grundform

Die Lemmatisierung ähnelt der Stemmung, aber anstatt Suffixe abzuschneiden, wandelt sie das Wort in seine Grundform, das Lemma, um. Beispielsweise wird aus „running“ „run“. Das ist etwas intelligenter als die Wortstammerkennung, da dabei der Kontext des Wortes berücksichtigt wird.

Um die Lemmatisierung in NLTK durchzuführen, verwenden wir WordNetLemmatizer:

from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer() print(lemmatizer.lemmatize("correndo", pos='v')) # Saída: correr print(lemmatizer.lemmatize("correções")) # Saída: correção
Nach dem Login kopieren
e

In diesem Beispiel verwenden wir die Lemmatisierungsfunktion und geben für Verben die Wortart (pos) als „v“ an. Dies hilft NLTK, den Kontext des Wortes besser zu verstehen.

Reguläre Ausdrücke zum Ersetzen

Manchmal möchten wir bestimmte Wörter oder Muster im Text ersetzen. Hierfür sind reguläre Ausdrücke (Regex) sehr nützlich. Beispielsweise können wir Regex verwenden, um Kontraktionen wie „nein“ zu „nein“ zu erweitern.

So können wir das mit NLTK machen:

import re texto = "Eu não posso ir à festa. Você não vai?" expansoes = [("não", "não")] def expandir_contracoes(texto, expansoes): for (contraido, expandido) in expansoes: texto = re.sub(r'\b' + contraido + r'\b', expandido, texto) return texto print(expandir_contracoes(texto, expansoes)) # Saída: Eu não posso ir à festa. Você não vai?
Nach dem Login kopieren
e

In diesem Beispiel verwendet die Funktion expand_contracoes Regex, um kontrahierte Wörter im Text zu finden und zu ersetzen.

Rechtschreibprüfung mit Enchant

Eine weitere wichtige Aufgabe ist die Rechtschreibkorrektur. Manchmal weisen Texte Tipp- oder Rechtschreibfehler auf, deren Korrektur für die Textanalyse unerlässlich ist. Dafür eignet sich die Pyenchant-Bibliothek hervorragend.

Zuerst müssen wir die Pyenchant-Bibliothek installieren:

pip install pyenchant
Nach dem Login kopieren
e

Danach können wir Enchant verwenden, um Wörter zu korrigieren:

import enchant d = enchant.Dict("pt_BR") palavra = "corrigindo" if d.check(palavra): print(f"{palavra} está correta") else: print(f"{palavra} está incorreta, sugestões: {d.suggest(palavra)}")
Nach dem Login kopieren
e

Wenn das Wort falsch ist, schlägt Enchant Korrekturen vor.

Synonymersatz

Das Ersetzen von Wörtern durch ihre Synonyme kann einen Text bereichern, Wiederholungen vermeiden und den Stil verbessern. Mit WordNet können wir Synonyme leicht finden.

So können wir es machen:

from nltk.corpus import wordnet def substituir_sinonimos(palavra): sinonimos = [] for syn in wordnet.synsets(palavra, lang='por'): for lemma in syn.lemmas(): sinonimos.append(lemma.name()) return set(sinonimos) print(substituir_sinonimos("bom")) # Saída: {'bom', 'legal', 'ótimo', 'excelente'}
Nach dem Login kopieren
e

In diesem Beispiel gibt die Funktion „replace_synonyms“ eine Liste von Synonymen für das angegebene Wort zurück.

Ersetzen von Antonymen

Wie Synonyme sind auch Antonyme nützlich, insbesondere für Aufgaben wie die Stimmungsanalyse. Wir können WordNet verwenden, um Antonyme zu finden:

def substituir_antonimos(palavra): antonimos = [] for syn in wordnet.synsets(palavra, lang='por'): for lemma in syn.lemmas(): if lemma.antonyms(): antonimos.append(lemma.antonyms()[0].name()) return set(antonimos) print(substituir_antonimos("bom")) # Saída: {'mau', 'ruim'}
Nach dem Login kopieren
e

Diese Funktion findet Antonyme für das angegebene Wort.

Praktische Anwendungen

Sehen wir uns einige praktische Anwendungen dieser Techniken an.

Stimmungsanalyse

Bei der Stimmungsanalyse geht es darum, die Polarität (positiv, negativ oder neutral) eines Textes zu bestimmen. Wortersetzung kann diese Analyse verbessern.

texto = "Eu adorei o filme, mas a comida estava ruim." palavras = word_tokenize(texto, language='portuguese') polaridade = 0 for palavra in palavras: sinsets = wordnet.synsets(palavra, lang='por') if sinsets: for syn in sinsets: polaridade += syn.pos_score() - syn.neg_score() print("Polaridade do texto:", polaridade) # Saída: Polaridade do texto: 0.25 (por exemplo)
Nach dem Login kopieren
e
Textnormalisierung

Bei der Textnormalisierung geht es darum, Text in eine konsistente Form umzuwandeln. Dies kann die Rechtschreibprüfung, das Entfernen von Stoppwörtern und das Ersetzen von Synonymen umfassen.

stopwords = set(stopwords.words('portuguese')) texto = "A análise de textos é uma área fascinante do PLN." palavras = word_tokenize(texto, language='portuguese') palavras_filtradas = [w for w in palavras se não w in stopwords] texto_normalizado = " ".join(palavras_filtradas) print(texto_normalizado) # Saída: "análise textos área fascinante PLN"
Nach dem Login kopieren
e
Verbesserte Textsuche

In Suchmaschinen kann das Ersetzen von Synonymen die Suchergebnisse verbessern, indem Dokumente gefunden werden, die Synonyme für die gesuchten Schlüsselwörter verwenden.

consulta = "bom filme" consulta_expandidas = [] for palavra em consulta.split(): sinonimos = substituir_sinonimos(palavra) consulta_expandidas.extend(sinonimos) print("Consulta expandida:", " ".join(consulta_expandidas)) # Saída: "bom legal ótimo excelente filme"
Nach dem Login kopieren
e

Abschluss

In diesem Text untersuchen wir verschiedene Wortersetzungs- und Korrekturtechniken mithilfe der NLTK-Bibliothek in Python. Wir haben gesehen, wie man Wortstammbildung und Lemmatisierung durchführt, reguläre Ausdrücke zum Ersetzen von Wörtern verwendet, Rechtschreibkorrekturen mit Enchant durchführt und Synonyme und Antonyme mit WordNet ersetzt. Wir diskutieren auch praktische Anwendungen dieser Techniken in der Stimmungsanalyse, Textnormalisierung und Suchmaschinen.

使用這些技術可以顯著提高文字分析的質量,使結果更加準確和相關。 NLTK 為自然語言處理人員提供了一系列強大的工具,以了解如何使用這些工具對於任何 NLP 專案至關重要。

Das obige ist der detaillierte Inhalt vonWortersetzung und -korrektur mit NLTK in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!