É um aplicativo Flask para leitura e pesquisa de notas de uma base de conhecimento pessoal. Aqui, base de conhecimento significa uma coleção de notebooks Jupyter com células Markdown que podem ter tags e conter links entre si. Portanto, a abordagem se assemelha a Zettelkasten.
Os recursos do sistema de pesquisa incluem:
O repositório pode ser usado como um todo (com notas escritas por mim) ou como um pacote Python fornecendo uma interface para suas notas.
A parte mais valiosa deste projeto não é um software. São as próprias notas. Ao escrevê-los, tento explicar coisas complicadas de uma forma que permita uma compreensão eficiente com o mínimo de ambiguidade possível. Escrevo principalmente sobre aprendizado de máquina, mas novos tópicos estão surgindo. Infelizmente, existe um potencial obstáculo – a partir de agora, as notas estão apenas em russo. Se não for adequado para você, vá para a próxima seção.
Para começar, você precisa clonar o repositório em sua máquina local e instalar o pacote readingbricks
. Isso pode ser feito executando os comandos abaixo em um 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 você quiser iniciar um aplicativo Flask, execute estes comandos:
cd /your/path/readingbricks
source venv/bin/activate
python -m readingbricks
O último comando inicia um servidor local. Depois de pronto, abra seu navegador e vá para 127.0.0.1:5000
. Consulte o guia da interface para obter mais detalhes.
Para tornar sua própria base de conhecimento compatível com o aplicativo, ela deve ser representada da seguinte forma:
notes_directory
├── field_one
│ ├── notebook_one.ipynb
│ ├── ...
│ └── notebook_n.ipynb
├── ...
└── field_k
├── notebook_one.ipynb
├── ...
└── notebook_m.ipynb
Aqui, campos representam domínios independentes (digamos, aprendizado de máquina, química, teoria musical, etc.). Dentro de um campo específico, a distribuição de notas entre os notebooks Jupyter pode ser arbitrária. Por exemplo, você pode simplesmente manter todas as anotações em um único caderno.
Todas as células de um notebook devem ser células Markdown começando com ## {title}
. Para marcar uma nota, ative os recursos de marcação com 'Exibir -> Barra de ferramentas da célula -> Tags'. Para adicionar link de uma nota para outra nota, os padrões especiais __root_url__/{field}/notes/{note_title}
e __home_url__/notes/{note_title}
podem ser usados. Embora o último seja menos detalhado, apenas o primeiro oferece suporte a links entre campos.
Até agora tudo bem. A base de conhecimento está pronta, mas o aplicativo deve estar configurado para usá-la. Crie um arquivo JSON em algum lugar parecido com este:
{
"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 "
}
Agora, vamos instalar o pacote Python:
source /your/path/venv/bin/activate
pip install readingbricks
Só falta iniciar o aplicativo:
python -m readingbricks -c /absolute/path/to/config.json
Como na seção anterior, vá para 127.0.0.1:5000
.
A interface web é bastante autoexplicativa.
O único elemento de controle não trivial é a barra de pesquisa localizada nas páginas iniciais dos campos. Pode operar em três modos:
transformers in recommender systems
);tags:
é obrigatório (por exemplo, tags: transformers AND recommender_systems
);tags:
formam a consulta em linguagem natural e os símbolos depois dela formam a expressão da tag (por exemplo, transformers tags: recommender_systems
).Se pelo menos parte de uma consulta estiver em linguagem natural, os resultados serão classificados pelo TF-IDF. Caso contrário, a ordem dos resultados depende das posições lexicográficas de seus cadernos dentro do diretório de campo e das posições das células dentro dos cadernos.
Aproveite a leitura!