يقدم HyperTag نظام علامات معبرًا ومحرك بحث دلاليًا قويًا لجميع ملفاتك. قم بتمثيل طريقة تفكيرك باستخدام العلامات. اعثر على ما تبحث عنه باستخدام البحث الدلالي عن مستنداتك النصية (نعم، حتى ملفات PDF) والصور. بدلاً من تقديم تنسيقات ملفات خاصة مثل أدوات تنظيم الملفات الموجودة الأخرى، يقوم HyperTag بوضع طبقات فوق ملفاتك الموجودة بسلاسة دون أي ضجة.
الهدف : تقليل الوقت بين التفكير والوصول إلى جميع الملفات ذات الصلة.
جدول المحتويات
متاح على باي بي آي
$ pip install hypertag
(يدعم كلاً من وحدة المعالجة المركزية فقط والتنفيذ المسرع لـ CUDA!)
تواصل معي عبر تويتر @SeanPedersen96
يقدم HyperTag واجهة سطر الأوامر (CLI) الرائعة ولكن الأهم من ذلك أنه يقوم بإنشاء دليل يسمى HyperTagFS
وهو تمثيل قائم على نظام الملفات لملفاتك وعلاماتك باستخدام روابط وأدلة رمزية.
HyperTag WebApp (تجريبي) : عميل HTML+JS رائع. قم بتصور ملفاتك الشخصية وهيكلتها والبحث فيها في ثوانٍ مدعومة بمحرك HyperTag.
استيراد الدليل : قم باستيراد التسلسلات الهرمية للدليل الموجود لديك باستخدام $ hypertag import path/to/directory
. يقوم HyperTag بتحويلها تلقائيًا إلى تسلسل هرمي للعلامات باستخدام العلامات الوصفية.
البحث الدلالي عن النصوص والصور (تجريبي) : ابحث عن محتوى الصور (jpg وpng) والمستندات النصية (نعم، حتى ملفات PDF) باستخدام استعلام نصي بسيط. يتم تشغيل البحث عن النص بواسطة مكتبة Sentence Transformers الرائعة. يتم تشغيل البحث عن النص إلى صورة بواسطة نموذج CLIP الخاص بـ OpenAI. حاليًا يتم دعم الاستعلامات باللغة الإنجليزية فقط.
HyperTag Daemon (تجريبي) : يراقب HyperTagFS
والأدلة المضافة إلى قائمة الاستيراد التلقائي لتغييرات المستخدم (راجع القسم "بدء تشغيل HyperTag Daemon" أدناه). يؤدي أيضًا إلى ظهور خدمة DaemonService التي تعمل على تسريع البحث الدلالي بشكل كبير (تحذير: عملية البرنامج الخفي عبارة عن خنزير RAM مع استخدام يصل إلى 2 جيجابايت).
استعلامات المطابقة الغامضة : يستخدم HyperTag المطابقة الغامضة لتقليل الاحتكاك في حالة حدوث خطأ مطبعي غير محتمل.
مجموعات أنواع الملفات : يقوم HyperTag تلقائيًا بإنشاء مجلدات تحتوي على ملفات شائعة (مثل الصور: jpg، png، وما إلى ذلك، المستندات: txt، pdf، وما إلى ذلك، كود المصدر: py، js، وما إلى ذلك)، والتي يمكن العثور عليها في HyperTagFS
.
HyperTag Graph : احصل بسرعة على نظرة عامة على HyperTag Graph الخاص بك! يقوم HyperTag بتصور الرسم البياني للعلامة الوصفية عند كل تغيير ويحفظه في HyperTagFS/hypertag-graph.pdf
.
Spawn HTTP server لعميل الويب HyperTag الذي يعمل على المضيف المحلي:23236
$ python3 -m hypertag.webapi
قم باستيراد الملفات ذات العلامات المستنتجة من التسلسل الهرمي للدليل الموجود.
$ hypertag import path/to/directory
$ hypertag add path/to/file https://github.com/SeanPedersen/HyperTag
وضع علامة على الملفات يدويًا. الاختصار: $ hypertag t
$ hypertag tag humans/*.txt with human "Homo Sapiens"
إضافة قيمة إلى علامة الملف:
$ hypertag tag sean.txt with name="Sean Pedersen"
قم بإزالة العلامة/العلامات يدويًا من الملف/الملفات.
$ hypertag untag humans/*.txt with human "Homo Sapiens"
علامة/علامات التعريف لإنشاء تسلسلات هرمية للعلامات. الاختصار: $ hypertag tt
$ hypertag metatag human with animal
دمج جميع الارتباطات (الملفات والعلامات) للعلامة أ في العلامة ب.
$ hypertag merge human into "Homo Sapiens"
طباعة أسماء الملفات للمجموعة الناتجة المطابقة للاستعلام. تتكون الاستعلامات من علامات (مع قيم) ومعاملات. تتم مطابقة العلامات بشكل غامض للراحة. التداخل غير مدعوم حاليًا، ويتم تقييم الاستعلامات من اليسار إلى اليمين.
الاختصار: $ hypertag q
استعلام بقيمة باستخدام حرف بدل: $ hypertag query name="Sean*"
مسارات الطباعة: $ hypertag query human --path
طباعة العلامة المتطابقة الغامضة: $ hypertag query man --verbose
تعطيل المطابقة الغامضة: $ hypertag query human --fuzzy=0
المعامل الافتراضي هو AND (التقاطع):
$ hypertag query human name="Sean*"
يعادل $ hypertag query human and name="Sean*"
أو (الاتحاد):
$ hypertag query human or "Homo Sapiens"
ناقص (الفرق):
$ hypertag query human minus "Homo Sapiens"
يمكن البحث في الملفات المفهرسة فقط.
$ hypertag index
لتحليل ملفات PDF غير القابلة للتحليل، قم بتثبيت tesseract: # pacman -S tesseract tesseract-data-eng
فهرسة ملفات الصور فقط: $ hypertag index --image
فهرسة الملفات النصية فقط: $ hypertag index --text
خوارزمية بحث مخصصة تجمع بين البحث الدلالي ومطابقة الرمز المميز. طباعة أسماء الملفات النصية مرتبة حسب النتيجة المطابقة. يستفيد الأداء بشكل كبير من تشغيل البرنامج الخفي HyperTag.
الاختصار: $ hypertag s
$ hypertag search "your important text query" --path --score --top_k=10
طباعة أسماء ملفات الصور مرتبة حسب النتيجة المطابقة. يستفيد الأداء بشكل كبير من تشغيل البرنامج الخفي HyperTag.
الاختصار: $ hypertag si
نص إلى صورة: $ hypertag search_image "your image content description" --path --score --top_k=10
صورة إلى صورة: $ hypertag search_image "path/to/image.jpg" --path --score --top_k=10
ابدأ عملية البرنامج الخفي بوظيفة ثلاثية:
HyperTagFS
لتغييرات المستخدمSearch Images
أو Search Texts
: يفسر الاسم كاستعلام بحث دلالي (أضف top_k=42 للحد من حجم النتيجة) ويملأه تلقائيًا بالنتائج $ hypertag daemon
$ hypertag tags filename1 filename2
$ hypertag metatags tag1 tag2
$ hypertag show
أسماء الطباعة: $ hypertag show files
مسارات الطباعة: $ hypertag show files --path
تصور التسلسل الهرمي للرسم البياني للعلامة الوصفية (المحفوظ في جذر HyperTagFS).
$ hypertag graph
تحديد خوارزمية التخطيط (الافتراضي: fruchterman_reingold):
$ hypertag graph --layout=kamada_kawai
قم بإنشاء تمثيل قائم على نظام الملفات لملفاتك وعلاماتك باستخدام الروابط والأدلة الرمزية.
$ hypertag mount
ستتم مراقبة الدلائل المضافة إلى قائمة الاستيراد التلقائي بواسطة البرنامج الخفي بحثًا عن الملفات الجديدة أو التغييرات.
$ hypertag add_auto_import_dir path/to/directory
الافتراضي هو الدليل الرئيسي للمستخدم.
$ hypertag set_hypertagfs_dir path/to/directory
pyproject.toml
)~/.config/hypertag/hypertag.db
)~/.config/hypertag/web_pages
لمواقع الويب، والبعض الآخر في ~/.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
ما هو الهدف من وجود HyperTag؟
يقدم HyperTag العديد من الميزات الفريدة مثل وظائف الاستيراد والبحث الدلالي والرسوم البيانية والمطابقة الغامضة التي تجعله مناسبًا جدًا للاستخدام. كل ذلك بينما تظل قاعدة أكواد HyperTag صغيرة نسبيًا عند أقل من 2000 LOC مقارنة بالمشاريع المماثلة مثل TMSU (> 10000 LOC في Go) وSuperTag (> 25000 LOC في Rust)، مما يجعل من السهل اختراقها.
بدائل البحث الدلالي