Two tools for conlangers

A forum for guides, lessons and sharing of useful information.
User avatar
cedh
MVP
MVP
Posts: 386
Joined: 07 Sep 2011 22:25
Location: Tübingen, Germany
Contact:

Two tools for conlangers

Post by cedh »

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... [;)] )
User avatar
Aevas
admin
admin
Posts: 1445
Joined: 11 May 2010 05:46
Location: ꜱᴇ

Re: Two tools for conlangers

Post by Aevas »

Thanks for posting this, cedh! The frequentizer in particular is something I've been wanting. [:)]
Khemehekis
mongolian
mongolian
Posts: 3920
Joined: 14 Aug 2010 09:36
Location: California über alles

Re: Two tools for conlangers

Post by Khemehekis »

Good job, Cedh!

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!
xijlwya
sinic
sinic
Posts: 263
Joined: 01 Sep 2010 15:55
Contact:

Re: Two tools for conlangers

Post by xijlwya »

Haha! Awesome!

I recently counted the vowels in my conlang corpus by hand - which was annoying. Great tool. I really appreciate the work.
User avatar
Lambuzhao
korean
korean
Posts: 5405
Joined: 13 May 2012 02:57

Re: Two tools for conlangers

Post by Lambuzhao »

Khemehekis wrote:Good job, Cedh!

Is there a special rank for CBBizens who write programs that help with conlanging and conworlding?
There ought to be & I second that for Cedh!
User avatar
Ossicone
vice admin
vice admin
Posts: 2909
Joined: 12 Aug 2010 05:20
Location: I've heard it both ways.
Contact:

Re: Two tools for conlangers

Post by Ossicone »

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):
Da Infoz wrote:----• METAL
----Image
----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.
However, I will leave that decision up to someone else because I am not a good judge when it comes to this particular topic.
User avatar
Lambuzhao
korean
korean
Posts: 5405
Joined: 13 May 2012 02:57

Re: Two tools for conlangers

Post by Lambuzhao »

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.
User avatar
cedh
MVP
MVP
Posts: 386
Joined: 07 Sep 2011 22:25
Location: Tübingen, Germany
Contact:

Re: Two tools for conlangers

Post by cedh »

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.
User avatar
Click
runic
runic
Posts: 2785
Joined: 21 Jan 2012 12:17

Re: Two tools for conlangers

Post by Click »

Good work!
User avatar
atman
sinic
sinic
Posts: 407
Joined: 05 Dec 2012 17:04

Re: Two tools for conlangers

Post by atman »

I agree that the Frequentizer is especially useful. Well done, cedh!
Երկնէր երկին, երկնէր երկիր, երկնէր և ծովն ծիրանի.
User avatar
MrKrov
banned
Posts: 1929
Joined: 12 Aug 2010 02:47
Location: /ai/ > /a:/
Contact:

Re: Two tools for conlangers

Post by MrKrov »

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.
User avatar
Shrdlu
sinic
sinic
Posts: 267
Joined: 22 Jan 2012 18:33

Re: Two tools for conlangers

Post by Shrdlu »

What would be cool would be a tool that makes sound changes.
I kill threads!
User avatar
Avo
greek
greek
Posts: 831
Joined: 20 Aug 2010 03:04
Location: Berlin, Germany

Re: Two tools for conlangers

Post by Avo »

Shrdlu wrote:What would be cool would be a tool that makes sound changes.
Have you tried Zompist's Sound Change Applier?
User avatar
Shrdlu
sinic
sinic
Posts: 267
Joined: 22 Jan 2012 18:33

Re: Two tools for conlangers

Post by Shrdlu »

Never even heard of it, or knew where I should have looked to find it.


Thank you.
I kill threads!
Ithisa
cuneiform
cuneiform
Posts: 174
Joined: 14 May 2013 13:14

Re: Two tools for conlangers

Post by Ithisa »

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!
Fluent: :chn: :eng:
Intermediate: :jpn:
User avatar
Lambuzhao
korean
korean
Posts: 5405
Joined: 13 May 2012 02:57

Re: Two tools for conlangers

Post by Lambuzhao »

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.
Fanael
sinic
sinic
Posts: 331
Joined: 19 Jul 2012 21:26

Re: Two tools for conlangers

Post by Fanael »

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!
Oh cool. Please release!
Ithisa
cuneiform
cuneiform
Posts: 174
Joined: 14 May 2013 13:14

Re: Two tools for conlangers

Post by Ithisa »

Fanael wrote:
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!
Oh cool. Please release!
After I finish it ;)

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: :chn: :eng:
Intermediate: :jpn:
Fanael
sinic
sinic
Posts: 331
Joined: 19 Jul 2012 21:26

Re: Two tools for conlangers

Post by Fanael »

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)
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
cuneiform
cuneiform
Posts: 174
Joined: 14 May 2013 13:14

Re: Two tools for conlangers

Post by Ithisa »

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:

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))))))
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.
Fluent: :chn: :eng:
Intermediate: :jpn:
Post Reply