Espial is an engine for automated organization and discovery of personal knowledge

Overview

logo

Live Demo (currently not running, on it)

Espial is an engine for automated organization and discovery in knowledge bases. It can be adapted to run with any knowledge base software, but currently works best with file-based knowledge bases.

Espial uses Natural Language Processing and AI to improve the way you find new links in your knowledge, enhancing the organization of your thoughts to help you discover new ones.

From the explanatory blog post:

Espial can cultivate a form of intended serendipity by suggesting a link between your thoughts instead of simply reminding you of a pathway you had already created. It aims to make discovery and the act of connection —fundamental to the way we think— more efficient.

It can help you surface domains, ideas, and directions to brainstorm and explore, related to your current note-taking activity

See Architecture for a more technical overview of Espial's algorithm.

demo gif

Espial's current features:

  • automated graph: Espial generates a graph of auto-detected concepts and maps how they link to your different documents. This maps both the meaning of your documents into a visual space and allows you to see how those documents relate to each other with a high-level view.
  • document similarity: you can query for a given document in your knowledge base and get most related and relevant notes that you could link / relate to it, and through which concepts. This similarity is on a semantic level (on meaning), not on the words used.
  • external search: Espial has a semantic search engine and I’ve built a web extension that uses it to find items related to the page you’re currently on. You can run submit search queries and webpages to compare them to your knowledge base.
  • transformation of exploration into concrete structure: when you view the tags and concepts that the program has surfaced, you can pick those you want to become part of your knowledge base’s structure. They can then become tags or even concept notes (a note that describes a concept and links to related notes).
  • extensive customizability: Espial can be easily plugged into many different knowledge base software, although it was first built for Archivy. Writing plugins and extensions for other tools is simple.

Future Goals / In Progress Features:

Espial is a nascent project and will be getting many improvements, including:

  • commands to compare and integrate two entire knowledge bases
  • an option to download all the articles referenced in the knowledge base as documents
  • enhance the algorithm so that it learns and detects existing hierarchies in your knowledge
  • coordinate launch of Espial plugins for major knowledge base software
  • improve load time for large KBs

If there are things you want added to Espial, create an issue!

Installation

  • have pip and Python installed
  • Run pip install espial
  • Run python -m spacy download en_core_web_md

Usage

Usage: espial run [OPTIONS] DATA_DIR

Options:
  --rerun         Regenerate existing concept graph
  --port INTEGER  Port to run server on.
  --host TEXT     Host to run server on.
  --help          Show this message and exit.
  • run espial run and then open http://localhost:5002 to access the interface. Warning: if you're running Espial on a low-ram device, lower batch_size in the config (see below).

Configuration

Espial's configuration language is Python. See espial/config.py to see what you can configure. Run espial config to set up your configuration.

If you like the software, consider sponsoring me. I'm a student and the support is really useful. If you use it in your own projects, please credit the original library.

If you have ideas for the project and how to make it better, please open an issue or contact me.

