HyperTag propose un système de balises expressif et un puissant moteur de recherche sémantique pour tous vos fichiers. Représentez votre façon de penser à l’aide de balises. Trouvez ce que vous cherchez grâce à la recherche sémantique de vos documents texte (oui, même PDF) et de vos images. Au lieu d'introduire des formats de fichiers propriétaires comme d'autres outils d'organisation de fichiers existants, HyperTag se superpose simplement à vos fichiers existants sans aucun problème.
Objectif : Minimiser le temps entre une réflexion et l'accès à tous les fichiers pertinents.
Table des matières
Disponible sur PyPI
$ pip install hypertag
(prend en charge à la fois le CPU uniquement et l'exécution accélérée CUDA !)
Contactez-moi via Twitter @SeanPedersen96
HyperTag offre une CLI astucieuse mais, plus important encore, il crée un répertoire appelé HyperTagFS
qui est une représentation basée sur le système de fichiers de vos fichiers et balises à l'aide de liens et de répertoires symboliques.
HyperTag WebApp (expérimental) : un client HTML+JS astucieux. Visualisez, structurez et recherchez vos fichiers personnels en quelques secondes grâce au moteur HyperTag.
Importation d'annuaire : importez vos hiérarchies de répertoires existantes à l'aide de $ hypertag import path/to/directory
. HyperTag le convertit automatiquement en une hiérarchie de balises à l'aide du métatagging.
Recherche sémantique de texte et d'images (expérimentale) : recherchez du contenu d'images (jpg, png) et de documents texte (oui, même PDF) avec une simple requête de texte. La recherche de texte est alimentée par l'impressionnante bibliothèque Phrase Transformers. La recherche texte en image est optimisée par le modèle CLIP d'OpenAI. Actuellement, seules les requêtes en anglais sont prises en charge.
Démon HyperTag (expérimental) : surveille HyperTagFS
et les répertoires ajoutés à la liste d'importation automatique pour les modifications apportées par l'utilisateur (voir la section "Démarrer le démon HyperTag" ci-dessous). Génère également le DaemonService qui accélère considérablement la recherche sémantique (avertissement : le processus démon est un monopole de la RAM avec une utilisation d'environ 2 Go).
Requêtes de correspondance floue : HyperTag utilise la correspondance floue pour minimiser les frictions dans le cas peu probable d'une faute de frappe.
Groupes de types de fichiers : HyperTag crée automatiquement des dossiers contenant des fichiers communs (par exemple Images : jpg, png, etc., Documents : txt, pdf, etc., Code source : py, js, etc.), qui peuvent être trouvés dans HyperTagFS
.
HyperTag Graph : Obtenez rapidement un aperçu de votre HyperTag Graph ! HyperTag visualise le graphique des balises méta à chaque modification et l'enregistre dans HyperTagFS/hypertag-graph.pdf
.
Générer un serveur HTTP pour le client Web HyperTag exécuté sur localhost : 23236
$ python3 -m hypertag.webapi
Importez des fichiers avec des balises déduites de la hiérarchie de répertoires existante.
$ hypertag import path/to/directory
$ hypertag add path/to/file https://github.com/SeanPedersen/HyperTag
Étiquetez manuellement les fichiers. Raccourci : $ hypertag t
$ hypertag tag humans/*.txt with human "Homo Sapiens"
Ajoutez une valeur à la balise d'un fichier :
$ hypertag tag sean.txt with name="Sean Pedersen"
Supprimez manuellement les balises du ou des fichiers.
$ hypertag untag humans/*.txt with human "Homo Sapiens"
Balises Metatag pour créer des hiérarchies de balises. Raccourci : $ hypertag tt
$ hypertag metatag human with animal
Fusionnez toutes les associations (fichiers et balises) de la balise A dans la balise B.
$ hypertag merge human into "Homo Sapiens"
Imprime les noms de fichiers de l'ensemble résultant correspondant à la requête. Les requêtes sont composées de balises (avec des valeurs) et d'opérandes. Les balises sont floues pour plus de commodité. L'imbrication n'est actuellement pas prise en charge, les requêtes sont évaluées de gauche à droite.
Raccourci : $ hypertag q
Requête avec une valeur utilisant un caractère générique : $ hypertag query name="Sean*"
Chemins d'impression : $ hypertag query human --path
Imprimer la balise à correspondance floue : $ hypertag query man --verbose
Désactiver la correspondance floue : $ hypertag query human --fuzzy=0
L'opérande par défaut est AND (intersection) :
$ hypertag query human name="Sean*"
est équivalent à $ hypertag query human and name="Sean*"
OU (syndicat) :
$ hypertag query human or "Homo Sapiens"
MOINS (différence) :
$ hypertag query human minus "Homo Sapiens"
Seuls les fichiers indexés peuvent être recherchés.
$ hypertag index
Pour analyser même les PDF non analysables, installez tesseract : # pacman -S tesseract tesseract-data-eng
Indexer uniquement les fichiers image : $ hypertag index --image
Indexer uniquement les fichiers texte : $ hypertag index --text
Un algorithme de recherche personnalisé combinant la recherche sémantique et la recherche de correspondance de jetons. Imprimez les noms de fichiers texte triés par score correspondant. Les performances bénéficient grandement de l’exécution du démon HyperTag.
Raccourci : $ hypertag s
$ hypertag search "your important text query" --path --score --top_k=10
Imprimez les noms de fichiers image triés par score correspondant. Les performances bénéficient grandement de l’exécution du démon HyperTag.
Raccourci : $ hypertag si
Texte en image : $ hypertag search_image "your image content description" --path --score --top_k=10
Image à image : $ hypertag search_image "path/to/image.jpg" --path --score --top_k=10
Démarrez le processus démon avec une triple fonctionnalité :
HyperTagFS
pour les modifications des utilisateursSearch Images
ou Search Texts
: interprète le nom comme requête de recherche sémantique (ajoutez top_k=42 pour limiter la taille des résultats) et le remplit automatiquement avec les résultats $ hypertag daemon
$ hypertag tags filename1 filename2
$ hypertag metatags tag1 tag2
$ hypertag show
Imprimer les noms : $ hypertag show files
Chemins d'impression : $ hypertag show files --path
Visualisez la hiérarchie du graphique des balises méta (enregistrée à la racine HyperTagFS).
$ hypertag graph
Spécifiez l'algorithme de mise en page (par défaut : fruchterman_reingold) :
$ hypertag graph --layout=kamada_kawai
Générez une représentation basée sur le système de fichiers de vos fichiers et balises à l’aide de liens symboliques et de répertoires.
$ hypertag mount
Les répertoires ajoutés à la liste d'importation automatique seront surveillés par le démon pour détecter les nouveaux fichiers ou les modifications.
$ hypertag add_auto_import_dir path/to/directory
La valeur par défaut est le répertoire personnel de l'utilisateur.
$ hypertag set_hypertagfs_dir path/to/directory
pyproject.toml
)~/.config/hypertag/hypertag.db
)~/.config/hypertag/web_pages
pour les sites Web, les autres dans ~/.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
Quel est l’intérêt d’HyperTag ?
HyperTag offre de nombreuses fonctionnalités uniques telles que les fonctions d'importation, de recherche sémantique, de représentation graphique et de correspondance floue qui le rendent très pratique à utiliser. Tout cela tandis que la base de code d'HyperTag reste relativement petite à <2 000 LOC par rapport à des projets similaires comme TMSU (> 10 000 LOC en Go) et SuperTag (> 25 000 LOC en Rust), ce qui facilite le piratage.
Alternatives de recherche sémantique