Maison >développement back-end >Tutoriel Python >Techniques Python avancées pour un traitement et une analyse de texte efficaces
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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 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 !
Investor Central, Investor Central (espagnol/allemand), Smart Living, Epochs & Echoes, Puzzling Mysteries, Hindutva, Elite Dev, JS Schools
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!