There is no centralised list of open-source code that would be useful for documenting, conserving, developing, preserving, or working with endangered languages. According to some estimates, half of the 7,000~ currently spoken languages are expected to become extinct this century (Wikipedia). However, there is a lot of work by academics, independant scholars, organizations, communities, and individuals which goes towards stopping or slowing this trend. This list is intended to provide a central location to document those efforts.
Please submit pull requests if you know of any resource available that is not on this list, either on Github or not, either code or otherwise. To edit this list, simply click here. If you would like to discuss anything at all related to this, please open an issue.
Endangered languages are human languages that are in danger of extinction. This list also encompasses minority languages - languages which are spoken by a stable, but small, population (for example, Maltese or Hawai'ian); and low- or under-resourced languages, which are spoken by a significant population but under-represented on the web (for instance, Quechua). These languages share certain characteristics in common; the most pertinent is sparse data and a lack of resources, ranging from spell-checkers to grammars to machine translation corpora. Other under-resourced languages that do not fall under this list include constructed languages (for instance, Klingon or Na'vi), computer languages (for instance, Javascript or Lua), and extinct languages that are so sparse as to be rendered computationally irrelevant for most purposes (for instance, Tocharian).
Open Source "promotes a universal access via a free license to a product's design or blueprint, and universal redistribution of that design or blueprint, including subsequent improvements to it by anyone." (Wiki). This is important because money and resources allocated towards a language or project that are not open source is spent at the expense of possible extensibility elsewhere.
Looking for resources for code languages? Take a look at the awesome collection of other awesome lists.
- accentuate.us a.k.a. "charlifter". Statistical Unicodification of plain text for many languages
- AGTK AGTK is a suite of software components for building tools for annotating linguistic signals, time-series data which documents any kind of linguistic behavior (e.g. audio, video). The internal data structures are based on annotation graphs.
- ANNIS Search and Visualization in Multilayer Linguistic Corpora
- Apertium Apertium is a toolbox to build open-source shallow-transfer machine translation systems, especially suitable for related language pairs: it includes the engine, maintenance tools, and open linguistic data for several language pairs.
- bayesline A Multinomial Bayesian Classification for Language Identification
- CBOLD Comparative Bantu OnLine Dictionary
- charlint Charlint is a character normalization/checking tool written in Perl. Among else, it implements Normalization Form C of Unicode TR 15, as a test platform for Early Uniform Normalization in the W3C Character Model.
- cdec Decoder, aligner, and model optimizer for statistical machine translation and other structured prediction models based on (mostly) context-free formalisms http://cdec-decoder.org/
- clld The
clld
python package is a toolkit to build cross-linguistic databases. A list of databases built with it is available at http://clld.org/datasets.html - CTK Built around LDC's champollion sentence aligner kernel, Champollion Tool Kit (CTK) aims to providing ready-to-use parallel text sentence alignment tools for as many language pairs as possible.
- CuPED CuPED ('Customizable Presentation of ELAN Documents') is a tool for transforming time-aligned transcripts, such as those produced by ELAN, into a variety of presentation formats.
- dative A single-page application that interacts with multiple linguistic fieldwork web service databases.
- Desmeme Database and tools for exploring linguistic templates
- dictdb dictionary database for language translation
- DictionaryChromeExtension Dictionary for websites in low-resource languages. App and codebase which connects to a Wiktionary to provide definitions of any term on any website (current languages Cherokee 194,426 entries, Inuktitut 251 entries, Kartuli 7,363 entries, Plains Cree (incubation) 0 entries)
- DLTK Deutsch Language Tool Kit http://goo.gl/wdnz1W
- ELAN ELAN is a professional tool for the creation of complex annotations on video and audio resources.
- ELDER: Endangered Language Data Electronic Repository Endangered Language Data Electronic Repository: A web-based ontologically-compliant collaborative linguistic data cataloguing tool.
- EMMA A Novel Evaluation Metric for Morphological Analysis
- Gaia Gaia is a HTML5-based Phone UI for the Boot 2 Gecko Project. NOTE: For details of what branches are used for what releases, see https://wiki.mozilla.org/B2G. If you're interested in setting up a keyboard in new language, see this.
- Glottolog data Glottolog provides comprehensive reference information for the world's languages. The data published in Glottolog is curated in https://github.com/clld/glottolog-data
- graf-python The library graf-python is an open source Python implemenation to parse and write GrAF/XML files as described in ISO 24612. The parser of the library creates an annotation graph from the files. The user may then query the annotation graph via the API of graf-python.
- Gramadóir Grammar checking engine that is designed for the rapid development of grammar checkers for minority languages and other languages with limited computational resources.
- https://github.com/hyphenliu/cnminlangwebcollect Chinese minorities website languages detection and websites collection
- https://github.com/leebock/languages Application files for the Smithsonian endangered languages story map.
- itweets-geodata Geodata from Indigenous Tweets
- koreksyon Tools for developing and implementing spell-checking and grammar-checking capabilities in low-resource languages
- l20n.js L20n reinvents software localization. Users should be able to benefit from the entire expressive power of natural languages. L20n keeps simple things simple, and at the same time makes complex things possible. This is the JavaScript implementation of L20n. http://l20n.org
- langtech A host of resources provided in SVN by the University of Tromsø. Details are here.
- LDC Word Aligner LDC Word Aligner is a software tool used for manual annotation of word alignment developed to support Arabic-English and Chinese-English word alignment tasks. It has a clean, easy-to-use interface. Since its development in 2009, LDC has used LDC Word Aligner to generate over 1,000,000 tokens of annotated word alignment data from a variety of genres including broadcast, newswire and web-based sources.
- LEGO Unified Concepticon Material relating to the LEGO Unified Concepticon
- Lex4All pronunciation LEXicons for Any Low-resource Language http://lex4all.github.io/lex4all/
- LinGO Grammar Matrix The LinGO Grammar Matrix is a framework for the development of broad-coverage, precision, implemented grammars for diverse languages.
- Lingpy LingPy: Python library for quantitative tasks in historical linguistics http://lingpy.org
- Linguistica Linguistica is a program designed to explore the unsupervised learning of natural language, with primary focus on morphology (word-structure). It runs under Windows, Mac OS X and Linux, and is written in C++ within the Qt development framework. Its demands on memory depend on the size of the corpus analyzed.
- lrl For work concerning low resource languages.
- Make-extensions Scripts for generating hunspell spellchecking extensions
- Minority Translate Minority Translate is a simple program for helping content generation on smaller sized Wikipedias (actually any sized) by giving pointers to existing articles in other language Wikipedias, so that the user can easily translate or adapt existing texts and thus increase the size and useability of their Wikipedia editions.
- moz-l10n-tiers Creates a pseudo-locale to evaluate string prioritization for l10n
- Natural Javascript general natural language facilities for node
- nishanimate Facilitating Nishnaabe-language acquisition via animation video produced by the natural language processing of audio-accompanied text.
- NIST 2008 Open Machine Translation Evalutation
- nlpanimate Facilitating indigenous-language acquisition via animation video produced by the natural language processing of audio-accompanied text.
- NLTK Python Natural Language Tool Kit. NLTK Source http://nltk.github.com/
- node-panlex node.js client for PanLex
- ogoki iPhone & iPad template source code (as a .zip) for language learning
- old-webapp Online Linguistic Database --- software for creating web applications to collaboratively document languages.http://www.onlinelinguisticdatabase.org
- OpenDataKit Open Data Kit (ODK) is an open-source suite of tools that helps organizations author, field, and manage mobile data collection solutions
- panlex-tools This package contains scripts to transform lexical resources into a format suitable for importing into PanLex. Documentation may be found at http://dev.panlex.org/tools/
- pepper Pepper is a pluggable, Java-based, open source converter framework for linguistic data.
- poio-analyzer Poio is a collection of software tools for linguists working in language documentation, descriptive linguistics and/or language typology. It allows linguists to manage and analyze their data. The Poio Interlinear Editor allows to add morpho-syntactic annotations to transcriptions. It supports various file formats for input, but will only output standardized XML defined by the Corpus Encoding Standard and the Text Encoding Initiative. Several tools for analyzing linguistic data will be made available to further process annotated data. Poio tools are written in Python and are based on PyQt.
- poio-api Poio API is a free and open source Python library to access and search data from language documentation in your linguistic analysis workflow. It converts file formats like Elan’s EAF, Toolbox files, Typecraft XML and others into annotation graphs as defined in ISO 24612. Those graphs, for which we use an implementation called “Graph Annotation F… http://media.cidles.eu/poio/poio-api
- poio-corpus The Poio Corpus is a freely available collection of language resources for the lesser-used languages. The data is extracted from free sources like Wikipedia, dictionaries, documents, websites and others.
- poio-doc Documentation of the Poio project.http://www.poio.eu
- poio-site The website of the Poio project - http://www.poio.eu
- pressagio Pressagio is a library that predicts text based on n-gram models. For example, you can send a string and the library will return the most likely word completions for the last token in the string.
- pyannotation PyAnnotation is a Python Library to access and manipulate linguistically annotated corpus files.
- pyDelphin Python libraries for DELPH-IN (Friendly Fork)
- Rosetta Pangloss The Rosetta Project's Pangloss system
- Salt A graph-based model to store and manipulate linguistic data.
- Secwepemc-Facebook Translate Facebook into unsupported languages
- SeedLing Building and Using A Seed Corpus for the Human Language Project
- Skype in your language Translate Skype into unsupported languages
- SPHERE Conversion Tools Many LDC corpora contain speech files in NIST SPHERE format. The programs below convert SPHERE files to other formats.
- Stanford CoreNLP Python Python wrapper for Stanford CoreNLP tools
- sugali This is a legacy repository of the language identification project for many (many) languages project for the software project course, NLP projects for low-resource languages.
- SuGarLike Language Identification for Low Resource Languages (by Susanne, Guy and Liling)
- TeraDict Translate English words into hundreds of languages!
- TexNLP TexNLP: Texas Natural Language Processing tools
- Toney Tone Classification Software
- Toolbox Scripts for ELAN Mirror of Alexander Koenig's Toolbox Scripts https://tla.mpi.nl/tools/tla-tools/elan/thirdparty/
- Tsammalex data Tsammalex is a multilingual lexical database on plants and animals. The data published on the Tsammalex website is curated collaboratively at https://github.com/clld/tsammalex-data
- tweet2learn An app to make it easier to use your native language on Twitter
- Unicodify Unicodify is a suite of programs for converting text in a variety of 8-bit encodings to Unicode (using the UTF-16 encoding). Unicodify was particularly designed to handle HTML-based text using non-ISCII 8-bit fonts to render South Asian scripts. However, elements of the suite can map other types of non-ASCII 8-bit encodings, such as Latin-2, ISCII and PASCII.
- UniversalDependencies docs Universal Dependencies online documentation http://universaldependencies.github.io/docs/
- UniversalDependencies tools Various utilities for processing the data.
- wavesurfer.js Navigable waveform built on Web Audio and Canvas http://www.wavesurfer.fm (Also has an ELAN plugin)
- WordBoundary An experiment in the detection and segmentation of word boundaries
- wordbyword WordByWord is a free, open source, easy-to-use multimedia vocabulary trainer developed by Vera Ferreira, Peter Bouda, and Ricardo Filipe at CIDLeS with the support of the Foundation for Endangered Languages.
- WSI4URLang Word Sense Induction (WSI) for Under-resourced Languages (URLang) http://www.mohammadnasiruddin.eu/under-resourced-language-urlang.html
- XLTK eXtensible Language ToolKit
- XTrans Trans is a next generation multi-platform, multilingual, multi-channel transcription tool that supports manual transcription and annotation of audio recordings. The XTrans toolkit provides new and efficient solutions to common transcription challenges and addresses critical gaps in existing tools.Designed with input from experienced human transcribers working with real world data, XTrans provides a flexible and intuitive graphical user interface for a multitude of speech annotation tasks including (virtual) segmentation of audio into smaller units like turns and sentences; speaker identification; orthographic transcription in any language; and labeling of structural elements of the transcript like topics.
- Polyglot.js Give your JavaScript the ability to speak many languages.
- Transifex - System for providing a nice,
userfriendly/project oriented approach to translating
.po
files. Great for non-technical users, free for open-source projects, decent for minority languages; however, it can take a while to get a new language added to the Transifex system because the ticketing system Transifex uses results in them losing tickets sometimes. Provides translation memory, ability to appoint reviewers, etc. Transifex used to have an open source system that you could host on your own, but that seems to have disappeared.
- Common Language Resources and Technology Infrastructure Norway / Clarino - One of their projects (not clearly listed here) is about providing an online system for language analysis, so users can connect resources visually, dump in text, and get a result. Kind of like the Yahoo! Pipes but for language processing. Uses the ABEL cluster.
- Aikuma Android software for recording and translation http://lp20.org/aikuma
- AndroidFieldLinguisticsDatabase Open Source Android App that allows field linguists to elicit, record, transcribe data and convert to LaTeX.
- Bevara Android Phone Application designed for Linguistic Fieldwork to help preserve, maintain, and save endangered languages
- ojoVoz A mobile app for sending georeferenced image and voice recordings from an Adroid phone to an email address. For more information, please go to http://sautiyawakulima.net/ojovoz
- Gargantua Fast Unsupervised Sentence Aligner described in "Improved unsupervised sentence alignment for symmetrical and asymmetrical parallel corpora", COLING 2010.
- ldc-kiy Materials for: The experimental state of mind in elicitation: illustrations from tonal fieldwork. Dubmitted to Language Documentation & Conservation, How to study a tone language.
- Learning to map into a Univerisal POS tagset Yuan Zhang, Roi Reichart, Regina Barzilay and Amir Globerson
- low-resource-pos-tagging-2013 and low-resource-pos-tagging-2013 Published in: Learning a Part-of-Speech Tagger from Two Hours of Annotation. Dan Garrette and Jason Baldridge. In Proceedings of NAACL 2013. And in: Real-World Semi-Supervised Learning of POS-Taggers for Low-Resource Languages. Dan Garrette, Jason Mielens, and Jason Baldridge. In Proceedings of ACL 2013.
- orthotree Linguistic family tree based on orthographic distance
- type-supervised-tagging-2012emnlp This repository contains the code, scripts, and instructions needed to reproduce the results in the paper: Type-Supervised Hidden Markov Models for Part-of-Speech Tagging with Incomplete Tag Dictionaries. Dan Garrette and Jason Baldridge. In Proceedings of EMNLP 2012. This code is frozen as of the version used to obtain the results in the paper. It will not be maintained. To see the updated code, visit nlp
- visualizing-language For visualizations of WALS and other typological databases
- WALS-APiCS Code for working with WALS-APiCS (Atlas of Pidgin and Creole Language Structures) complexity metrics
###Amharic
- HornMorpho - morphological analysis and generation of Amharic and Oromo verbs and nouns and Tigrinya verbs
###Arabic
- Buckwalter A small python script that transliterates Arabic text using the Buckwalter Transliteration Scheme. It allows for multiple decisions to be made around whether or not to include all types of diacritics and characters or ignore them. Useful for NLP experiments where you may want to normalize text.
###Bengali
- Lekho A collection of tools and resources for using bangla on computers
- Bangla-অঙ্কুর for Mac This project aims to develop a phonetic based Bangla typing system for Macintosh computer which can be developed into a transliteration technique in the future.
- Ekushey Bangla Computing and Localization Project for the Bangla speaking people.
- Bengali Writer `Bengali Writer' is a set of utilities for computerized editing and typesetting in Bengali, a language of India and Bangladesh. It comprises a set of fonts for Bengali in several formats (METAFONT, BDF, PS), a text editor with spell-cheking, export, and more.
###Chichewa
- Chichewa NLP resources for Chichewa
###Guarani
- ParaMorfo - morphological analysis and generation of Spanish and Guarani verbs, nouns, and adjectives
###Høgnorsk
- hunspell-hn_NO A beginning to a spellchecking tool for Høgnorsk, a conservative variant of Norwegian Nynorsk, based on a set of corpuses.
###Irish
- caighdean Code for standardizing Irish language text
- fleiscin Irish hyphenation patterns for TeX http://borel.slu.edu/fleiscin/
- aimsigh Source for the now-defunct aimsigh.com Irish search engine
- tesseract-gle-uncial OCR for old Irish fonts
- GaelSpell Sources for an Irish language spell checker
- morphological analyzer & syntactic disambiguator Elaine Uí Dhonnchadha has produced a morphology in XFST/FOMA, which now seems to be hosted by [Giellatekno]. Includes syntax written in VISL Constraint Grammar.
###Kinyarwanda
- kin-morph-fst Kinyarwanda morphological analyzer
- TurboTagger & TurboParser for Kinyarwanda (download) TurboTagger & TurboParser for Kinyarwanda
###Korean
- komoran Korean morphological analyzer
###Lingala
- Lingala NLP NLP tools and resources for Lingala
###Malagasy
- Global Voices Malagasy Project This page provides a link to a corpus of parallel news articles in Malagasy and English from the Global Voices project. This corpus was collected and aligned at the sentence level by Victor Chahuneau.
###Minderico
- fredericajordarzambarino A web based game for mobile devices in minderico based in the "Who Wants to be a Millionaire" TV show.
- mindericobot
###Oromo
- hornmorpho - morphological analysis and generation of amharic and oromo verbs and nouns and tigrinya verbs
###Pomo
- PomoDictionary This language app is part of a project to archive and make available materials on the Northern Pomo language, collected over 25 years.
###Quechua
- Morphology, spellchecker - XFST and FOMA, plus OpenOffice plugin.
- AntiMorfo - morphological analysis and generation of Quechua nouns, adjectives, and verbs and Spanish verbs
###Sámi (Saami)
- Divvun Sámi proofing tools. This links to the documentation page, which explains how to access the svn repository.
- Giellatekno A host of Sámi tools.
- Mobile keyboards (iOS and Android), learning apps, dictionaries, morphologies, syntax disambiguators, some amount of project collaboration with Apertium on shallow translation between Saami languages, and
- Oahpa! - A learning portal for Saami languages. Includes WordPress based, media rich lesson-based learning, and morphological and syntactic exercizes generated from the morphological and syntactic tools
- Gïelese - A media learning application for South Saami, including images, sound and animation for learning basic phrases and core vocabulary. JavaScript application, playable on the web or via PhoneGap apps in Android or iOS.
- Neahttadigisánit - A morphologically sensitive dictionary, with modes for 'social media input' (which allows users to type a 'relaxed' version of the orthography (acdnstz will be recognized also as áčđŋšŧz̄), and also includes a JavaScript bookmarklet to offer click-to-read dictionary lookup functionality. Also available for other Uralic, and non-Uralic languages.
Giellatekno does a lot for other minority Uralic languages. Following are some keywords for CTRL+F friendliness:
- Saami languages: North Saami, Lule Saami, South Saami // Inari Saami, Kildin Saami, Pite Saami, Skolt Saami.
- Other Uralic languages: Erzya, Finnish, Hill Mari, Ingrian, Khanty, Kven, Komi, Livonian, Meadow Mari, Moksha, Nenets, Nganasan, Olonetsian, Udmurt, Veps.
- Other languages: Buriat, Cornish, Faroese, Greenlandic, Iñupiaq, Northern Haida, Ojibwe, Plains Cree, Russian.
###Scottish Gaelic
- hunspell-gd Files for building Scottish Gaelic spell checkers
###Secwepemctsín
- secwepemctsnem A project to help people learn Secwepemctsín.
###Somali
- somorph Somali morphological and syntactic analyzers and generators built on XFST and VISL-CG Constraint Grammar. Up to date version checked in in Giellatekno's repository.
- qaamuus.so morphologically aware dictionary based on lexical resources found online, and the somali morphology.
###Tigrinya
- HornMorpho - morphological analysis and generation of Amharic and Oromo verbs and nouns and Tigrinya verbs
###Zulu
- Ukwabelana An open-source morphological Zulu corpus
- قلب is a simple, Scheme-like programming language that you code entirely in Arabic. It is an exploration of the impact of human culture on computer science, the role of tradition in software engineering, and the connection between natural and computer languages.
- The Language Archive Part of the MPI
- Noto Fonts Beautiful and free fonts for all languages. Noto is Google’s font family that aims to support all the world’s languages. Its design goal is to achieve visual harmonization across languages. Noto fonts are under Apache License 2.0.