TRIE-Baumimplementierung mit Python und LOUDS

Überblick

TRIE-Baum in Python implementiert LOUDS wird für die Datenstruktur beim Erstellen des TRIE-Baums verwendet

TRIE Baum

TRIE木

Merkmale des TRIE-Baums

Aufgrund ihrer Eigenschaften werden TRIE-Bäume für die Kana-Kanji-Konvertierung und die automatische Vervollständigung verwendet.

LOUDS --LOUDS (Level Order Unary Degree Sequence) ist einer der Ordnungsbaumausdrücke und kann die Baumstruktur mit einer extrem kleinen Größe ausdrücken.

Komplettes Wörterbuch

Implementierung

Implementierte Folgendes in Python (GitHub)

--trie.py: TRIE-Baum --builder.py: Bit-Array --words.py: Wörterbuchdaten erstellen / lesen --measure.py: Messen Sie den Speicher und die Suchzeit --search_word.py: Wortsuche --test.py: Messung der Suchzeit

Wörterbuchdaten erstellen

Bei der folgenden Ausführung werden Wörterbuchdaten erstellt, in die die Knotennummern und Wörter des TRIE-Baums durch Kommas getrennt geschrieben werden. Die Daten verwendeten den Wordnet-Korpus von nltk Später werden Testdaten aus diesen Wörterbuchdaten erstellt.

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

Wortsuche

 python search_word.py Wörterbuchdaten PFAD

Sie können eine einzelne Wortsuche durchführen, indem Sie die obige Datei ausführen Wenn Sie ein Wort eingeben, werden die Knotennummer, die Wortdefinition und das Präfix, die bei der Suche erhalten wurden, wie unten gezeigt ausgegeben. search_result.PNG

Suchzeitmessung

Testdaten erstellen

Sie können Testdaten für eine beliebige Anzahl von Wörtern aus Wörterbuchdaten erstellen, indem Sie Folgendes ausführen

 python words.py Wörterbuchdaten PFAD Anzahl der Proben 1, Anzahl der Proben 2, Anzahl der Proben 3,…

Wenn Sie mehrere Testdaten erstellen möchten, geben Sie die Stichprobengröße der durch Kommas getrennten Daten an. Wenn "Testdaten erstellt werden" ausgegeben wird, ist dies in Ordnung. Testdaten werden in ./data/test erstellt

Messung

Bei der Ausführung kann der Test mit den unten gezeigten Testdaten beliebig oft ausgeführt werden.

 python test.py Wörterbuchdaten PFAD Testdaten PFAD Testanzahl

Wenn "Test ist abgeschlossen" ausgegeben wird, ist dies in Ordnung. Ausgabeergebnisse werden in ./results erstellt

Bei der Messung werden die genaue Übereinstimmungssuchzeit und die Präfixsuchzeit gemessen.

Intern wird die Suchfunktion der Trie-Klasse für das Eingabewort ausgeführt und die Knotennummer des TRIE-Baums ausgegeben. Die Ausgabeknotennummer wird mit der Knotennummer in den Wörterbuchdaten sortiert. Wenn sie übereinstimmen, wird die Anzahl der Suchvorgänge um 1 erhöht und es wird bestätigt, ob die Suche korrekt ist. Gleiches gilt für die Präfixsuche

Ausgabeergebnis

test_result_detail.PNG

Verweise

Recommended Posts

TRIE-Baumimplementierung mit Python und LOUDS
Python-Implementierung eines nicht rekursiven Segmentbaums
Implementierung der Dyxtra-Methode durch Python
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Fortsetzung der Multi-Plattform-Entwicklung mit Electron und Python
Erläuterung der Bearbeitungsentfernung und Implementierung in Python
Beispiel für das Lesen und Schreiben von CSV mit Python
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
[# 2] Mach Minecraft mit Python. ~ Modellzeichnung und Player-Implementierung ~
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Versionsverwaltung von Node, Ruby und Python mit anyenv
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Erklärung und Implementierung von SocialFoceModel
Python-Implementierung des Partikelfilters
Python mit Pyenv und Venv
Maxout Beschreibung und Implementierung (Python)
Implementierung der schnellen Sortierung in Python
Quellinstallation und Installation von Python
Funktioniert mit Python und R.
Erstellen Sie einen API-Server, um den Betrieb der Front-Implementierung mit Python3 und Flask zu überprüfen
Python-Implementierung des CSS3-Mischmodus und Diskussion über den Farbraum
Führen Sie mit Python und Matplotlib eine Isostromanalyse offener Wasserkanäle durch
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Erkennen Sie mit Python Objekte einer bestimmten Farbe und Größe
[Mit einfacher Erklärung] Scratch-Implementierung einer Deep Boltsman-Maschine mit Python ②
[Mit einfacher Erklärung] Scratch-Implementierung einer tiefen Boltzmann-Maschine mit Python ①
Beispiel für das Parsen von HTTP GET und JSON mit Pfefferpython
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Umgebungskonstruktion von Python und OpenCV
Die Geschichte von Python und die Geschichte von NaN
Erläuterung und Implementierung von PRML Kapitel 4
Roboter läuft mit Arduino und Python
Einführung und Implementierung von JoCoR-Loss (CVPR2020)
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Erklärung und Implementierung des ESIM-Algorithmus
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Installation von SciPy und matplotlib (Python)
Scraping mit Node, Ruby und Python
Einführung und Implementierung der Aktivierungsfunktion
Sortieralgorithmus und Implementierung in Python
Scraping mit Python, Selen und Chromedriver
Implementierung eines Lebensspiels in Python
Erste Schritte mit Python Grundlagen von Python
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Dies und das von Python-Eigenschaften
Lebensspiel mit Python! (Conways Spiel des Lebens)
Lesen und Schreiben von NetCDF mit Python
10 Funktionen von "Sprache mit Batterie" Python
Ich habe mit PyQt5 und Python3 gespielt
Implementierung von Desktop-Benachrichtigungen mit Python
Implementierung von Light CNN (Python Keras)