Es una aplicación Flask para leer y buscar notas desde una base de conocimientos personal. Aquí, base de conocimientos significa una colección de cuadernos de Jupyter con celdas de Markdown que pueden tener etiquetas y contener enlaces entre sí. Así pues, el enfoque se parece al de Zettelkasten.
Las características del sistema de búsqueda incluyen:
El repositorio se puede utilizar como un todo (con notas escritas por mí) o como un paquete de Python que proporciona una interfaz para sus notas.
La parte más valiosa de este proyecto no es el software. Son las notas mismas. Al escribirlos, trato de explicar cosas complicadas de una manera que permita una comprensión eficiente con la menor ambigüedad posible. Escribo principalmente sobre aprendizaje automático, pero están surgiendo nuevos temas. Por desgracia, existe un posible factor decisivo: por ahora, las notas están únicamente en ruso. Si no le conviene, pase a la siguiente sección.
Para empezar, necesita clonar el repositorio en su máquina local e instalar el paquete readingbricks
. Esto se puede hacer ejecutando los siguientes comandos desde una terminal:
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 .
Cada vez que desee iniciar una aplicación Flask, ejecute estos comandos:
cd /your/path/readingbricks
source venv/bin/activate
python -m readingbricks
El último comando inicia un servidor local. Una vez que esté listo, abra su navegador web y vaya a 127.0.0.1:5000
. Consulte la guía de interfaz para obtener más detalles.
Para que su propia base de conocimientos sea compatible con la aplicación, debe representarse de la siguiente manera:
notes_directory
├── field_one
│ ├── notebook_one.ipynb
│ ├── ...
│ └── notebook_n.ipynb
├── ...
└── field_k
├── notebook_one.ipynb
├── ...
└── notebook_m.ipynb
Aquí, los campos representan dominios independientes (por ejemplo, aprendizaje automático, química, teoría musical, etc.). Dentro de un campo particular, la distribución de notas entre los cuadernos de Jupyter puede ser arbitraria. Por ejemplo, puedes simplemente guardar todas las notas en un solo cuaderno.
Todas las celdas de un cuaderno deben ser celdas Markdown que comiencen con ## {title}
. Para etiquetar una nota, active las funciones de etiquetado con 'Ver -> Barra de herramientas de celda -> Etiquetas'. Para agregar un enlace de una nota a otra, se pueden usar los patrones especiales __root_url__/{field}/notes/{note_title}
y __home_url__/notes/{note_title}
. Si bien este último es menos detallado, solo el primero admite enlaces entre campos.
Hasta ahora, todo bien. La base de conocimientos está lista, pero la aplicación debe estar configurada para usarla. Cree un archivo JSON en algún lugar que se vea así:
{
"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 "
}
Ahora, instalemos el paquete Python:
source /your/path/venv/bin/activate
pip install readingbricks
Todo lo que queda es iniciar la aplicación:
python -m readingbricks -c /absolute/path/to/config.json
Como en la sección anterior, vaya a 127.0.0.1:5000
.
La interfaz web se explica por sí misma.
El único elemento de control no trivial es la barra de búsqueda que se encuentra en las páginas de inicio de los campos. Puede funcionar en tres modos:
transformers in recommender systems
);tags:
de palabras clave especiales (por ejemplo tags: transformers AND recommender_systems
);tags:
forman una consulta en lenguaje natural y los símbolos después forman una expresión de etiqueta (p. ej., transformers tags: recommender_systems
).Si al menos parte de una consulta está en lenguaje natural, los resultados se ordenan por TF-IDF. De lo contrario, el orden de los resultados depende de las posiciones lexicográficas de sus cuadernos dentro de su directorio de campo y de las posiciones de las celdas dentro de los cuadernos.
¡Disfruta leyendo!