Two tools for conlangers
Two tools for conlangers
I have done some Javascript coding recently. The results might be of interest to other conlangers, so I’m posting them here:
The Derivizer.
A simple tool that you can use while building/ expanding your conlang’s lexicon. You can enter (some of) your language’s root words and derivational affixes, and use this script to suggest a few random derivatives and/or compounds, for which you can then try to come up with nice idiomatic meanings. I’ve started writing this tool back in October 2012, and I’ve found it quite useful already. Of course, the exact degree of usefulness depends on the data you enter – I find it works best when you limit the input to a certain domain, e.g. only noun roots from a single semantic field, and only derivational affixes that can be attached to these nouns.
The Frequentizer.
I wanted to do a corpus-based phoneme frequency analysis for one of my conlangs today, but I couldn’t find a suitable online tool for this task in a quick round of googling, so I decided to write one myself. Even in the very first version, it can already (a) provide separate figures for vowels and consonants (and you can even define what counts as a vowel in your conlang), (b) handle user-defined di- and trigraphs correctly by treating them as single segments, and (c) arbitrarily combine different letters into a single phoneme, for instance accented and unaccented vowels. In a future version, the Frequentizer may also be able to assign the same grapheme to different phonemes depending on an orthographically predictable environment, but don’t hold your breath…
I hope these tools will prove useful to some of you. There’s not much documentation for either at this point, but I recommend taking a look at the example data and testing some of the different settings in order to get a feeling for how they work. Have fun!
(Both of these are beta versions, so I can't guarantee that the scripts always work as they should... )
The Derivizer.
A simple tool that you can use while building/ expanding your conlang’s lexicon. You can enter (some of) your language’s root words and derivational affixes, and use this script to suggest a few random derivatives and/or compounds, for which you can then try to come up with nice idiomatic meanings. I’ve started writing this tool back in October 2012, and I’ve found it quite useful already. Of course, the exact degree of usefulness depends on the data you enter – I find it works best when you limit the input to a certain domain, e.g. only noun roots from a single semantic field, and only derivational affixes that can be attached to these nouns.
The Frequentizer.
I wanted to do a corpus-based phoneme frequency analysis for one of my conlangs today, but I couldn’t find a suitable online tool for this task in a quick round of googling, so I decided to write one myself. Even in the very first version, it can already (a) provide separate figures for vowels and consonants (and you can even define what counts as a vowel in your conlang), (b) handle user-defined di- and trigraphs correctly by treating them as single segments, and (c) arbitrarily combine different letters into a single phoneme, for instance accented and unaccented vowels. In a future version, the Frequentizer may also be able to assign the same grapheme to different phonemes depending on an orthographically predictable environment, but don’t hold your breath…
I hope these tools will prove useful to some of you. There’s not much documentation for either at this point, but I recommend taking a look at the example data and testing some of the different settings in order to get a feeling for how they work. Have fun!
(Both of these are beta versions, so I can't guarantee that the scripts always work as they should... )
Blog: audmanh.wordpress.com
Conlangs: Ronc Tyu | Buruya Nzaysa | Doayâu | Tmaśareʔ
Conlangs: Ronc Tyu | Buruya Nzaysa | Doayâu | Tmaśareʔ
Re: Two tools for conlangers
Thanks for posting this, cedh! The frequentizer in particular is something I've been wanting.
-
- mongolian
- Posts: 3920
- Joined: 14 Aug 2010 09:36
- Location: California über alles
Re: Two tools for conlangers
Good job, Cedh!
Is there a special rank for CBBizens who write programs that help with conlanging and conworlding?
Is there a special rank for CBBizens who write programs that help with conlanging and conworlding?
♂♥♂♀
Squirrels chase koi . . . chase squirrels
My Kankonian-English dictionary: 88,000 words and counting
31,416: The number of the conlanging beast!
Squirrels chase koi . . . chase squirrels
My Kankonian-English dictionary: 88,000 words and counting
31,416: The number of the conlanging beast!
Re: Two tools for conlangers
Haha! Awesome!
I recently counted the vowels in my conlang corpus by hand - which was annoying. Great tool. I really appreciate the work.
I recently counted the vowels in my conlang corpus by hand - which was annoying. Great tool. I really appreciate the work.
Re: Two tools for conlangers
There ought to be & I second that for Cedh!Khemehekis wrote:Good job, Cedh!
Is there a special rank for CBBizens who write programs that help with conlanging and conworlding?
- Ossicone
- vice admin
- Posts: 2909
- Joined: 12 Aug 2010 05:20
- Location: I've heard it both ways.
- Contact:
Re: Two tools for conlangers
Always check the General Information and Rules thread.
Pretty much any question can be answered there.
I don't see much point in a special rank specifically for programs.
But I do think it could fall under this category (with some tweaking):
Pretty much any question can be answered there.
I don't see much point in a special rank specifically for programs.
But I do think it could fall under this category (with some tweaking):
However, I will leave that decision up to someone else because I am not a good judge when it comes to this particular topic.Da Infoz wrote:----• METAL
----
----Requirements:
---- ○ Make a significant contribution to the board in the form of something that is subsequently used by the forum, e.g. flag icons, code, ideas that are turned into something concrete on the forum.
Re: Two tools for conlangers
Do we have a Quicksilver or Liquid Metal category?
We ought to,
for the simple recognition of ideas or goodies or code or services
that increase the fluidity and lessen the viscosity of our conlang might.
We ought to,
for the simple recognition of ideas or goodies or code or services
that increase the fluidity and lessen the viscosity of our conlang might.
Re: Two tools for conlangers
Thanks for all the praise!
I have just uploaded a new version of the Frequentizer. There are now separate grapheme fields for consonants and vowels which both work like the old Special Graphemes field. You can also choose what to do with characters that don't appear in those fields. And of course, the most significant change: The tool now has a basic understanding of syllable structure, so it can give separate statistics for onset and coda consonants. By default, it will treat the first consonant of every cluster plus all word-final consonants as belonging to a syllable coda; if you need different rules, you can add a syllable divider character (by default, the MIDDLE DOT ·) to your text corpus in places where the built-in rules do not give the intended syllabification.
I have just uploaded a new version of the Frequentizer. There are now separate grapheme fields for consonants and vowels which both work like the old Special Graphemes field. You can also choose what to do with characters that don't appear in those fields. And of course, the most significant change: The tool now has a basic understanding of syllable structure, so it can give separate statistics for onset and coda consonants. By default, it will treat the first consonant of every cluster plus all word-final consonants as belonging to a syllable coda; if you need different rules, you can add a syllable divider character (by default, the MIDDLE DOT ·) to your text corpus in places where the built-in rules do not give the intended syllabification.
Blog: audmanh.wordpress.com
Conlangs: Ronc Tyu | Buruya Nzaysa | Doayâu | Tmaśareʔ
Conlangs: Ronc Tyu | Buruya Nzaysa | Doayâu | Tmaśareʔ
Re: Two tools for conlangers
I agree that the Frequentizer is especially useful. Well done, cedh!
Երկնէր երկին, երկնէր երկիր, երկնէր և ծովն ծիրանի.
Re: Two tools for conlangers
I was amused somewhat by the frequencies in my limited corpus and I suppose I'll try the frequentizer again six or twelve months from now.
Re: Two tools for conlangers
What would be cool would be a tool that makes sound changes.
I kill threads!
Re: Two tools for conlangers
Have you tried Zompist's Sound Change Applier?Shrdlu wrote:What would be cool would be a tool that makes sound changes.
Re: Two tools for conlangers
Never even heard of it, or knew where I should have looked to find it.
Thank you.
Thank you.
I kill threads!
Re: Two tools for conlangers
I'm actually making a more powerful Scheme-based sound change applier that is more intelligent (i.e. it knows phonetics and can do stuff depending on stress, syllabification, etc) and can do rules as complex as Verner's law ;)
Scheme/Lisp always lives on for AI!
Scheme/Lisp always lives on for AI!
Fluent:
Intermediate:
Intermediate:
Re: Two tools for conlangers
A tool for applying (diachronic) sound changes to etyma is
Phono 4.1 by Lee Hartman.
You can read about it here:
http://mypage.siu.edu/lhartman/phono/ver40.htm
Download the beta version here:
http://mypage.siu.edu/lhartman/phono.html
It has three bundles, one of which are the regular sound changes from Proto-Romance to Spanish, and another...
"laws": not functionally a model, but rather a library of 78 sound-change rules, from Aitken's Law to Winter's Law, and referring to languages from Anglo-Frisian to Winnebago, which can be copied into other models and modified.
I had it years ago, and just cracked the surface.
Phono 4.1 by Lee Hartman.
You can read about it here:
http://mypage.siu.edu/lhartman/phono/ver40.htm
Download the beta version here:
http://mypage.siu.edu/lhartman/phono.html
It has three bundles, one of which are the regular sound changes from Proto-Romance to Spanish, and another...
"laws": not functionally a model, but rather a library of 78 sound-change rules, from Aitken's Law to Winter's Law, and referring to languages from Anglo-Frisian to Winnebago, which can be copied into other models and modified.
I had it years ago, and just cracked the surface.
Re: Two tools for conlangers
Oh cool. Please release!Ithisa wrote:I'm actually making a more powerful Scheme-based sound change applier that is more intelligent (i.e. it knows phonetics and can do stuff depending on stress, syllabification, etc) and can do rules as complex as Verner's law ;)
Scheme/Lisp always lives on for AI!
Re: Two tools for conlangers
After I finish it ;)Fanael wrote:Oh cool. Please release!Ithisa wrote:I'm actually making a more powerful Scheme-based sound change applier that is more intelligent (i.e. it knows phonetics and can do stuff depending on stress, syllabification, etc) and can do rules as complex as Verner's law ;)
Scheme/Lisp always lives on for AI!
TBH sound changes are difficult to describe purely-functionally. I may eventually rewrite everything using mutable strings.
Currently it only supports one-char-per-sound, and only removing or changing sounds, not inserting them. This sucks. However, it does support matching the number of syllables left, the number of syllables before this syllable, regexing what's left of the word, regexing (in reverse) what's passed of the word, regexing what's left of the syllable, and regexing what's passed of the syllable.
It also runs on a pretty verbose domain specific language for describing the sound changes. Which sucks. I should make a GUI (ChickenScheme can do it crossplatformly with wish+tcltk)
Fluent:
Intermediate:
Intermediate:
Re: Two tools for conlangers
Quite the contrary! If I were paid a dollar each time some program requires me to click through a gazillion menus and dialogs and whatever to do something that could be done in a bunch of lines of a DSL, I'd be very rich indeed.Ithisa wrote:It also runs on a pretty verbose domain specific language for describing the sound changes. Which sucks. I should make a GUI (ChickenScheme can do it crossplatformly with wish+tcltk)
Re: Two tools for conlangers
No, it's just that it is so verbose, you probably want to use zompists' SCA2 for anything non-extremely-complex. Hell, I'm even considering making another DSL that compiles to this verbose DSL (don't worry, we learned all about how to write compilers to simpler DSLs using Scheme in CS 146...compilers to stack machines, simple ARM, three-address machine code etc etc ;) )
Anyway do you want to write this:
and the interpreter is still buggy, and each line is equivalent to a few chars in zompist's syntax...
There are a lot of interpreter-code-saving quirks that make the DSL seem written for the interpreter rather than the human. For example, if you want to replace any char in a certain list with nothing, you must define an "nlst" as long as the certain list, and do a mapping form the list you want to replace to the list of NUTHIN's (yess that's the value for "delete the char") otherwise it throws a runtime error.
Anyway do you want to write this:
Code: Select all
(
(macro C [#\p #\t #\c #\q #\b #\d #\g #\m #\n #\l #\r #\h #\s])
(macro V [#\a #\e #\i #\o #\u])
(macro L [#\ā #\ē #\ī #\ō #\ū])
(macro F [#\i #\e])
(macro B [#\o #\u])
(macro S [#\p #\t #\c])
(macro Z [#\b #\d #\g])
(macro NLST [NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN NUTHIN])
(laws
(#\i -> #\j where (in (fix 1) V))
(L -> V where #t)
(#\e -> NUTHIN where (and (in (fix 1) V)
(= (fix 2) #\r)))
(V -> NLST where (and (in (fix 1) V)
(in (bix 1) V)))
([#\s #\m] -> NLST where (= 0 ewc))
(#\u -> #\o where (in (fix 1) [#\s #\m]))
(#\g -> #\n where (= #\n (fix 1)))
(#\n -> #\h where (= #\g (bix 1)))
(S -> Z where (and (in (fix 1) V)
(in (bix 1) V)))
(#\c -> #\i where (and (in (bix 1) F)
(in (fix 1) [#\t])))
(#\c -> #\u where (and (in (bix 1) B)
(= (fix 1) [#\t])))
(#\p -> NUTHIN where (and (in (bix 1) V)
(= (fix 1) #\t)))
(#\i -> NUTHIN where (= (bix 1) #\i))
(#\e -> NUTHIN where (and (in (bix 1) C)
(and (= (fix 1) #\r)
(in (fix 2) V))))))
There are a lot of interpreter-code-saving quirks that make the DSL seem written for the interpreter rather than the human. For example, if you want to replace any char in a certain list with nothing, you must define an "nlst" as long as the certain list, and do a mapping form the list you want to replace to the list of NUTHIN's (yess that's the value for "delete the char") otherwise it throws a runtime error.
Fluent:
Intermediate:
Intermediate: