HyperTag bietet ein ausdrucksstarkes Tag-System und eine leistungsstarke semantische Suchmaschine für alle Ihre Dateien. Stellen Sie Ihre Denkweise mithilfe von Tags dar. Finden Sie mithilfe der semantischen Suche für Ihre Textdokumente (ja, sogar PDFs) und Bilder, wonach Sie suchen. Anstatt proprietäre Dateiformate wie andere vorhandene Dateiorganisationstools einzuführen, legt HyperTag Ihre vorhandenen Dateien einfach und ohne großen Aufwand übereinander.
Ziel : Minimieren Sie die Zeit zwischen einem Gedanken und dem Zugriff auf alle relevanten Dateien.
Inhaltsverzeichnis
Verfügbar auf PyPI
$ pip install hypertag
(unterstützt nur CPU- und CUDA-beschleunigte Ausführung!)
Erreichen Sie mich über Twitter @SeanPedersen96
HyperTag bietet eine elegante CLI, aber was noch wichtiger ist, es erstellt ein Verzeichnis namens HyperTagFS
, eine dateisystembasierte Darstellung Ihrer Dateien und Tags mithilfe symbolischer Links und Verzeichnisse.
HyperTag WebApp (experimentell) : Ein schicker HTML+JS-Client. Visualisieren, strukturieren und durchsuchen Sie Ihre persönlichen Dateien in Sekundenschnelle mithilfe der HyperTag-Engine.
Verzeichnisimport : Importieren Sie Ihre vorhandenen Verzeichnishierarchien mit $ hypertag import path/to/directory
. HyperTag wandelt es mithilfe von Metatagging automatisch in eine Tag-Hierarchie um.
Semantische Text- und Bildsuche (experimentell) : Suchen Sie mit einer einfachen Textabfrage nach Bildern (jpg, png) und Inhalten von Textdokumenten (ja, sogar PDFs). Die Textsuche wird von der fantastischen Sentence Transformers-Bibliothek unterstützt. Die Text-zu-Bild-Suche wird durch das CLIP-Modell von OpenAI unterstützt. Derzeit werden nur englische Abfragen unterstützt.
HyperTag-Daemon (experimentell) : Überwacht HyperTagFS
und zur automatischen Importliste hinzugefügte Verzeichnisse auf Benutzeränderungen (siehe Abschnitt „HyperTag-Daemon starten“ unten). Erzeugt außerdem den DaemonService, der die semantische Suche erheblich beschleunigt (Warnung: Der Daemon-Prozess ist ein RAM-Fresser mit einer Auslastung von ca. 2 GB).
Fuzzy-Matching-Abfragen : HyperTag verwendet Fuzzy-Matching, um Reibungsverluste im unwahrscheinlichen Fall eines Tippfehlers zu minimieren.
Dateitypgruppen : HyperTag erstellt automatisch Ordner mit allgemeinen Dateien (z. B. Bilder: jpg, png usw., Dokumente: txt, pdf usw., Quellcode: py, js usw.), die in HyperTagFS
zu finden sind.
HyperTag-Diagramm : Verschaffen Sie sich schnell einen Überblick über Ihr HyperTag-Diagramm! HyperTag visualisiert das Metatag-Diagramm bei jeder Änderung und speichert es unter HyperTagFS/hypertag-graph.pdf
.
Spawn-HTTP-Server für den HyperTag-Webclient, der auf localhost:23236 ausgeführt wird
$ python3 -m hypertag.webapi
Importieren Sie Dateien mit Tags, die aus der vorhandenen Verzeichnishierarchie abgeleitet werden.
$ hypertag import path/to/directory
$ hypertag add path/to/file https://github.com/SeanPedersen/HyperTag
Markieren Sie Dateien manuell. Abkürzung: $ hypertag t
$ hypertag tag humans/*.txt with human "Homo Sapiens"
Fügen Sie dem Tag einer Datei einen Wert hinzu:
$ hypertag tag sean.txt with name="Sean Pedersen"
Tag(s) manuell aus Datei(en) entfernen.
$ hypertag untag humans/*.txt with human "Homo Sapiens"
Metatag-Tag/s zum Erstellen von Tag-Hierarchien. Tastenkürzel: $ hypertag tt
$ hypertag metatag human with animal
Alle Assoziationen (Dateien und Tags) von Tag A in Tag B zusammenführen.
$ hypertag merge human into "Homo Sapiens"
Gibt die Dateinamen der Ergebnismenge aus, die der Abfrage entspricht. Abfragen bestehen aus Tags (mit Werten) und Operanden. Der Einfachheit halber werden Tags durch Fuzzy-Matching abgeglichen. Eine Verschachtelung wird derzeit nicht unterstützt, Abfragen werden von links nach rechts ausgewertet.
Abkürzung: $ hypertag q
Abfrage mit einem Wert unter Verwendung eines Platzhalters: $ hypertag query name="Sean*"
Pfade drucken: $ hypertag query human --path
Fuzzy-Matching-Tag drucken: $ hypertag query man --verbose
Fuzzy-Matching deaktivieren: $ hypertag query human --fuzzy=0
Der Standardoperand ist AND (Schnittpunkt):
$ hypertag query human name="Sean*"
entspricht $ hypertag query human and name="Sean*"
ODER (Vereinigung):
$ hypertag query human or "Homo Sapiens"
MINUS (Differenz):
$ hypertag query human minus "Homo Sapiens"
Es können nur indizierte Dateien durchsucht werden.
$ hypertag index
Um auch nicht parsbare PDFs zu analysieren, installieren Sie tesseract: # pacman -S tesseract tesseract-data-eng
Nur Bilddateien indizieren: $ hypertag index --image
Nur Textdateien indizieren: $ hypertag index --text
Ein benutzerdefinierter Suchalgorithmus, der Semantik mit der Suche nach Token-Übereinstimmung kombiniert. Drucken Sie Textdateinamen sortiert nach Übereinstimmungspunktzahl. Die Leistung profitiert erheblich von der Ausführung des HyperTag-Daemons.
Abkürzung: $ hypertag s
$ hypertag search "your important text query" --path --score --top_k=10
Drucken Sie Bilddateinamen nach Übereinstimmungspunktzahl sortiert. Die Leistung profitiert erheblich von der Ausführung des HyperTag-Daemons.
Abkürzung: $ hypertag si
Text zum Bild: $ hypertag search_image "your image content description" --path --score --top_k=10
Bild zu Bild: $ hypertag search_image "path/to/image.jpg" --path --score --top_k=10
Daemon-Prozess mit dreifacher Funktionalität starten:
HyperTagFS
Verzeichnis auf BenutzeränderungenSearch Images
oder Search Texts
: Interpretiert den Namen als semantische Suchabfrage (fügen Sie top_k=42 hinzu, um die Ergebnisgröße zu begrenzen) und füllt ihn automatisch mit Ergebnissen $ hypertag daemon
$ hypertag tags filename1 filename2
$ hypertag metatags tag1 tag2
$ hypertag show
Drucknamen: $ hypertag show files
Druckpfade: $ hypertag show files --path
Visualisieren Sie die Metatag-Diagrammhierarchie (gespeichert im HyperTagFS-Stammverzeichnis).
$ hypertag graph
Legen Sie den Layout-Algorithmus fest (Standard: fruchterman_reingold):
$ hypertag graph --layout=kamada_kawai
Generieren Sie eine dateisystembasierte Darstellung Ihrer Dateien und Tags mithilfe symbolischer Links und Verzeichnisse.
$ hypertag mount
Zur automatischen Importliste hinzugefügte Verzeichnisse werden vom Daemon auf neue Dateien oder Änderungen überwacht.
$ hypertag add_auto_import_dir path/to/directory
Standard ist das Home-Verzeichnis des Benutzers.
$ hypertag set_hypertagfs_dir path/to/directory
pyproject.toml
)~/.config/hypertag/hypertag.db
).~/.config/hypertag/web_pages
gespeichert, andere in ~/.config/hypertag/downloads
$ git clone https://github.com/SeanPedersen/HyperTag.git
$ cd HyperTag/
$ poetry install
$ poetry shell
$ pytest -v
$ black hypertag/
$ flake8
$ mypy hypertag --no-namespace-packages
$ bandit --exclude tests/ -r .
$ python -m hypertag
Was ist der Sinn der Existenz von HyperTag?
HyperTag bietet viele einzigartige Funktionen wie Import, semantische Suche, grafische Darstellung und Fuzzy-Matching-Funktionen, die die Verwendung sehr benutzerfreundlich machen. Dabei bleibt die Codebasis von HyperTag im Vergleich zu ähnlichen Projekten wie TMSU (>10.000 LOC in Go) und SuperTag (>25.000 LOC in Rust) mit <2000 LOC relativ klein, was das Hacken erleichtert.
Semantische Suchalternativen