


Remplacement et correction de mots avec NLTK en Python
Lorsque nous parlons de traitement du langage naturel (NLP), l'une des tâches les plus importantes consiste à remplacer et à corriger les mots. Cela implique des techniques telles que la radicalisation, la lemmatisation, la correction orthographique et le remplacement de mots basés sur des synonymes et des antonymes. L’utilisation de ces techniques peut grandement améliorer la qualité de l’analyse de texte, que ce soit pour les moteurs de recherche, les chatbots ou l’analyse des sentiments. Explorons comment la bibliothèque NLTK en Python aide dans ces tâches.
Racine : suffixes de coupe
Le stemming est une technique qui supprime les suffixes des mots, ne laissant que la racine. Par exemple, le mot « courir » a la racine « corr ». Ceci est utile pour réduire le nombre de mots qu'un moteur de recherche doit indexer.
En NLTK, nous pouvons utiliser PorterStemmer pour faire du stemming. Voyons comment ça marche :
from nltk.stem import PorterStemmer stemmer = PorterStemmer() print(stemmer.stem("correndo")) # Saída: corr print(stemmer.stem("correção")) # Saída: correc
Ici, nous avons vu que le radical coupe les suffixes et ne laisse que la racine des mots. Cela vous aide à rester concentré sur le sens principal des mots, sans vous soucier de leurs variations.
Lemmatisation : retour à la forme de base
La lemmatisation est similaire à la radicalisation, mais au lieu de couper les suffixes, elle convertit le mot en sa forme de base, ou lemme. Par exemple, « courir » devient « courir ». C'est un peu plus intelligent que la radicalisation, car cela prend en compte le contexte du mot.
Pour faire de la lemmatisation en NLTK, nous utilisons 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
Dans cet exemple, nous utilisons la fonction lemmatize et, pour les verbes, nous spécifions la partie du discours (pos) comme 'v'. Cela aide NLTK à mieux comprendre le contexte du mot.
Expressions régulières à remplacer
Parfois, nous souhaitons remplacer des mots ou des modèles spécifiques dans le texte. Pour cela, les expressions régulières (regex) sont très utiles. Par exemple, nous pouvons utiliser des expressions régulières pour étendre les contractions, comme « non » à « non ».
Voici comment procéder avec NLTK :
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?
Dans cet exemple, la fonction expand_contracoes utilise l'expression régulière pour rechercher et remplacer les mots contractés dans le texte.
Vérification orthographique avec Enchant
Une autre tâche importante est la correction orthographique. Parfois, les textes comportent des fautes de frappe ou d’orthographe, et leur correction est essentielle pour l’analyse du texte. La bibliothèque pyenchant est idéale pour cela.
Tout d'abord, nous devons installer la bibliothèque pyenchant :
pip install pyenchant
Ensuite, nous pouvons utiliser Enchant pour corriger les mots :
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)}")
Si le mot est incorrect, Enchant suggère des corrections.
Remplacement de synonyme
Remplacer les mots par leurs synonymes peut enrichir un texte, éviter les répétitions et améliorer le style. Avec WordNet, on peut trouver des synonymes facilement.
Voici comment procéder :
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'}
Dans cet exemple, la fonction replace_synonyms renvoie une liste de synonymes pour le mot donné.
Remplacer les antonymes
Comme les synonymes, les antonymes sont également utiles, notamment pour des tâches telles que l'analyse des sentiments. Nous pouvons utiliser WordNet pour trouver des antonymes :
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'}
Cette fonction trouve des antonymes pour le mot donné.
Applications pratiques
Voyons quelques applications pratiques de ces techniques.
Analyse des sentiments
L'analyse des sentiments consiste à déterminer la polarité (positive, négative ou neutre) d'un texte. Le remplacement de mots peut améliorer cette analyse.
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)
Normalisation du texte
La normalisation du texte consiste à transformer le texte en une forme cohérente. Cela peut inclure la correction de l'orthographe, la suppression des mots vides et le remplacement des synonymes.
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"
Recherche de texte améliorée
Dans les moteurs de recherche, le remplacement des synonymes peut améliorer les résultats de recherche en trouvant des documents qui utilisent des synonymes pour les mots-clés recherchés.
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"
Conclusion
Dans ce texte, nous explorons diverses techniques de remplacement et de correction de mots à l'aide de la bibliothèque NLTK en Python. Nous avons vu comment faire la radicalisation, la lemmatisation, utiliser des expressions régulières pour remplacer des mots, corriger l'orthographe avec Enchant et remplacer les synonymes et les antonymes avec WordNet. Nous discutons également des applications pratiques de ces techniques dans l'analyse des sentiments, la normalisation de texte et les moteurs de recherche.
L'utilisation de ces techniques peut améliorer considérablement la qualité de l'analyse de texte, rendant les résultats plus précis et pertinents. NLTK propose une gamme puissante d'outils pour ceux qui travaillent avec le traitement du langage naturel, et comprendre comment utiliser ces outils est essentiel pour tout projet NLP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Comment télécharger des fichiers dans Python

Comment utiliser la belle soupe pour analyser HTML?

Comment travailler avec des documents PDF à l'aide de Python

Comment se cacher en utilisant Redis dans les applications Django

Présentation de la boîte à outils en langage naturel (NLTK)

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch?
