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 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
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.
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
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.
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?
In diesem Beispiel verwendet die Funktion expand_contracoes Regex, um kontrahierte Wörter im Text zu finden und zu ersetzen.
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
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)}")
Wenn das Wort falsch ist, schlägt Enchant Korrekturen vor.
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'}
In diesem Beispiel gibt die Funktion „replace_synonyms“ eine Liste von Synonymen für das angegebene Wort zurück.
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'}
Diese Funktion findet Antonyme für das angegebene Wort.
Sehen wir uns einige praktische Anwendungen dieser Techniken an.
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)
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"
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"
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!