Implémentation de l'arbre TRIE avec Python et LOUDS

Aperçu

Implémentation de l'arbre TRIE en Python LOUDS est utilisé pour la structure de données lors de la création de l'arborescence TRIE

Arbre TRIE

--Un arbre TRIE est un ensemble de chaînes de caractères représentées par une structure arborescente ordonnée. --Composé de nœuds et d'arêtes, et la position et la clé (chaîne de recherche) de chaque nœud correspondent. --Une chaîne de caractères vide correspond au nœud racine

TRIE木

Caractéristiques de l'arbre TRIE

En raison de ses caractéristiques, les arbres TRIE sont utilisés pour la conversion kana-kanji et la complétion automatique.

LOUDS --LOUDS (séquence de degrés unaire d'ordre de niveau) est l'une des expressions de l'arbre d'ordre et peut exprimer la structure arborescente avec une taille extrêmement petite.

Dictionnaire complet

la mise en oeuvre

Implémentation de ce qui suit en Python (GitHub)

--trie.py: arbre TRIE --builder.py: tableau de bits --words.py: créer / lire des données de dictionnaire --measure.py: mesure la mémoire et le temps de recherche --search_word.py: recherche de mots --test.py: Mesure du temps de recherche

Création de données de dictionnaire

Lorsqu'elles sont exécutées comme suit, les données de dictionnaire dans lesquelles les numéros de nœud et les mots de l'arborescence TRIE sont écrits séparés par des virgules sont créées. Données utilisées corpus wordnet de nltk Plus tard, les données de test seront créées à partir de ces données de dictionnaire.

from words import CreateWords
CreateWords("./data/origin/wordnet_words.csv")

Recherche de mot

 python search_word.py Données du dictionnaire PATH

Vous pouvez effectuer une recherche sur un seul mot en exécutant le fichier ci-dessus Lorsque vous entrez un mot, le numéro de nœud, la définition du mot et le préfixe obtenus à partir de la recherche sont affichés comme indiqué ci-dessous. search_result.PNG

Mesure du temps de recherche

Créer des données de test

Vous pouvez créer des données de test pour un nombre illimité de mots à partir des données du dictionnaire en exécutant ce qui suit

 python words.py Données du dictionnaire PATH Nombre d'échantillons 1, Nombre d'échantillons 2, Nombre d'échantillons 3,…

Si vous souhaitez créer plusieurs données de test, spécifiez la taille de l'échantillon des données séparées par des virgules. Si "Les données de test sont créées." Est sortie, c'est ok. Les données de test sont créées dans ./data/test

La mesure

Une fois exécuté, le test peut être exécuté un nombre illimité de fois avec les données de test comme indiqué ci-dessous.

 python test.py Données du dictionnaire PATH Données de test PATH Nombre de tests

Si "Test est terminé." Est sortie, c'est ok. Les résultats de sortie sont créés dans ./results

Dans la mesure, le temps exact de recherche de correspondance et le temps de recherche de préfixe sont mesurés.

En interne, la fonction de recherche de la classe trie est exécutée pour le mot d'entrée et le numéro de nœud de l'arbre TRIE est sorti. Le numéro de nœud de sortie est assemblé avec le numéro de nœud dans les données du dictionnaire, et s'ils correspondent, le nombre de recherches est incrémenté de 1 et il est confirmé si la recherche est exacte. La même chose s'applique à la recherche de préfixe

Résultat de sortie

test_result_detail.PNG

Les références

Recommended Posts

Implémentation de l'arbre TRIE avec Python et LOUDS
Implémentation Python de l'arborescence de segments non récursive
Implémentation de la méthode Dyxtra par python
Coexistence de Python2 et 3 avec CircleCI (1.0)
Poursuite du développement multi-plateforme avec Electron et Python
Explication de la distance d'édition et de l'implémentation en Python
Exemple de lecture et d'écriture de CSV avec Python
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
[# 2] Créez Minecraft avec Python. ~ Dessin du modèle et implémentation du lecteur ~
Visualisez la gamme d'insertions internes et externes avec python
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Python et matériel - Utilisation de RS232C avec Python -
Explication et mise en œuvre de SocialFoceModel
Implémentation Python du filtre à particules
python avec pyenv et venv
Description et implémentation de Maxout (Python)
Implémentation du tri rapide en Python
Installation source et installation de Python
Fonctionne avec Python et R
Construisez un serveur API pour vérifier le fonctionnement de l'implémentation frontale avec python3 et Flask
Implémentation Python du mode de fusion CSS3 et discussion sur l'espace colorimétrique
Effectuer une analyse isocurrent des canaux en eau libre avec Python et matplotlib
Débarrassez-vous des données sales avec Python et les expressions régulières
Détecter les objets d'une couleur et d'une taille spécifiques avec Python
[Avec une explication simple] Implémentation Scratch d'une machine Boltsman profonde avec Python ②
[Avec une explication simple] Implémentation Scratch d'une machine Boltzmann profonde avec Python ①
Exemple d'analyse HTTP GET et JSON avec Pepper Python
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Communiquez avec FX-5204PS avec Python et PyUSB
Construction d'environnement de python et opencv
L'histoire de Python et l'histoire de NaN
Explication et mise en œuvre de PRML Chapitre 4
Robot fonctionnant avec Arduino et python
Introduction et mise en œuvre de JoCoR-Loss (CVPR2020)
Installez Python 2.7.9 et Python 3.4.x avec pip.
Explication et implémentation de l'algorithme ESIM
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Installer SciPy et matplotlib (Python)
Scraping avec Node, Ruby et Python
Introduction et mise en œuvre de la fonction d'activation
Algorithme de tri et implémentation en Python
Grattage avec Python, Selenium et Chromedriver
Implémentation du jeu de vie en Python
Premiers pas avec Python Bases de Python
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Ceci et cela des propriétés python
Jeu de vie avec Python! (Le jeu de la vie de Conway)
Lire et écrire NetCDF avec Python
10 fonctions du "langage avec batterie" python
J'ai joué avec PyQt5 et Python3
Implémentation des notifications de bureau à l'aide de Python
Implémentation de Light CNN (Python Keras)