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
Kerberoast with ACL abuse capabilities

targetedKerberoast targetedKerberoast is a Python script that can, like many others (e.g. GetUserSPNs.py), print "kerberoast" hashes for user accounts

Shutdown 213 Dec 22, 2022
NLP and Text Generation Experiments in TensorFlow 2.x / 1.x

Code has been run on Google Colab, thanks Google for providing computational resources Contents Natural Language Processing(自然语言处理) Text Classificati

1.5k Nov 14, 2022
MASS: Masked Sequence to Sequence Pre-training for Language Generation

MASS: Masked Sequence to Sequence Pre-training for Language Generation

Microsoft 1.1k Dec 17, 2022
The code for the Subformer, from the EMNLP 2021 Findings paper: "Subformer: Exploring Weight Sharing for Parameter Efficiency in Generative Transformers", by Machel Reid, Edison Marrese-Taylor, and Yutaka Matsuo

Subformer This repository contains the code for the Subformer. To help overcome this we propose the Subformer, allowing us to retain performance while

Machel Reid 10 Dec 27, 2022
GCRC: A Gaokao Chinese Reading Comprehension dataset for interpretable Evaluation

GCRC GCRC: A New Challenging MRC Dataset from Gaokao Chinese for Explainable Eva

Yunxiao Zhao 5 Nov 04, 2022
This is Assignment1 code for the Web Data Processing System.

This is a Python program to Entity Linking by processing WARC files. We recognize entities from web pages and link them to a Knowledge Base(Wikidata).

3 Dec 04, 2022
Official source for spanish Language Models and resources made @ BSC-TEMU within the "Plan de las Tecnologías del Lenguaje" (Plan-TL).

Spanish Language Models 💃🏻 A repository part of the MarIA project. Corpora 📃 Corpora Number of documents Number of tokens Size (GB) BNE 201,080,084

Plan de Tecnologías del Lenguaje - Gobierno de España 203 Dec 20, 2022
Pretrained language model and its related optimization techniques developed by Huawei Noah's Ark Lab.

Pretrained Language Model This repository provides the latest pretrained language models and its related optimization techniques developed by Huawei N

HUAWEI Noah's Ark Lab 2.6k Jan 08, 2023
Source code for CsiNet and CRNet using Fully Connected Layer-Shared feedback architecture.

FCS-applications Source code for CsiNet and CRNet using the Fully Connected Layer-Shared feedback architecture. Introduction This repository contains

Boyuan Zhang 4 Oct 07, 2022
Labelling platform for text using distant supervision

With DataQA, you can label unstructured text documents using rule-based distant supervision.

245 Aug 05, 2022
The source code of "Language Models are Few-shot Multilingual Learners" (MRL @ EMNLP 2021)

Language Models are Few-shot Multilingual Learners Paper This is the source code of the paper [Arxiv] [ACL Anthology]: This code has been written usin

Genta Indra Winata 45 Nov 21, 2022
Code from the paper "High-Performance Brain-to-Text Communication via Handwriting"

Code from the paper "High-Performance Brain-to-Text Communication via Handwriting"

Francis R. Willett 305 Dec 22, 2022
Graph Coloring - Weighted Vertex Coloring Problem

Graph Coloring - Weighted Vertex Coloring Problem This project proposes several local searches and an MCTS algorithm for the weighted vertex coloring

Cyril 1 Jul 08, 2022
A Python package implementing a new model for text classification with visualization tools for Explainable AI :octocat:

A Python package implementing a new model for text classification with visualization tools for Explainable AI 🍣 Online live demos: http://tworld.io/s

Sergio Burdisso 285 Jan 02, 2023
Use AutoModelForSeq2SeqLM in Huggingface Transformers to train COMET

Training COMET using seq2seq setting Use AutoModelForSeq2SeqLM in Huggingface Transformers to train COMET. The codes are modified from run_summarizati

tqfang 9 Dec 17, 2022
Extract Keywords from sentence or Replace keywords in sentences.

FlashText This module can be used to replace keywords in sentences or extract keywords from sentences. It is based on the FlashText algorithm. Install

Vikash Singh 5.3k Jan 01, 2023
Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speech Recognition

SEW (Squeezed and Efficient Wav2vec) The repo contains the code of the paper "Performance-Efficiency Trade-offs in Unsupervised Pre-training for Speec

ASAPP Research 67 Dec 01, 2022
REST API for sentence tokenization and embedding using Multilingual Universal Sentence Encoder.

What is MUSE? MUSE stands for Multilingual Universal Sentence Encoder - multilingual extension (16 languages) of Universal Sentence Encoder (USE). MUS

Dani El-Ayyass 47 Sep 05, 2022
🌐 Translation microservice powered by AI

Dot Translate 🌐 A microservice for quick and local translation using A.I. This service starts a local webserver used for neural machine translation.

Dot HQ 48 Nov 22, 2022
Pipeline for fast building text classification TF-IDF + LogReg baselines.

Text Classification Baseline Pipeline for fast building text classification TF-IDF + LogReg baselines. Usage Instead of writing custom code for specif

Dani El-Ayyass 57 Dec 07, 2022