HyperTag ofrece un sistema de etiquetas expresivo y un potente motor de búsqueda semántica para todos sus archivos. Representa cómo piensas usando etiquetas. Encuentre lo que busca mediante la búsqueda semántica de sus documentos de texto (sí, incluso PDF) e imágenes. En lugar de introducir formatos de archivo propietarios como otras herramientas de organización de archivos existentes, HyperTag simplemente se superpone suavemente a los archivos existentes sin ningún problema.
Objetivo : Minimizar el tiempo entre un pensamiento y el acceso a todos los archivos relevantes.
Tabla de contenido
Disponible en PyPI
$ pip install hypertag
(¡admite solo CPU y ejecución acelerada CUDA!)
Comuníquese conmigo a través de Twitter @SeanPedersen96
HyperTag ofrece una CLI elegante pero, lo que es más importante, crea un directorio llamado HyperTagFS
, que es una representación basada en un sistema de archivos de sus archivos y etiquetas mediante enlaces y directorios simbólicos.
HyperTag WebApp (experimental) : un elegante cliente HTML+JS. Visualice, estructure y busque sus archivos personales en segundos gracias al motor HyperTag.
Importación de directorio : importe sus jerarquías de directorios existentes utilizando $ hypertag import path/to/directory
. HyperTag lo convierte automáticamente en una jerarquía de etiquetas mediante metaetiquetado.
Búsqueda semántica de texto e imágenes (experimental) : busque contenido de imágenes (jpg, png) y documentos de texto (sí, incluso PDF) con una simple consulta de texto. La búsqueda de texto funciona con la increíble biblioteca Sentence Transformers. La búsqueda de texto a imagen funciona con el modelo CLIP de OpenAI. Actualmente solo se admiten consultas en inglés.
HyperTag Daemon (Experimental) : monitorea HyperTagFS
y los directorios agregados a la lista de importación automática para cambios de usuario (consulte la sección "Iniciar HyperTag Daemon" a continuación). También genera DaemonService, que acelera significativamente la búsqueda semántica (advertencia: el proceso daemon consume RAM con un uso de ~2 GB).
Consultas de coincidencia aproximada : HyperTag utiliza una coincidencia aproximada para minimizar la fricción en el improbable caso de un error tipográfico.
Grupos de tipos de archivos : HyperTag crea automáticamente carpetas que contienen archivos comunes (por ejemplo, Imágenes: jpg, png, etc., Documentos: txt, pdf, etc., Código fuente: py, js, etc.), que se pueden encontrar en HyperTagFS
.
HyperTag Graph : ¡Obtenga rápidamente una descripción general de su HyperTag Graph! HyperTag visualiza el gráfico de metaetiquetas en cada cambio y lo guarda en HyperTagFS/hypertag-graph.pdf
.
Generar un servidor HTTP para el cliente web HyperTag que se ejecuta en localhost:23236
$ python3 -m hypertag.webapi
Importe archivos con etiquetas inferidas de la jerarquía de directorios existente.
$ hypertag import path/to/directory
$ hypertag add path/to/file https://github.com/SeanPedersen/HyperTag
Etiquetar archivos manualmente. Atajo: $ hypertag t
$ hypertag tag humans/*.txt with human "Homo Sapiens"
Agregue un valor a la etiqueta de un archivo:
$ hypertag tag sean.txt with name="Sean Pedersen"
Elimine manualmente las etiquetas de los archivos.
$ hypertag untag humans/*.txt with human "Homo Sapiens"
Etiqueta/s metaetiqueta para crear jerarquías de etiquetas. Atajo: $ hypertag tt
$ hypertag metatag human with animal
Fusione todas las asociaciones (archivos y etiquetas) de la etiqueta A en la etiqueta B.
$ hypertag merge human into "Homo Sapiens"
Imprima los nombres de los archivos del conjunto resultante que coincidan con la consulta. Las consultas se componen de etiquetas (con valores) y operandos. Las etiquetas tienen una coincidencia aproximada para mayor comodidad. Actualmente no se admite el anidamiento; las consultas se evalúan de izquierda a derecha.
Atajo: $ hypertag q
Consulta con un valor usando un comodín: $ hypertag query name="Sean*"
Rutas de impresión: $ hypertag query human --path
Imprimir etiqueta de coincidencia aproximada: $ hypertag query man --verbose
Deshabilitar la coincidencia aproximada: $ hypertag query human --fuzzy=0
El operando predeterminado es AND (intersección):
$ hypertag query human name="Sean*"
es equivalente a $ hypertag query human and name="Sean*"
O (unión):
$ hypertag query human or "Homo Sapiens"
MENOS (diferencia):
$ hypertag query human minus "Homo Sapiens"
Sólo se pueden buscar archivos indexados.
$ hypertag index
Para analizar incluso archivos PDF que no se pueden analizar, instale tesseract: # pacman -S tesseract tesseract-data-eng
Archivos de imagen solo indexados: $ hypertag index --image
Indexar solo archivos de texto: $ hypertag index --text
Un algoritmo de búsqueda personalizado que combina búsqueda semántica con coincidencia de tokens. Imprima los nombres de los archivos de texto ordenados por puntuación coincidente. El rendimiento se beneficia enormemente al ejecutar el demonio HyperTag.
Atajo: $ hypertag s
$ hypertag search "your important text query" --path --score --top_k=10
Imprima los nombres de los archivos de imágenes ordenados por puntuación coincidente. El rendimiento se beneficia enormemente al ejecutar el demonio HyperTag.
Atajo: $ hypertag si
Texto a imagen: $ hypertag search_image "your image content description" --path --score --top_k=10
Imagen a imagen: $ hypertag search_image "path/to/image.jpg" --path --score --top_k=10
Inicie el proceso del demonio con triple funcionalidad:
HyperTagFS
para detectar cambios de usuarioSearch Images
o Search Texts
: interpreta el nombre como una consulta de búsqueda semántica (agregue top_k=42 para limitar el tamaño del resultado) y lo completa automáticamente con resultados. $ hypertag daemon
$ hypertag tags filename1 filename2
$ hypertag metatags tag1 tag2
$ hypertag show
Imprimir nombres: $ hypertag show files
Rutas de impresión: $ hypertag show files --path
Visualice la jerarquía del gráfico de metaetiquetas (guardada en la raíz de HyperTagFS).
$ hypertag graph
Especifique el algoritmo de diseño (predeterminado: fruchterman_reingold):
$ hypertag graph --layout=kamada_kawai
Genere una representación basada en el sistema de archivos de sus archivos y etiquetas utilizando enlaces y directorios simbólicos.
$ hypertag mount
El demonio supervisará los directorios agregados a la lista de importación automática en busca de nuevos archivos o cambios.
$ hypertag add_auto_import_dir path/to/directory
El valor predeterminado es el directorio de inicio del usuario.
$ hypertag set_hypertagfs_dir path/to/directory
pyproject.toml
)~/.config/hypertag/hypertag.db
)~/.config/hypertag/web_pages
para sitios web, otras en ~/.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
¿Cuál es el sentido de la existencia de HyperTag?
HyperTag ofrece muchas características únicas, como funciones de importación, búsqueda semántica, gráficos y coincidencias aproximadas, que lo hacen muy cómodo de usar. Todo mientras la base de código de HyperTag se mantiene relativamente pequeña en <2000 LOC en comparación con proyectos similares como TMSU (>10,000 LOC en Go) y SuperTag (>25,000 LOC en Rust), lo que facilita la piratería.
Alternativas de búsqueda semántica