Maison développement back-end Tutoriel Python Remplacement et correction de mots avec NLTK en Python

Remplacement et correction de mots avec NLTK en Python

Aug 02, 2024 am 05:23 AM

Substituição e Correção de Palavras com NLTK em 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
Copier après la connexion

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
Copier après la connexion

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?
Copier après la connexion

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
Copier après la connexion

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)}")
Copier après la connexion

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'}
Copier après la connexion

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'}
Copier après la connexion

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)
Copier après la connexion
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"
Copier après la connexion
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"
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Mar 05, 2025 am 09:58 AM

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

Comment télécharger des fichiers dans Python Comment télécharger des fichiers dans Python Mar 01, 2025 am 10:03 AM

Comment télécharger des fichiers dans Python

Filtrage d'image en python Filtrage d'image en python Mar 03, 2025 am 09:44 AM

Filtrage d'image en python

Comment utiliser la belle soupe pour analyser HTML? Comment utiliser la belle soupe pour analyser HTML? Mar 10, 2025 pm 06:54 PM

Comment utiliser la belle soupe pour analyser HTML?

Comment travailler avec des documents PDF à l'aide de Python Comment travailler avec des documents PDF à l'aide de Python Mar 02, 2025 am 09:54 AM

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

Comment se cacher en utilisant Redis dans les applications Django Comment se cacher en utilisant Redis dans les applications Django Mar 02, 2025 am 10:10 AM

Comment se cacher en utilisant Redis dans les applications Django

Présentation de la boîte à outils en langage naturel (NLTK) Présentation de la boîte à outils en langage naturel (NLTK) Mar 01, 2025 am 10:05 AM

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

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Mar 10, 2025 pm 06:52 PM

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

See all articles