Comments
  • Numpy issue on MacOS 11.2

    Numpy issue on MacOS 11.2

    Running the second python command results in the following error. I was not able to resolve it by myself by downgrading numpy to 1.20.0:

    ~/w/g/espial ❯❯❯ python -m spacy download en_core_web_md                                                                   
    
    Traceback (most recent call last):
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/runpy.py", line 188, in _run_module_as_main
        mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/runpy.py", line 147, in _get_module_details
        return _get_module_details(pkg_main_name, error)
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/runpy.py", line 111, in _get_module_details
        __import__(pkg_name)
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/site-packages/spacy/__init__.py", line 11, in <module>
        from thinc.api import prefer_gpu, require_gpu, require_cpu  # noqa: F401
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/site-packages/thinc/api.py", line 2, in <module>
        from .initializers import normal_init, uniform_init, glorot_uniform_init, zero_init
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/site-packages/thinc/initializers.py", line 4, in <module>
        from .backends import Ops
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/site-packages/thinc/backends/__init__.py", line 8, in <module>
        from .cupy_ops import CupyOps, has_cupy
      File "/Users/dmitry/.pyenv/versions/3.9.4/lib/python3.9/site-packages/thinc/backends/cupy_ops.py", line 19, in <module>
        from .numpy_ops import NumpyOps
      File "thinc/backends/numpy_ops.pyx", line 1, in init thinc.backends.numpy_ops
    ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
    
    ~/w/g/espial ❯❯❯ python -V      
    Python 3.9.4
    
    opened by dmitrym0 5
  • [ImgBot] Optimize images

    [ImgBot] Optimize images

    Beep boop. Your images are optimized!

    Your image file size has been reduced by 12% 🎉

    Details

    | File | Before | After | Percent reduction | |:--|:--|:--|:--| | /espial/static/logo.png | 5.46kb | 2.74kb | 49.78% | | /espial/static/Group 2.png | 1.57kb | 1.06kb | 32.15% | | /img/espial.gif | 7,685.72kb | 6,797.04kb | 11.56% | | /espial/static/logo.svg | 0.86kb | 0.85kb | 1.58% | | | | | | | Total : | 7,693.61kb | 6,801.69kb | 11.59% |


    📝 docs | :octocat: repo | 🙋🏾 issues | 🏪 marketplace

    ~Imgbot - Part of Optimole family

    opened by imgbot[bot] 0
  • Need an Effective Document Display

    Need an Effective Document Display

    We should be able to click on a node and see the document in an in-browser render. We should also highlight specific words or content that links to other things. Like a document with a ton of clickable highlighted areas. It would also help to have a synopsis of the document, its links, and the key concepts and their links.

    opened by mmangione 0
  • Filtering of Nodes by Feature or Connection

    Filtering of Nodes by Feature or Connection

    We need to be able to filter out some of the nodes. This means we should have a search box or toolbar that can search, sort, and filter by word, concept, type of connection, type of word, etc...

    I think this might be similar to a faceted ElasticSearch filter.

    opened by mmangione 0
  • Can't download en_core_web_lg with latest version of spaCy (3.3.0.dev0)

    Can't download en_core_web_lg with latest version of spaCy (3.3.0.dev0)

    With the current version of spaCy (3.3.0.dev0), downloading en_core_web_md did not work:

    $ python3 -m spacy download en_core_web_md
    
    ✘ No compatible packages found for v3.3 of spaCy
    

    It worked after downgrading to 3.2.0

    opened by didmar 0
Releases(v0.2.1)
  • v0.2.1(Mar 9, 2022)

    Espial just got an update! This is mostly maintenance and crucial bug fixing, although more exciting stuff should be coming to Espial core soon. This release comes with the launch of archivy-espial, an Espial integration for Archivy, allowing you to automatically find related notes and documents for your current note, directly inside your knowledge base.

    Highlights

    • addition of a get_potential_concepts route to determine the tags that could suit a given query
    • addition of a ALLOWED_ORIGINS config parameter to set the websites that can fetch info from Espial
    • fixed bug when a query returns no results
    • fixed implementation bug when files are moved / renamed and
    Source code(tar.gz)
    Source code(zip)
Owner
Uzay-G
Active developer building stuff with Ruby, Crystal and Python | Google Code-in 2019 Grand Prize Winner | Creator @archivy
Uzay-G
lightweight, fast and robust columnar dataframe for data analytics with online update

streamdf Streamdf is a lightweight data frame library built on top of the dictionary of numpy array, developed for Kaggle's time-series code competiti

23 May 19, 2022
This project consists of data analysis and data visualization (done using python)of all IPL seasons from 2008 to 2019 and answering the most asked questions about the IPL.

IPL-data-analysis This project consists of data analysis and data visualization of all IPL seasons from 2008 to 2019 and answering the most asked ques

Sivateja A T 2 Feb 08, 2022
Test finetuning of XLSR (multilingual wav2vec 2.0) for other speech classification tasks

wav2vec_finetune Test finetuning of XLSR (multilingual wav2vec 2.0) for other speech classification tasks Initial test: gender recognition on this dat

8 Aug 11, 2022
SentimentArcs: a large ensemble of dozens of sentiment analysis models to analyze emotion in text over time

SentimentArcs - Emotion in Text An end-to-end pipeline based on Jupyter notebooks to detect, extract, process and anlayze emotion over time in text. E

jon_chun 14 Dec 19, 2022
Code for the Findings of NAACL 2022(Long Paper): AdapterBias: Parameter-efficient Token-dependent Representation Shift for Adapters in NLP Tasks

AdapterBias: Parameter-efficient Token-dependent Representation Shift for Adapters in NLP Tasks arXiv link: upcoming To be published in Findings of NA

