Maison > développement back-end > Tutoriel Python > Techniques Python avancées pour un traitement et une analyse de texte efficaces

Techniques Python avancées pour un traitement et une analyse de texte efficaces

DDD
Libérer: 2025-01-13 11:48:43
original
118 Les gens l'ont consulté

dvanced Python Techniques for Efficient Text Processing and Analysis

En tant qu'auteur prolifique, je vous invite à explorer mes livres sur Amazon. N'oubliez pas de me suivre sur Medium pour une assistance et des mises à jour continues. Merci pour votre précieux soutien !

Des années de développement Python axées sur le traitement et l'analyse de texte m'ont appris l'importance de techniques efficaces. Cet article met en évidence six méthodes Python avancées que j'utilise fréquemment pour améliorer les performances des projets PNL.

Expressions régulières (re Module)

Les expressions régulières sont indispensables pour la correspondance de modèles et la manipulation de texte. Le module re de Python offre une boîte à outils robuste. La maîtrise des regex simplifie le traitement de texte complexe.

Par exemple, extraire des adresses e-mail :

<code class="language-python">import re

text = "Contact us at info@example.com or support@example.com"
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = re.findall(email_pattern, text)
print(emails)</code>
Copier après la connexion
Copier après la connexion

Sortie : ['info@example.com', 'support@example.com']

Regex excelle également dans la substitution de texte. Conversion de montants en dollars en euros :

<code class="language-python">text = "The price is .99"
new_text = re.sub(r'$(\d+\.\d{2})', lambda m: f"€{float(m.group(1))*0.85:.2f}", text)
print(new_text)</code>
Copier après la connexion
Copier après la connexion

Sortie : "The price is €9.34"

Utilitaires du module de chaîne

Le module string de Python, bien que moins important que re, fournit des constantes et des fonctions utiles pour le traitement de texte, telles que la création de tables de traduction ou la gestion de constantes de chaîne.

Suppression de la ponctuation :

<code class="language-python">import string

text = "Hello, World! How are you?"
translator = str.maketrans("", "", string.punctuation)
cleaned_text = text.translate(translator)
print(cleaned_text)</code>
Copier après la connexion

Sortie : "Hello World How are you"

difflib pour la comparaison de séquences

Comparer des chaînes ou identifier des similitudes est courant. difflib propose des outils de comparaison de séquences, idéaux à cet effet.

Trouver des mots similaires :

<code class="language-python">from difflib import get_close_matches

words = ["python", "programming", "code", "developer"]
similar = get_close_matches("pythonic", words, n=1, cutoff=0.6)
print(similar)</code>
Copier après la connexion

Sortie : ['python']

SequenceMatcher gère des comparaisons plus complexes :

<code class="language-python">from difflib import SequenceMatcher

def similarity(a, b):
    return SequenceMatcher(None, a, b).ratio()

print(similarity("python", "pyhton"))</code>
Copier après la connexion

Sortie : (environ) 0.83

Distance de Levenshtein pour la correspondance floue

L'algorithme de distance de Levenshtein (utilisant souvent la bibliothèque python-Levenshtein) est vital pour la vérification orthographique et la correspondance floue.

Vérification orthographique :

<code class="language-python">import Levenshtein

def spell_check(word, dictionary):
    return min(dictionary, key=lambda x: Levenshtein.distance(word, x))

dictionary = ["python", "programming", "code", "developer"]
print(spell_check("progamming", dictionary))</code>
Copier après la connexion

Sortie : "programming"

Trouver des chaînes similaires :

<code class="language-python">def find_similar(word, words, max_distance=2):
    return [w for w in words if Levenshtein.distance(word, w) <= max_distance]

print(find_similar("code", ["code", "coder", "python"]))</code>
Copier après la connexion

Sortie : ['code', 'coder']

ftfy pour les correctifs d'encodage de texte

La bibliothèque ftfy résout les problèmes d'encodage, détectant et corrigeant automatiquement les problèmes courants comme mojibake.

Réparer le mojibake :

<code class="language-python">import ftfy

text = "The Mona Lisa doesn’t have eyebrows."
fixed_text = ftfy.fix_text(text)
print(fixed_text)</code>
Copier après la connexion

Sortie : "The Mona Lisa doesn't have eyebrows."

Normalisation d'Unicode :

<code class="language-python">weird_text = "This is Fullwidth text"
normal_text = ftfy.fix_text(weird_text)
print(normal_text)</code>
Copier après la connexion

Sortie : "This is Fullwidth text"

Tokenisation efficace avec spaCy et NLTK

La tokenisation est fondamentale en PNL. spaCy et NLTK offrent des capacités de tokenisation avancées au-delà du simple split().

Tokénisation avec spaCy :

<code class="language-python">import re

text = "Contact us at info@example.com or support@example.com"
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = re.findall(email_pattern, text)
print(emails)</code>
Copier après la connexion
Copier après la connexion

Sortie : ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']

NLTK word_tokenize :

<code class="language-python">text = "The price is .99"
new_text = re.sub(r'$(\d+\.\d{2})', lambda m: f"€{float(m.group(1))*0.85:.2f}", text)
print(new_text)</code>
Copier après la connexion
Copier après la connexion

Sortie : (similaire à spaCy)

Applications pratiques et bonnes pratiques

Ces techniques sont applicables à la classification de textes, à l'analyse des sentiments et à la récupération d'informations. Pour les grands ensembles de données, donnez la priorité à l'efficacité de la mémoire (générateurs), exploitez le multitraitement pour les tâches liées au processeur, utilisez des structures de données appropriées (ensembles pour les tests d'adhésion), compilez des expressions régulières pour une utilisation répétée et utilisez des bibliothèques telles que pandas pour le traitement CSV.

En mettant en œuvre ces techniques et bonnes pratiques, vous pouvez améliorer considérablement l'efficience et l'efficacité de vos flux de travail de traitement de texte. N'oubliez pas qu'une pratique et une expérimentation constantes sont essentielles pour maîtriser ces compétences précieuses.


101 livres

101 Books, une maison d'édition basée sur l'IA et cofondée par Aarav Joshi, propose des livres abordables et de haute qualité grâce à une technologie d'IA avancée. Découvrez le Golang Clean Code sur Amazon. Recherchez « Aarav Joshi » pour plus de titres et des réductions spéciales !

Nos Créations

Investor Central, Investor Central (espagnol/allemand), Smart Living, Epochs & Echoes, Puzzling Mysteries, Hindutva, Elite Dev, JS Schools


Nous sommes sur Medium

Tech Koala Insights, Epochs & Echoes World, Investor Central Medium, Puzzling Mysteries Medium, Science & Epochs Medium, Modern Hindutva

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal