The following module was proposed for inclusion in the Module List:
modid: Lingua::FeatureSet DSLIP: adpOp description: define phonology-style features for emes userid: KAHN (Jeremy Kahn) chapterid: 11 (String_Lang_Text_Proc) communities: comp.lang.perl.modules similar: rationale: I need a tool that constructs objects representing the featureset of a phoneme. The standard linguistic notation for this is (for the 'ch', the 'eh', and the 's' sound in chess"): CH [ +stop +fric -voice +palat +cons -vow ] EH [ +vow -cons -low -high +front -tense ] S [ +cons +fric -stop +alv -voice ] Furthermore, I may want to be able to refer to "feature classes", that is, composite features like "affricate": class AFF [ +stop +fric ] (this example would match 'CH' but not 'S' or 'EH'). To complicate things further, the list of primitive features is linguistically controversial, the set of relevant classes varies from language to language, even if you agree on the theoretical primitives, and the choice of symbol set to represent the phoneme (IPA, Sampa, DARPA-bet, etc) is varied and political. Thus, in the finest Perl sense, TMTOWTDI. The dimensions of flexibility provided are: You, the user, define what you want to be the featureset by subclassing "Lingua::FeatureMatrix::Eme", distributed with this module. An added side bonus is that you decide whether the base unit is a "Phone" or a "Phoneme" (or, for that matter, a "SoundUnit" or a "Letter" -- that subclass is *your* module, and the goal is to "[put] the focus not so much onto the problem to be solved, but rather onto the person trying to solve the problem." (see http://kiev.wall.org/~larry/pm.html). You, the user, define what the feature set is, and you define how the phones distribute among those features, using the best of *Impatience* -- use the existing linguistic typographic conventions, and this module takes care of constructing your objects for you. No translating among conventions for us. But let's go one step further. Languages include redundancy, and sometimes it's boring (and not *Lazy*) to have to specify yourself that something that is "[+stop]" is also "[-vow +cons]", especially if you have to specify this for every single "[+stop]" consonant. So this module also introduces the concept of an *implicature* -- I can say, also in simple linguistically-familiar format, that ( [+stop] => [-vow +cons] ) and this will apply for all phones in the current dataset (unless I'm speaking Berber, where this isn't necessarily true...). It's also *Lazy*, because the module also does the work of letting me know whether I have forgotten to specify any of the features of a given phone: # probably missing a feature or six; would generate a # warning. T [ +cons -vow ] Along the way, we pick up some *Hubris*: * Doesn't apply just to phones anymore -- we can use it for letters and ligatures, if we want. * It should be extensible to use these objects to connect to other linguistics-style programs like "Lingua::SoundChange", not to mention homebrew pronunciation algorithms like "Lingua::Soundex". enteredby: KAHN (Jeremy Kahn) enteredon: Mon Sep 2 18:38:29 2002 GMT The resulting entry would be: Lingua:: ::FeatureSet adpOp define phonology-style features for emes KAHN Thanks for registering, The Pause Team PS: The following links are only valid for module list maintainers: Registration form with editing capabilities: https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=92200000_3af935ca9af4a19f&SUBMIT_pause99_add_mod_preview=1 Immediate (one click) registration: https://pause.perl.org/pause/authenquery?ACTION=add_mod&USERID=92200000_3af935ca9af4a19f&SUBMIT_pause99_add_mod_insertit=1