{"id":17061105,"url":"https://github.com/chalcolith/enochian","last_synced_at":"2026-03-18T23:16:52.576Z","repository":{"id":70778877,"uuid":"77312527","full_name":"chalcolith/enochian","owner":"chalcolith","description":"Tools for decipherment.","archived":false,"fork":false,"pushed_at":"2023-07-06T01:06:07.000Z","size":5322,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-03T20:49:52.760Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Roff","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chalcolith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-12-25T05:45:55.000Z","updated_at":"2024-09-18T03:20:32.000Z","dependencies_parsed_at":"2023-07-14T08:31:54.898Z","dependency_job_id":null,"html_url":"https://github.com/chalcolith/enochian","commit_stats":null,"previous_names":["chalcolith/enochian"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chalcolith/enochian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chalcolith%2Fenochian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chalcolith%2Fenochian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chalcolith%2Fenochian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chalcolith%2Fenochian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chalcolith","download_url":"https://codeload.github.com/chalcolith/enochian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chalcolith%2Fenochian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29443475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T10:51:12.367Z","status":"ssl_error","status_checked_at":"2026-02-14T10:50:52.088Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T10:46:05.762Z","updated_at":"2026-02-14T12:33:34.605Z","avatar_url":"https://github.com/chalcolith.png","language":"Roff","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Enochian\n\nThis project provides some tools to do exploratory phonological comparisons\nbetween texts in unknown languages and entries one or more lexicons.\n\nYou may see the results of a recent test run of the software for the Voynich Manuscript\n[here](http://chalcolith.github.io/enochian).\n\n## Introduction\n\nThe initial goal is to investigate whether a particular theory of a possible\nphonological interpretation of the script in the Voynich manuscript can be used\nto find possible lexical matches in various machine-readable lexicons.\n\n[Stephen Bax](https://stephenbax.net/?page_id=11) in 2014 proposed some\nphonological values for various Voynich characters, based on identifications of\nplant and star names in some of the illustrated pages. [Derek\nVogt](https://www.youtube.com/channel/UC-sW5dOlDxxu0EgdNn2pMaQ/videos) has\nelaborated on this work and proposed a more extensive phonological scheme. In\naddition, he has analyzed the phonological inventory of the scheme and proposed\nthat the language of the Voynich manuscript is based on some variety of Romani.\n\nAt present, the Enochian software tool can take arbitrary lines from the\n[Reed-Landini-Stolfi\nInterlinear](http://www.ic.unicamp.br/~stolfi/voynich/98-12-28-interln16e6/)\ntranscription of the Voynich manuscript, encode each word as a sequence of\nvectors in phonological feature space, and then search the\n[RomLex](http://romani.uni-graz.at/romlex/) lexicon of Romani and the\n[Shabda-Sagara Sanskrit\ndictionary](http://www.sanskrit-lexicon.uni-koeln.de/scans/csldoc/dictionaries/shs.html),\nusing dynamic time warping to look for for the closest phonological sequence\nmatches.\n\nYou can see a sample of this kind of flow in the\n[voynich.json](https://github.com/chalcolith/enochian/blob/master/samples/voynich.json)\nflow configuration. This flow reads the RomLex lexicon and the specified lines\nof the Voynich transcription and produces an HTML file containing a report on\nthe possible phonological matches.\n\n### Status\n\nCurrent results are inconclusive. Possible matches for words meaning \"sun\",\n\"moon\", \"house\", and \"sky\" appear on the first page of the Voynich manuscript,\nwhich are suggestive of references to astrological content, but much more work\nneeds to be done.\n\nYou may see the results of a recent test run of the software for the Voynich Manuscript\n[here](http://chalcolith.github.io/enochian/index.html).\n\n### Roadmap\n\nThe RomLex lexicon has fewer than 30,000 entries, many of which are duplicates,\ndue to the lexicon containing data from multiple Romani dialects. This means it\ndoes not provide very conclusive results on its own.\n\nThe Shabda-Sagara dictionary also has fewer than 30,000 entries.\n\n\n## General Functionality\n\nAt the most general level, the Enochian library provides a system for\nconfiguring and running \"flows\" of arbitrary data transformations. This is\nimplemented by the\n[Flow](https://github.com/chalcolith/enochian/blob/master/source/Enochian/Flow/Flow.cs)\nclass, which contains a\n[FlowContainer](https://github.com/chalcolith/enochian/blob/master/source/Enochian/Flow/FlowContainer.cs)\nwhich can have a number of\n[FlowStep](https://github.com/chalcolith/enochian/blob/master/source/Enochian/Flow/FlowStep.cs)\nobjects (which can themselves be containers).\n\nWhen you iterate over the enumerable returned by `FlowStep.GetOutputs()`, each\nstep will grab an output from its previous sibling and call its `Process()`\nmethod on it, returning the resulting output. If you implement only\n`FlowStep.Process()`, or if you implement `FlowStep.GetOutputs()` using `yield\nreturn`, the flow process will be asynchronous; it will only process as many\nitems as are needed to return one output.\n\n\n## Linguistic Resources\n\nIn order to do phonological analysis, the Enochian library provides a way to\nspecify a phonological feature set (see\n[features.json](https://github.com/chalcolith/enochian/blob/master/resources/encodings/features.json)\nfor an example using a pretty standard set of phonological features). The\n[FeatureSet](https://github.com/chalcolith/enochian/blob/master/source/Enochian/Text/FeatureSet.cs)\nclass is used to load and use these feature sets.\n\nYou can also define text \"encodings\". These take input strings in Unicode and\nproduce sequences of vectors in the multi-dimensional space defined by the\nphonological feature set. A single phonological segment consists of an\n`N`-dimensional vector, where `N` is the number of features in your feature set.\nIf a particular feature has a `+` value for that segment, its corresponding\nvector element will be `1`; if it has a `-` value, its vector element will be\n`-`. If the feature is unspecified, its vector element will be `0`.\n\n\n## Lexicons\n\nThe systems includes several lexicons:\n\n### CMU Pronouncing Dictionary\n\nThis is used for testing the underlying assumption behind the project, that we\ncan find slightly dissimilar phonological sequences in a lexicon by means of\ndynamic time warping. The\n[english_test.json](https://github.com/chalcolith/enochian/blob/master/samples/english_test.json)\ncontains a sample flow that compares a defective encoding of English text with\nthe CMU dictionary to produce matches for English words. Running this flow\ndemonstrates that the process is capable of finding many such valid matches.\n\n### RomLex\n\nThis is a dictionary of words in various Romani dialects. The database is only\navailable via the web, so there is a project `RomlexScraper` that scrapes the\nweb interface to assemble a complete version of the lexicon.\n\n### Shabda-Sagara\n\nThis is a 19th-century dictionary of classical Sanskrit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchalcolith%2Fenochian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchalcolith%2Fenochian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchalcolith%2Fenochian/lists"}