Giter Club home page Giter Club logo

language's Introduction

hexagram30/language

A syntagmata and Markov chain language, word, and name generator for use in hexagram30 narratives

There are two branches of code maintained for this project. You will find usage examples in each repo, specific to the language and tooling for the given branch:

language's People

Contributors

oubiwann avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

digideskio

language's Issues

Epic: Convert to a full service with API

This epic is composed of the following:

  • Add language component - #8
  • Add language and name generator support to language component - #18
  • Update all library calls to use the db instead of reading from the filesystem - #23
  • Create a REST API for the language app - #22
  • Update CLI to use the new REST service #16
  • Add CLJS CLI to circumvent long JVM startup times #25

Name the HexagramMUSH World

  • Come up with a name (use the planned feature in #42)
  • Create a new namespace for this world's languages
  • Start adding languages (see #41)
  • Add corpora for new languages (see #39)
  • Update the CLI to support generating content for this world's languages (see #44)

Re-work the plumbing around generator implementations

Syntagmata* and Markov* (and common-impl) require access to the running system state right now; unfortunately, when they are created, only a partial system state is known. A new abstraction is needed such that with every function call, the latest running system is passed.

This may mean reverting the current API to its pre-component form, and then creating a component-aware, wrapper API for it.

Add language component

Tasks:

  • Create component
    • Add markov and syntagmata generators to :lang map
    • Add db connection to :lang map (using the plugin)
  • Define API for accessing data via db (instead of filesystem reads)
    • BLOCKER: Re-work the plumbing around generator implementations #28
    • Generating assembled content
    • Generating random content
    • Generating names
    • Reading stats
  • Add appropriate LangDB schema keys to redis plugin
  • Update the lein aliases to use the new language component
  • Update CLI tools to use the new language component

Update copora to support Northern tribes

Corpora names and wordlists need to be updated for many of the languages that will be use for the Northern tribes (see issue #41).

This will require language corpora for the following:

  • Lakota
  • Inuit
  • Finnish
  • Dwarvish
  • Old Norse
  • Elf
  • Mongolian
  • Tibetan
  • Maori
  • Hawai'ian

And it will require name corpora for the following:

  • Amerindian
  • Inuit
  • Finnish
  • Dwarf
  • Old Norse
  • Quenya
  • Mongolian
  • Tibetan
  • Maori
  • Hawai'ian

Add dictionary component

Component creation and ingest:

  • Create component namespace
  • Setup docker for RedisSearch
  • Create RedisSearch connection function(s)
  • Define a plain text, human readable format
  • Create functions that convert plain text dictionary files to the format(s) needed by RedisSearch for ingest
  • Upon startup, the dictionary component should read all dictionary files, index them, and load them into RedisSearch

Post-ingest, programmatic access:

  • Create defrecord for language, word, part of speech, definition
  • Map db entries to record instances
  • Create component-based API for querying db (as well as updates)
  • Add support for full-text search - #26
  • Add an API call for searching dictionary entries - #27

For part of speech, standardize on what is used in OpenNLP (see https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html)

Create names for the Northern tribes and lands

HexagramMUSH-Default-World-Northern-Plains

Things to name:

  • Create a language group for this area: Óðantu
  • Define languages for each major area
  • The glacial area
  • The tribes of the glacial area
  • The arboreal forests between the plains and the glaciers
  • The tribes of the arboreal forests
  • The rivers in the arboreal forest and plains areas
  • The plains between the coastal areas and the arboreal forests
  • The tribes of the plains
  • The western coast area
  • The tribes of the western coast
  • The western ocean
  • The southern coast area
  • The tribes of the southern coast
  • The southern ocean
  • The eastern hills
  • The tribes of the eastern hills
  • The eastern bay
  • The tribes of the eastern bay
  • The islands to the south
  • The tribes of the islands

Make vowels and consonant files set-based

Right now they are just concatenated strings. This will require some changes to the internal operations ... might need to convert some of the regex operations to set-theoretic operations....

Devise data structure (AST) for the parsed results of user-supplied commands

This is an interesting problem to solve, and one where I suspect the first iteration will be quite naïve. I suspect:

  1. The verb will be the root node of the tree
  2. Objects in the world will support protocols (a la Java interfaces), and thus will be able to say whether they support the given action indicated by the verb
  3. Deeper structure will only be revealed through experimentation

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.