


Techniques Python avancées pour un traitement et une analyse de texte efficaces
Jan 13, 2025 am 11:48 AMEn 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?:
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)
Sortie?: ['info@example.com', 'support@example.com']
Regex excelle également dans la substitution de texte. Conversion de montants en dollars en euros?:
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)
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?:
import string text = "Hello, World! How are you?" translator = str.maketrans("", "", string.punctuation) cleaned_text = text.translate(translator) print(cleaned_text)
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?:
from difflib import get_close_matches words = ["python", "programming", "code", "developer"] similar = get_close_matches("pythonic", words, n=1, cutoff=0.6) print(similar)
Sortie?: ['python']
SequenceMatcher
gère des comparaisons plus complexes?:
from difflib import SequenceMatcher def similarity(a, b): return SequenceMatcher(None, a, b).ratio() print(similarity("python", "pyhton"))
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?:
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))
Sortie?: "programming"
Trouver des cha?nes similaires?:
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"]))
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?:
import ftfy text = "The Mona Lisa doesn?¢a??a?¢t have eyebrows." fixed_text = ftfy.fix_text(text) print(fixed_text)
Sortie?: "The Mona Lisa doesn't have eyebrows."
Normalisation d'Unicode?:
weird_text = "This is Fullwidth text" normal_text = ftfy.fix_text(weird_text) print(normal_text)
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?:
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)
Sortie?: ['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog', '.']
NLTK word_tokenize
?:
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)
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 taches 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é grace à 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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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

La sécurité des applications Web doit être prête à faire attention. Les vulnérabilités communes sur les sites Web Python incluent des risques XSS, injection SQL, CSRF et téléchargement de fichiers. Pour XSS, le moteur de modèle doit être utilisé pour s'échapper automatiquement, filtrer le texte riche HTML et définir les politiques CSP; Pour éviter l'injection SQL, la requête paramétrée ou le cadre ORM et vérifier l'entrée utilisateur; Pour éviter le CSRF, le mécanisme CSRFTToken doit être activé et les opérations sensibles doivent être confirmées deux fois; Les vulnérabilités de téléchargement de fichiers doivent être utilisées pour restreindre les types, renommer les fichiers et interdire les autorisations d'exécution. Suivre les normes et l'utilisation d'outils matures peut réduire efficacement les risques, et les besoins de sécurité ont une attention et des tests continus.

L'Unittest et Pytest de Python sont deux cadres de test largement utilisés qui simplifient l'écriture, l'organisation et l'exécution de tests automatisés. 1. Les deux prennent en charge la découverte automatique des cas de test et fournissent une structure de test claire: unittest définit les tests en héritant de la classe TestCase et en commen?ant par Test \ _; PyTest est plus concis, il suffit d'une fonction à partir de test \ _. 2. Ils ont tous un support d'affirmation intégré: Unittest fournit ASSERTEQUAL, ASSERTTRUE et d'autres méthodes, tandis que PyTest utilise une instruction ASSERT améliorée pour afficher automatiquement les détails de l'échec. 3. Tous ont des mécanismes pour gérer la préparation et le nettoyage des tests: l'ONU

Les paramètres par défaut de Python ne sont initialisés qu'une seule fois lorsqu'ils sont définis. Si des objets mutables (tels que des listes ou des dictionnaires) sont utilisés comme paramètres par défaut, un comportement inattendu peut être causé. Par exemple, lors de l'utilisation d'une liste vide comme paramètre par défaut, plusieurs appels à la fonction réutiliseront la même liste au lieu de générer une nouvelle liste à chaque fois. Les problèmes causés par ce comportement comprennent: 1. Partage inattendu des données entre les appels de fonction; 2. Les résultats des appels suivants sont affectés par les appels précédents, augmentant la difficulté de débogage; 3. Il provoque des erreurs logiques et est difficile à détecter; 4. Il est facile de confondre les développeurs novices et expérimentés. Pour éviter les problèmes, la meilleure pratique consiste à définir la valeur par défaut sur nulle et à créer un nouvel objet à l'intérieur de la fonction, comme utiliser my_list = aucun au lieu de my_list = [] et initialement dans la fonction