Allen 16 Nov 12, 2022
Official PyTorch implementation of Time-aware Large Kernel (TaLK) Convolutions (ICML 2020)

Time-aware Large Kernel (TaLK) Convolutions (Lioutas et al., 2020) This repository contains the source code, pre-trained models, as well as instructio

Vasileios Lioutas 28 Dec 07, 2022
Code for EmBERT, a transformer model for embodied, language-guided visual task completion.

Code for EmBERT, a transformer model for embodied, language-guided visual task completion.

41 Jan 03, 2023
This repository implements a brute-force spellchecker utilizing the Damerau-Levenshtein edit distance.

About spellchecker.py Implementing a highly-accurate, brute-force, and dynamically programmed spellchecking program that utilizes the Damerau-Levensht

Raihan Ahmed 1 Dec 11, 2021
Neural network models for joint POS tagging and dependency parsing (CoNLL 2017-2018)

Neural Network Models for Joint POS Tagging and Dependency Parsing Implementations of joint models for POS tagging and dependency parsing, as describe

Dat Quoc Nguyen 152 Sep 02, 2022
A simple Speech Emotion Recognition (SER) API created using Flask and running in a Docker container.

keyword_searching Steps to use this Python scripts: (1)Paste this script into the file folder containing the PDF files you need to search from; (2)Thi

2 Nov 11, 2022
The Easy-to-use Dialogue Response Selection Toolkit for Researchers

The Easy-to-use Dialogue Response Selection Toolkit for Researchers

GMFTBY 32 Nov 13, 2022
Simple Annotated implementation of GPT-NeoX in PyTorch

Simple Annotated implementation of GPT-NeoX in PyTorch This is a simpler implementation of GPT-NeoX in PyTorch. We have taken out several optimization

labml.ai 101 Dec 03, 2022
Behavioral Testing of Clinical NLP Models

Behavioral Testing of Clinical NLP Models This repository contains code for testing the behavior of clinical prediction models based on patient letter

Betty van Aken 2 Sep 20, 2022
Turn clang-tidy warnings and fixes to comments in your pull request

clang-tidy pull request comments A GitHub Action to post clang-tidy warnings and suggestions as review comments on your pull request. What platisd/cla

Dimitris Platis 30 Dec 13, 2022
novel deep learning research works with PaddlePaddle

Research 发布基于飞桨的前沿研究工作,包括CV、NLP、KG、STDM等领域的顶会论文和比赛冠军模型。 目录 计算机视觉(Computer Vision) 自然语言处理(Natrual Language Processing) 知识图谱(Knowledge Graph) 时空数据挖掘(Spa

1.5k Jan 03, 2023
Code for the Python code smells video on the ArjanCodes channel.

7 Python code smells This repository contains the code for the Python code smells video on the ArjanCodes channel (watch the video here). The example

55 Dec 29, 2022
text to speech toolkit. 好用的中文语音合成工具箱,包含语音编码器、语音合成器、声码器和可视化模块。

ttskit Text To Speech Toolkit: 语音合成工具箱。 安装 pip install -U ttskit 注意 可能需另外安装的依赖包:torch,版本要求torch=1.6.0,=1.7.1,根据自己的实际环境安装合适cuda或cpu版本的torch。 ttskit的

KDD 483 Jan 04, 2023
Cải thiện Elasticsearch trong bài toán semantic search sử dụng phương pháp Sentence Embeddings

Cải thiện Elasticsearch trong bài toán semantic search sử dụng phương pháp Sentence Embeddings Trong bài viết này mình sẽ sử dụng pretrain model SimCS

Vo Van Phuc 18 Nov 25, 2022
Winner system (DAMO-NLP) of SemEval 2022 MultiCoNER shared task over 10 out of 13 tracks.

KB-NER: a Knowledge-based System for Multilingual Complex Named Entity Recognition The code is for the winner system (DAMO-NLP) of SemEval 2022 MultiC

116 Dec 27, 2022
ZUNIT - Toward Zero-Shot Unsupervised Image-to-Image Translation

ZUNIT Dependencies you can install all the dependencies by pip install -r requirements.txt Datasets Download CUB dataset. Unzip the birds.zip at ./da

Chen Yuanqi 9 Jun 24, 2022