Not so deep text reader inspired by BORIS, written in Kotlin

Overview

Barnable Reader Prototype

Deep text reader library that generates a semantic model from a short input text. At the moment it is very primitive and is in no way a "deep" reader yet.

The project is focused on learning more about the "BORIS" and "Understanding Editorial Text" systems, which were developed during the 1980s. For example see: https://apps.dtic.mil/dtic/tr/fulltext/u2/a098965.pdf

The library is written in the Kotlin language, and the intention is to generate native and Java libraries, in time.

Running

Currently, the prototype has very limited capabilities. There is minimal CLI with support for question and answer, however, the primary way that the author has been working with the system is through automated tests to process an input text and generate a resulting model.

Command Line

There is a very simple CLI that supports entering a short text, which will then be processed, with the resulting data structures listed. Simple Who questions can then be asked of the generated model.

At that point questions can be asked, however this is extremely limited at this stage.

Here is an example of using the the CLI:

Welcome to Barnable!
====================

This is a primitive english text reader.

Enter text: john had lunch with george

Ask a who question:
Enter text: who had lunch with george

Answer: John

You will quickly find that this quite brittle.

Automated Tests - Library of input texts

The primary way to drive the system during this early development has been to write automated tests that provide an input tex to be processed. The resulting built memory is then asserted against to ensure that the correct model and elements have been captured.

For example:

fun `Exercise 1 John gave Mary a book`() {
    val textProcessor = runTextProcess("John gave Mary a book", lexicon)

    assertEquals(1, textProcessor.workingMemory.concepts.size)

    val atrans = textProcessor.workingMemory.concepts[0]
    assertEquals(Acts.ATRANS.name, atrans.name)
    assertEquals("John", atrans.value(ActFields.Actor)?.valueName(HumanFields.FirstName))
    assertEquals("book", atrans.value(ActFields.Thing)?.valueName(CoreFields.Name))
    assertEquals("Mary", atrans.value(ActFields.To)?.valueName(HumanFields.FirstName))
    assertEquals("John", atrans.value(ActFields.From)?.valueName(HumanFields.FirstName))
}

Processing

The input text is split up into sentences, and then each sentence is processed.

The words in each sentence are processed from left to right, and are used to build, or lookup, data structures encoding the content. At the end of the sentence some of these data structures will be added to the episodic, or long lived, memory.

Documentation to Add

  • Models/Episodic
  • Model for current sentence
  • Searching for matching/related elements

References

License

Copyright 2020 David G Jones

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You might also like...
📱:newspaper: Android client for the Nextcloud news/feed reader app
📱:newspaper: Android client for the Nextcloud news/feed reader app

Nextcloud News Reader – Android App The Nextcloud News Reader Android App is under AGPLv3 License terms. Bugs and enhancements can be reported under:

📱:newspaper: Android client for the Nextcloud news/feed reader app
📱:newspaper: Android client for the Nextcloud news/feed reader app

Nextcloud News Reader – Android App The Nextcloud News Reader Android App is under AGPLv3 License terms. Bugs and enhancements can be reported under:

Free and open source manga reader for Android.
Free and open source manga reader for Android.

Build Stable Weekly Preview Contribute Support Server Tachiyomi Tachiyomi is a free and open source manga reader for Android 5.0 and above. Features F

Tachiyomi is a free and open source manga reader for Android 6.0 and above.
Web novel reader

NovelDokusha Android web novel reader Features: Two databases to search for web novels (by title or categories) Multiple sources from where to read Re

A manga reader app that can be used save / search / find and read latest manga / manhwa
A manga reader app that can be used save / search / find and read latest manga / manhwa

A manga reader app that can be used save / search / find and read latest manga / manhwa

An Android RSS reader

BinoculaRSS This is an Android RSS reader application. Installation Install Android Studio, clone the project, and open the project. Follow any prompt

HackerNews reader app for Wear OS
HackerNews reader app for Wear OS

HNReader Install by importing to Android Studio, building the apk, and Google the official Android documentation for loading the apps to Wear OS and f

Readow - Readow RSS Reader application. It’s fast and clean, giving you the freedom to enjoy your favorite news
Readow - Readow RSS Reader application. It’s fast and clean, giving you the freedom to enjoy your favorite news

Readow Readow RSS Reader application. It’s fast and clean, giving you the freedo

Owner
David Jones
David Jones
Flym News Reader is a light Android feed reader (RSS/Atom)

BEWARE: Google added some restrictions to news app and I don't see how Flym (and other RSS aggregators) could comply to that. For instance, Flym canno

Frédéric Julian 938 Jan 1, 2023
Flym News Reader is a light Android feed reader (RSS/Atom)

BEWARE: The original developer stopped the development of the app so I'm starting to work on it to improve it and maintain it. Flym News Reader Light

null 0 Jul 26, 2022
Integration of ONNX with Kotlin JS - Deep Learning running in the browser

Integration of ONNX with Kotlin JS - Deep Learning running in the browser

londogard 5 Jul 22, 2022
An educational android app that provides services like notes, online videos and visualization calculator to learn and understand deep concepts of DSA.

Aldo ALDO is a free education app for the young programmers who are desiring to master the concepts of Data Structure and Algorithms. ALDO offers prac

Siddharth Singh 2 Aug 8, 2022
Deep AR android APP (Augmented reality) with face recognition and filters

quickstart-android-java To run the example Go to https://developer.deepar.ai, sign up, create the project and the Android app, copy the license key an

Arjun Kheni 3 Mar 30, 2022
Astronomy Deep Sky Target Finder App for android.

Algorithums and Astronomy Calculator App This is the android app for the algorithm running at athesto.ddns.net the repository for which is at: Algorit

null 1 Jan 6, 2022
This document will walk you through the steps for creating your Android app that runs a deep learning image classification model trained in Pocket AutoML and exported in TensorFlow Lite format

Pocket AutoML: Tutorial for Creating an Android App for Image Classification with Deep Learning Translations English (this document) Русский Overview

Evgeniy Mamchenko 15 Nov 22, 2022
neutriNote: All-in-one preservation of written thoughts, be those text, math (LaTeX), rich markdown, drawings

Official | FAQ | Documentation | Mastodon | XDA neutriNote (Community Edition) What is neutriNote? In a nutshell, all-in-one preservation of written t

AppML 185 Dec 24, 2022
Anxiety free news reader for Android - developed using Kotlin

Android River is a modern Android 2.2 news app. It's now version 1.15. Android River has the following features: Read RSS 1.0, RSS 2.0 and ATOM 1.0. C

Dody Gunawinata 319 Nov 10, 2022
Android News Reader app. Kotlin Coroutines, Retrofit and Realm

News Reader Android News Reader app Code that follows Packt Publishing Kotlin in Practice Video Course Example of Kotlin Coroutine usage, with Realm a

Marko Devcic 22 Oct 3, 2022