Le déploiement d'applications Python dans les environnements de production nécessite une attention à la stabilité, à la sécurité et à la maintenance. Tout d'abord, utilisez Gunicorn ou UWSGI pour remplacer le serveur de développement pour prendre en charge le traitement simultané; Deuxièmement, coopérez avec Nginx comme proxy inverse pour améliorer les performances; Troisièmement, configurez le nombre de processus en fonction du nombre de c?urs CPU pour optimiser les ressources; Quatrièmement, utilisez un environnement virtuel pour isoler les dépendances et geler les versions pour assurer la cohérence; Cinquièmement, permettez des journaux détaillés, intégrez des systèmes de surveillance et configurez des mécanismes d'alarme pour faciliter le fonctionnement et la maintenance; Sixièmement, évitez les autorisations racinaires pour exécuter des applications, fermer les informations de débogage et configurer les HTTP pour garantir la sécurité; Enfin, le déploiement automatique est réalisé via des outils CI / CD pour réduire les erreurs humaines.

Python fonctionne bien avec d'autres langues et systèmes dans l'architecture microservice, la clé est de savoir comment chaque service s'exécute indépendamment et communique efficacement. 1. à l'aide d'API standard et de protocoles de communication (tels que HTTP, REST, GRPC), Python construit des API via des frameworks tels que Flask et Fastapi, et utilise des demandes ou HTTPX pour appeler d'autres services linguistiques; 2. Utiliser des courtiers de messages (tels que Kafka, Rabbitmq, Redis) pour réaliser la communication asynchrone, les services Python peuvent publier des messages pour que d'autres consommateurs de langues soient traités, améliorant le découplage du système, l'évolutivité et la tolérance aux défauts; 3. Développer ou intégrer d'autres temps de langue (comme Jython) via C / C pour réaliser la mise en ?uvre

PythonisidealfordataanalysysydUetonumpyandpandas.1) NumpyExcelsAtnumericalcomputations withfast, multidimensionalarraysandvectorizedoperationslikenp.sqrt (). 2) PandashandlesstructuredDatawitheSeriesandData

La dérivation de la liste, du dictionnaire et de la collection de Python améliore la lisibilité du code et l'efficacité de l'écriture grace à la syntaxe concise. Ils conviennent pour simplifier les opérations d'itération et de conversion, telles que le remplacement des boucles multi-lignes par du code unique pour implémenter la transformation ou le filtrage des éléments. 1. Les compréhensions de la liste telles que [x2ForxInRange (10)] peuvent générer directement des séquences carrées; 2. Comprehensions du dictionnaire telles que {x: x2forxinrange (5)} Exprime clairement le mappage des valeurs clés; 3. Le filtrage conditionnel tel que [xforxinnumbersifx% 2 == 0] rend la logique de filtrage plus intuitive; 4. Des conditions complexes peuvent également être intégrées, comme la combinaison de filtrage multi-conditionnement ou d'expressions ternaires; Mais les opérations excessives de nidification ou d'effets secondaires doivent être évitées pour éviter de réduire la maintenabilité. L'utilisation rationnelle de la dérivation peut réduire

Pour implémenter un itérateur personnalisé, vous devez définir les méthodes __iter__ et __Next__ dans la classe. ① La méthode __iter__ renvoie l'objet itérateur lui-même, généralement soi, pour être compatible avec des environnements itératifs tels que pour les boucles; ② La méthode __Next__ contr?le la valeur de chaque itération, renvoie l'élément suivant dans la séquence, et lorsqu'il n'y a plus d'éléments, une exception d'arrêt doit être lancée; ③ L'état doit être suivi correctement et les conditions de terminaison doivent être définies pour éviter les boucles infinies; ④ Logique complexe telle que le filtrage des lignes de fichiers et faire attention au nettoyage des ressources et à la gestion de la mémoire; ⑤ Pour une logique simple, vous pouvez envisager d'utiliser le rendement de la fonction du générateur à la place, mais vous devez choisir une méthode appropriée basée sur le scénario spécifique.
