Es handelt sich um eine Flask-App zum Lesen und Durchsuchen von Notizen aus einer persönlichen Wissensdatenbank. Unter Wissensdatenbank versteht man hier eine Sammlung von Jupyter-Notizbüchern mit Markdown-Zellen, die Tags und Links zueinander enthalten können. Der Ansatz ähnelt also dem Zettelkasten.
Zu den Funktionen des Suchsystems gehören:
Das Repository kann entweder als Ganzes (mit von mir verfassten Notizen) oder als Python-Paket verwendet werden, das eine Schnittstelle zu Ihren Notizen bietet.
Der wertvollste Teil dieses Projekts ist keine Software. Es sind die Notizen selbst. Beim Schreiben versuche ich, komplizierte Sachverhalte so zu erklären, dass ein effizientes Erfassen mit möglichst wenig Unklarheiten möglich ist. Ich schreibe hauptsächlich über maschinelles Lernen, aber es kommen auch neue Themen. Leider gibt es einen potenziellen Dealbreaker – derzeit sind die Notizen nur auf Russisch. Wenn es Ihnen nicht zusagt, fahren Sie bitte mit dem nächsten Abschnitt fort.
Zunächst müssen Sie das Repository auf Ihren lokalen Computer klonen und readingbricks
-Paket installieren. Dies kann durch Ausführen der folgenden Befehle von einem Terminal aus erfolgen:
cd /your/path/
git clone https://github.com/Nikolay-Lysenko/readingbricks
cd readingbricks
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -e .
Führen Sie jedes Mal, wenn Sie eine Flask-Anwendung starten möchten, die folgenden Befehle aus:
cd /your/path/readingbricks
source venv/bin/activate
python -m readingbricks
Der letzte Befehl startet einen lokalen Server. Sobald es fertig ist, öffnen Sie Ihren Webbrowser und gehen Sie zu 127.0.0.1:5000
. Weitere Einzelheiten finden Sie im Schnittstellenleitfaden.
Um die eigene Wissensdatenbank mit der App kompatibel zu machen, muss diese wie folgt dargestellt werden:
notes_directory
├── field_one
│ ├── notebook_one.ipynb
│ ├── ...
│ └── notebook_n.ipynb
├── ...
└── field_k
├── notebook_one.ipynb
├── ...
└── notebook_m.ipynb
Hier stehen Felder für unabhängige Bereiche (z. B. maschinelles Lernen, Chemie, Musiktheorie usw.). Innerhalb eines bestimmten Bereichs kann die Verteilung von Notizen auf Jupyter-Notizbücher beliebig sein. Beispielsweise können Sie alle Notizen einfach in einem einzigen Notizbuch aufbewahren.
Alle Zellen eines Notizbuchs müssen Markdown-Zellen sein, die mit ## {title}
beginnen. Um eine Notiz mit Tags zu versehen, aktivieren Sie die Tagging-Funktionen über „Ansicht -> Zellensymbolleiste -> Tags“. Um einen Link von einer Notiz zu einer anderen Notiz hinzuzufügen, können die speziellen Muster __root_url__/{field}/notes/{note_title}
und __home_url__/notes/{note_title}
verwendet werden. Während Letzteres weniger ausführlich ist, unterstützt nur Ersteres feldübergreifende Links.
So weit, ist es gut. Die Wissensdatenbank ist fertig, aber die App muss für die Verwendung konfiguriert werden. Erstellen Sie irgendwo eine JSON-Datei, die so aussieht:
{
"LANGUAGE" : " en " ,
"FIELDS" : [ " field_one " , " field_two " ],
"FIELD_TO_ALIAS" : { "field_one" : " Field #1 " , "field_two" : " Field #2 " },
"FIELD_TO_SEARCH_PROMPT" : { "field_one" : " the_most_popular_tag " , "field_two" : " the_most_popular_tag " },
"NOTES_DIR" : " /absolute/path/to/notes_directory " ,
"RESOURCES_DIR" : " /any/directory/for/storing/internal/files "
}
Lassen Sie uns nun das Python-Paket installieren:
source /your/path/venv/bin/activate
pip install readingbricks
Jetzt müssen Sie nur noch die App starten:
python -m readingbricks -c /absolute/path/to/config.json
Gehen Sie wie im vorherigen Abschnitt zu 127.0.0.1:5000
.
Die Weboberfläche ist recht selbsterklärend.
Das einzige nicht triviale Steuerelement ist die Suchleiste, die sich auf den Startseiten der Felder befindet. Es kann in drei Modi betrieben werden:
transformers in recommender systems
);tags:
ist erforderlich (z. B. tags: transformers AND recommender_systems
);tags:
bilden eine Abfrage in natürlicher Sprache und Symbole danach bilden einen Tag-Ausdruck (z. B. transformers tags: recommender_systems
).Wenn zumindest ein Teil einer Abfrage in natürlicher Sprache erfolgt, werden die Ergebnisse nach TF-IDF sortiert. Ansonsten hängt die Reihenfolge der Ergebnisse von den lexikografischen Positionen ihrer Notizbücher innerhalb ihres Feldverzeichnisses und von den Positionen der Zellen innerhalb der Notizbücher ab.
Viel Spaß beim Lesen!