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
PyTorch Implementation of VAENAR-TTS: Variational Auto-Encoder based Non-AutoRegressive Text-to-Speech Synthesis.

VAENAR-TTS - PyTorch Implementation PyTorch Implementation of VAENAR-TTS: Variational Auto-Encoder based Non-AutoRegressive Text-to-Speech Synthesis.

Keon Lee 67 Nov 14, 2022
FB ID CLONER WUTHOT CHECKPOINT, FACEBOOK ID CLONE FROM FILE

* MY SOCIAL MEDIA : Programming And Memes Want to contact Mr. Error ? CONTACT : [ema

Mr. Error 9 Jun 17, 2021
KR-FinBert And KR-FinBert-SC

KR-FinBert & KR-FinBert-SC Much progress has been made in the NLP (Natural Language Processing) field, with numerous studies showing that domain adapt

5 Jul 29, 2022
PRAnCER is a web platform that enables the rapid annotation of medical terms within clinical notes.

PRAnCER (Platform enabling Rapid Annotation for Clinical Entity Recognition) is a web platform that enables the rapid annotation of medical terms within clinical notes. A user can highlight spans of

Sontag Lab 39 Nov 14, 2022
Malaya-Speech is a Speech-Toolkit library for bahasa Malaysia, powered by Deep Learning Tensorflow.

Malaya-Speech is a Speech-Toolkit library for bahasa Malaysia, powered by Deep Learning Tensorflow. Documentation Proper documentation is available at

HUSEIN ZOLKEPLI 151 Jan 05, 2023
Fully featured implementation of Routing Transformer

Routing Transformer A fully featured implementation of Routing Transformer. The paper proposes using k-means to route similar queries / keys into the

Phil Wang 246 Jan 02, 2023
DeLighT: Very Deep and Light-Weight Transformers

DeLighT: Very Deep and Light-weight Transformers This repository contains the source code of our work on building efficient sequence models: DeFINE (I

Sachin Mehta 440 Dec 18, 2022
RuCLIP tiny (Russian Contrastive Language–Image Pretraining) is a neural network trained to work with different pairs (images, texts).

RuCLIPtiny Zero-shot image classification model for Russian language RuCLIP tiny (Russian Contrastive Language–Image Pretraining) is a neural network

Shahmatov Arseniy 26 Sep 20, 2022
CodeBERT: A Pre-Trained Model for Programming and Natural Languages.

CodeBERT This repo provides the code for reproducing the experiments in CodeBERT: A Pre-Trained Model for Programming and Natural Languages. CodeBERT

Microsoft 1k Jan 03, 2023
Some embedding layer implementation using ivy library

ivy-manual-embeddings Some embedding layer implementation using ivy library. Just for fun. It is based on NYCTaxiFare dataset from kaggle (cut down to

Ishtiaq Hussain 2 Feb 10, 2022
100+ Chinese Word Vectors 上百种预训练中文词向量

Chinese Word Vectors 中文词向量 中文 This project provides 100+ Chinese Word Vectors (embeddings) trained with different representations (dense and sparse),

embedding 10.4k Jan 09, 2023
A Practitioner's Guide to Natural Language Processing

Learn how to process, classify, cluster, summarize, understand syntax, semantics and sentiment of text data with the power of Python! This repository contains code and datasets used in my book, Text

Dipanjan (DJ) Sarkar 1.5k Jan 03, 2023
Code to use Augmented Shapiro Wilks Stopping, as well as code for the paper "Statistically Signifigant Stopping of Neural Network Training"

This codebase is being actively maintained, please create and issue if you have issues using it Basics All data files are included under losses and ea

Justin Terry 32 Nov 09, 2021
[EMNLP 2021] Mirror-BERT: Converting Pretrained Language Models to universal text encoders without labels.

[EMNLP 2021] Mirror-BERT: Converting Pretrained Language Models to universal text encoders without labels.

Cambridge Language Technology Lab 61 Dec 10, 2022
Sequence model architectures from scratch in PyTorch

This repository implements a variety of sequence model architectures from scratch in PyTorch. Effort has been put to make the code well structured so that it can serve as learning material. The train

Brando Koch 11 Mar 28, 2022
A repo for materials relating to the tutorial of CS-332 NLP

CS-332-NLP A repo for materials relating to the tutorial of CS-332 NLP Contents Tutorial 1: Introduction Corpus Regular expression Tokenization Tutori

Alok singh 9 Feb 15, 2022
Write Python in Urdu - اردو میں کوڈ لکھیں

UrduPython Write simple Python in Urdu. How to Use Write Urdu code in سامپل۔پے The mappings are as following: "۔": ".", "،":

Saad A. Bazaz 26 Nov 27, 2022
Kinky furry assitant based on GPT2

KinkyFurs-V0 Kinky furry assistant based on GPT2 How to run python3 V0.py then, open web browser and go to localhost:8080 Requirements: Flask trans

Sparki 1 Jun 11, 2022
Fixes mojibake and other glitches in Unicode text, after the fact.

ftfy: fixes text for you print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง Full documentation: https://ftfy.readthedocs.org Testimonials “My life is li

Luminoso Technologies, Inc. 3.4k Dec 29, 2022
Production First and Production Ready End-to-End Keyword Spotting Toolkit

Production First and Production Ready End-to-End Keyword Spotting Toolkit

223 Jan 02, 2023