En général, le filtrage à petite échelle des données、Le plus souvent utilisé dans le processus de nettoyage est l'expression régulière,Mais à mesure que la taille des données augmente,L'expression régulière semble un peu trop faible.
Expression régulière dans un 10k Trouver dans le Thésaurus de 15k L'heure des mots clés est presque 0.165 Secondes.Mais pour Flashtext En ce qui concerne 0.002 Secondes.Donc,,Sur cette question FlashtextEst à peu près plus rapide que l'expression régulière 82 X.

D'après la comparaison des performances de l'exemple ci - dessus, Comme nous avons besoin de plus en plus de caractères , La vitesse de traitement des expressions régulières augmente presque linéairement .Et pourtant,Flashtext Presque une constante .
1、Préparez - vous.flashtextEnvironnement
AdoptionpipPour installerflashtext, Ou d'une autre manière , Ici, la station miroir de l'Université Tsinghua est utilisée par défaut .
pip install flashtext -i https://pypi.tuna.tsinghua.edu.cn/simple
Prêt.flashtextAprès l'environnement,Regarde ça.flashtext Processus d'utilisation important , Pour nous aider à mieux nettoyer les données .
2、Ajouter un mot - clé
Les mots - clés sont ajoutés au thésaurus par un seul mot - clé ,Utiliseradd_keyword Fonction pour ajouter . Le premier paramètre indique le mot - clé à ajouter , Le deuxième paramètre est représenté par l'alias du premier mot - clé , Afficher sous forme d'alias si le mot - clé est trouvé , Si le deuxième paramètre n'est pas utilisé comme alias, le nom original est toujours affiché .
from flashtext import KeywordProcessor
# Initialisation du processeur de thésaurus critique
processor = KeywordProcessor()
# Ajouter des mots clés de façon régulière
processor.add_keyword('Python')
# Ajouter des mots clés par alias
processor.add_keyword('Scala', 'Java')
De cette façon, les mots clés requis ont été ajoutés au processeur de thésaurus de deux façons différentes .
3、Extraire les mots clés
Ajouter des mots clés à l'étape précédente , Il y a déjà des informations avec des mots clés dans le thésaurus ,Réutiliserextract_keywords Extraire les mots clés et .
# Extraire les informations du mot - clé dans une chaîne
found = processor.extract_keywords('I like Python and Scala.')
# Résultats
print(found)
# ['Python', 'Java']
Les résultats sont arrivés, Comme prévu ,EtScala Aussi montré pour Java.
4、Remplacer les mots clés
Les mots - clés de remplacement sont utilisés pour replace_keywordsFonctions, Pourvu que les mots du thésaurus qui ont un alias puissent être remplacés ,Comme au - dessusScala Est montré comme JavaC'est pareil.
Remplacer dans une chaîne ScalaMots clés,Parce queScala L'alias correspondant est Java, Donc, dans une chaîne Scala Devrait être remplacé par Java.
replaced = processor.replace_keywords('I like Scala.')
# Résultats
print(replaced)
# I like Java.
# Scala Si c'était le cas Java.
5、 Obtenir tous les mots clés
Parfois,,InKeywordProcessor .Quels mots - clés ont été ajoutés au processeur de thésaurus peuvent ne pas se souvenir clairement ,Disponible en ce momentget_all_keywords Fonction pour obtenir tous les mots clés actuels .
all_keywords = processor.get_all_keywords()
# Résultats
print(all_keywords)
# {'python': 'Python', 'scala': 'Java'}
6、 Ajouter des mots clés en vrac
Quand le thésaurus a besoin de plus de mots clés , Vous pouvez ajouter des lots par liste ou par Dictionnaire .Les fonctions correspondantes sont respectivementadd_keywords_from_list、add_keywords_from_dictFonctions.
# Initialiser un dictionnaire en le faisant ajouter en vrac
dict_ = {
'java': ['java_ee', 'java_se', 'java_me'],
'python': ['pandas', 'all']
}
# Ajouter des mots - clés par lots au moyen d'un dictionnaire
processor.add_keywords_from_dict(dict_)
# Faire correspondre les mots - clés des mots - clés ajoutés par lots
result = processor.extract_keywords('looking for java_ee and pandas.')
# Résultats
print(result)
# ['java', 'python']
# Ajouter des mots clés en vrac par liste
processor.add_keywords_from_list(['scala', 'python', 'scala', 'go'])
# Adoptionget_all_keywords Regardez tous les mots clés
all_keywords = processor.get_all_keywords()
# Résultats
print(all_keywords)
# {'python': 'python', 'pandas': 'python', 'scala': 'scala', 'java_ee': 'java', 'java_se': 'java', 'java_me': 'java', 'all': 'python', 'go': 'go'}
Découvrez que tous les mots clés ont été ajoutés au Thésaurus , Et les répétitions ne seront pas ajoutées à nouveau .
7、 Supprimer les mots clés par lots
Il existe également deux façons de supprimer les mots clés d'un processeur de thésaurus par lots ,L'un est une liste、L'autre est un dictionnaire..Les fonctions correspondantes sont respectivementremove_keywords_from_list、remove_keywords_from_dictFonctions.
# Supprimer par lots les mots clés de la liste
processor.remove_keywords_from_list(['python','java_ee','java_me'])
# Supprimer par lots les mots clés du Dictionnaire
processor.remove_keywords_from_dict({'python': ['pandas','all']})
# Adoptionget_all_keywords Regardez tous les mots clés
all_keywords = processor.get_all_keywords()
# Résultats
print(all_keywords)
# {'scala': 'scala', 'java_se': 'java', 'go': 'go'}
Il a été constaté que tous les mots clés à supprimer ont été supprimés .
8、Comparaison de l'efficacité de l'exécution
Pour une meilleure présentation ,J'ai trouvé deuxflashtext Les graphiques de comparaison de l'efficacité dans la recherche et le remplacement de mots clés peuvent être vus en un coup d'oeil .
flashtext、 Comparaison de l'efficacité de recherche des expressions régulières

flashtext、 Regular expression Search Replacement Comparison

【Le passé est merveilleux】

UnhelpFonction résoluepython Voir tous les documents pour ...
python Exception personnalisée/raiseException au mot - clé lancé
python Processus de production de lecteurs de musique locaux (Joindre le code source complet)
Outils automatisés:PyAutoGUI Contrôle de la souris et du clavier , Un instrument tranchant pour libérer les mains !
Tu as vu le gâteau d'anniversaire du singe programmé ?

![leetcode:1567. Length of the longest subarray whose product is a positive number [dp[i] indicates the maximum length ending with I]](/img/a4/c5c31de7a0a3b34a188bfec0b5d184.png)







