From f274593fc2d1696a4dae4c45e76033bfab77b37c Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 7 Mar 2006 18:26:47 +0000 Subject: [PATCH] merging Lexicon with Swadesh --- resource-1.0/abstract/Lexicon.gf | 151 +++++++++++-- resource-1.0/abstract/Structural.gf | 1 + resource-1.0/doc/clt2006.html | 312 +++++++++++++++++++++++--- resource-1.0/doc/clt2006.txt | 261 +++++++++++++++++++-- resource-1.0/doc/editor.png | Bin 0 -> 20552 bytes resource-1.0/english/LexiconEng.gf | 131 ++++++++++- resource-1.0/english/StructuralEng.gf | 2 + resource-1.0/finnish/LexiconFin.gf | 163 ++++++++++++-- resource-1.0/finnish/ParadigmsFin.gf | 6 +- resource-1.0/french/LexiconFre.gf | 127 ++++++++++- resource-1.0/german/LexiconGer.gf | 135 ++++++++++- resource-1.0/italian/LexiconIta.gf | 137 ++++++++++- resource-1.0/minimal/MkLex.hs | 21 ++ resource-1.0/norwegian/LexiconNor.gf | 138 +++++++++++- resource-1.0/romance/CommonRomance.gf | 5 + resource-1.0/spanish/LexiconSpa.gf | 129 ++++++++++- resource-1.0/swedish/LexiconSwe.gf | 129 ++++++++++- 17 files changed, 1740 insertions(+), 108 deletions(-) create mode 100644 resource-1.0/doc/editor.png diff --git a/resource-1.0/abstract/Lexicon.gf b/resource-1.0/abstract/Lexicon.gf index 837fac26f..3d82e1eec 100644 --- a/resource-1.0/abstract/Lexicon.gf +++ b/resource-1.0/abstract/Lexicon.gf @@ -1,47 +1,47 @@ ---1 A Lexicon Lexicon - --- This files gives a list of words whose purpose is to test the GF --- resource grammar. It covers all lexical categories of [Cat Cat.html]. --- By containing some of the most common words, --- it is aimed to cover, with high probability, all morphological --- patterns in the different languages. - --- Using this lexicon for translation is not recommended. The linearizations --- of the words in different languages are not guaranteed to be translation --- equivalents. - abstract Lexicon = Cat ** { - fun +fun add_V3 : V3 ; airplane_N : N ; already_Adv : Adv ; + animal_N : N ; answer_V2S : V2 ; apartment_N : N ; apple_N : N ; art_N : N ; + ashes_N : N ; ask_V2Q : V2 ; baby_N : N ; + back_N : N ; bad_A : A ; bank_N : N ; + bark_N : N ; beautiful_A : A ; become_VA : VA ; beer_N : N ; beg_V2V : V2 ; + belly_N : N ; big_A : A ; bike_N : N ; bird_N : N ; + bite_V2 : V2 ; black_A : A ; + blood_N : N ; + blow_V : V ; blue_A : A ; boat_N : N ; + bone_N : N ; book_N : N ; boot_N : N ; boss_N : N ; boy_N : N ; bread_N : N ; break_V2 : V2 ; + breast_N : N ; + breathe_V : V ; broad_A : A ; brother_N2 : N2 ; brown_A : A ; + burn_V : V ; butter_N : N ; buy_V2 : V2 ; camera_N : N ; @@ -58,82 +58,147 @@ abstract Lexicon = Cat ** { clean_A : A ; clever_A : A ; close_V2 : V2 ; + cloud_N : N ; coat_N : N ; cold_A : A ; come_V : V ; computer_N : N ; + correct_A : A ; country_N : N ; + count_V2 : V2 ; cousin_N : N ; cow_N : N ; + cut_V2 : V2 ; + day_N : N ; die_V : V ; + dig_V : V ; dirty_A : A ; distance_N3 : N3 ; - do_V2 : V2 ; doctor_N : N ; dog_N : N ; door_N : N ; + do_V2 : V2 ; drink_V2 : V2 ; + drink_V2 : V2 ; + dry_A : A ; + dull_A : A ; + dust_N : N ; + ear_N : N ; + earth_N : N ; easy_A2V : A2 ; eat_V2 : V2 ; - enemy_N : N ; + eat_V2 : V2 ; + egg_N : N ; empty_A : A ; + enemy_N : N ; + eye_N : N ; factory_N : N ; + fall_V : V ; + far_Adv : Adv ; father_N2 : N2 ; + fat_N : N ; fear_VS : VS ; + fear_V2 : V2 ; + feather_N : N ; + fight_V2 : V2 ; find_V2 : V2 ; + fingernail_N : N ; + fire_N : N ; fish_N : N ; + float_V : V ; floor_N : N ; + flower_N : N ; + flow_V : V ; + fly_V : V ; + fog_N : N ; + foot_N : N ; + forest_N : N ; forget_V2 : V2 ; + freeze_V : V ; fridge_N : N ; friend_N : N ; fruit_N : N ; + full_A : A ; + fun fun_AV : A ; garden_N : N ; girl_N : N ; + give_V3 : V3 ; glove_N : N ; gold_N : N ; good_A : A ; go_V : V ; + grass_N : N ; green_A : A ; + guts_N : N ; + hair_N : N ; + hand_N : N ; harbour_N : N ; hate_V2 : V2 ; hat_N : N ; have_V2 : V2 ; + head_N : N ; + heart_N : N ; hear_V2 : V2 ; + hear_V2 : V2 ; + heavy_A : A ; hill_N : N ; + hit_V2 : V2 ; + hold_V2 : V2 ; hope_VS : VS ; + horn_N : N ; horse_N : N ; hot_A : A ; house_N : N ; + hunt_V2 : V2 ; + husband_N : N ; + ice_N : N ; important_A : A ; industry_N : N ; iron_N : N ; jump_V : V ; + kill_V2 : V2 ; king_N : N ; + knee_N : N ; + know_V2 : V2 ; know_V2 : V2 ; lake_N : N ; lamp_N : N ; + laugh_V : V ; + leaf_N : N ; learn_V2 : V2 ; leather_N : N ; leave_V2 : V2 ; + left_Ord : Ord ; + leg_N : N ; + lie_V : V ; like_V2 : V2 ; listen_V2 : V2 ; + liver_N : N ; live_V : V ; long_A : A ; lose_V2 : V2 ; + louse_N : N ; love_N : N ; love_V2 : V2 ; man_N : N ; married_A2 : A2 ; meat_N : N ; + meat_N : N ; milk_N : N ; moon_N : N ; mother_N2 : N2 ; mountain_N : N ; + mouth_N : N ; music_N : N ; + name_N : N ; narrow_A : A ; + near_A : A ; + neck_N : N ; new_A : A ; newspaper_N : N ; + night_N : N ; + nose_N : N ; now_Adv : Adv ; number_N : N ; oil_N : N ; @@ -144,33 +209,52 @@ abstract Lexicon = Cat ** { paris_PN : PN ; peace_N : N ; pen_N : N ; + person_N : N ; planet_N : N ; plastic_N : N ; play_V2 : V2 ; + play_V : V ; policeman_N : N ; priest_N : N ; probable_AS : A ; + pull_V2 : V2 ; + push_V2 : V2 ; put_V2 : V2 ; queen_N : N ; radio_N : N ; + rain_N : N ; rain_V0 : V ; read_V2 : V2 ; red_A : A ; religion_N : N ; restaurant_N : N ; + right_Ord : Ord ; river_N : N ; + road_N : N ; rock_N : N ; roof_N : N ; + root_N : N ; + rope_N : N ; + rotten_A : A ; + round_A : A ; rubber_N : N ; + rub_V2 : V2 ; run_V : V ; + salt_N : N ; + sand_N : N ; say_VS : VS ; school_N : N ; science_N : N ; + scratch_V2 : V2 ; sea_N : N ; + seed_N : N ; seek_V2 : V2 ; see_V2 : V2 ; + see_V2 : V2 ; sell_V3 : V3 ; send_V3 : V3 ; + sew_V : V ; + sharp_A : A ; sheep_N : N ; ship_N : N ; shirt_N : N ; @@ -178,52 +262,87 @@ abstract Lexicon = Cat ** { shop_N : N ; short_A : A ; silver_N : N ; + sing_V : V ; sister_N : N ; + sit_V : V ; + skin_N : N ; + sky_N : N ; sleep_V : V ; small_A : A ; + smell_V : V ; + smoke_N : N ; + smooth_A : A ; snake_N : N ; + snow_N : N ; sock_N : N ; song_N : N ; speak_V2 : V2 ; + spit_V : V ; + split_V2 : V2 ; + squeeze_V2 : V2 ; + stab_V2 : V2 ; + stand_V : V ; star_N : N ; steel_N : N ; + stick_N : N ; stone_N : N ; stop_V : V ; stove_N : N ; + straight_A : A ; student_N : N ; stupid_A : A ; + suck_V2 : V2 ; sun_N : N ; + swell_V : V ; + swim_V : V ; switch8off_V2 : V2 ; switch8on_V2 : V2 ; table_N : N ; + tail_N : N ; talk_V3 : V3 ; teacher_N : N ; teach_V2 : V2 ; television_N : N ; thick_A : A ; thin_A : A ; + think_V : V ; + throw_V2 : V2 ; + tie_V2 : V2 ; + tongue_N : N ; + tooth_N : N ; train_N : N ; travel_V : V ; tree_N : N ; - ---- trousers_N : N ; + turn_V : V ; ugly_A : A ; understand_V2 : V2 ; university_N : N ; village_N : N ; + vomit_V : V ; wait_V2 : V2 ; walk_V : V ; warm_A : A ; war_N : N ; + wash_V2 : V2 ; watch_V2 : V2 ; water_N : N ; + water_N : N ; + wet_A : A ; white_A : A ; + wide_A : A ; + wife_N : N ; + wind_N : N ; window_N : N ; wine_N : N ; + wing_N : N ; win_V2 : V2 ; + wipe_V2 : V2 ; woman_N : N ; wonder_VQ : VQ ; wood_N : N ; + worm_N : N ; write_V2 : V2 ; + year_N : N ; yellow_A : A ; young_A : A ; diff --git a/resource-1.0/abstract/Structural.gf b/resource-1.0/abstract/Structural.gf index 477f969f7..ea3fe0301 100644 --- a/resource-1.0/abstract/Structural.gf +++ b/resource-1.0/abstract/Structural.gf @@ -38,6 +38,7 @@ abstract Structural = Cat ** { everything_NP : NP ; everywhere_Adv : Adv ; first_Ord : Ord ; + few_Det : Det ; from_Prep : Prep ; he_Pron : Pron ; here_Adv : Adv ; diff --git a/resource-1.0/doc/clt2006.html b/resource-1.0/doc/clt2006.html index 4ee440495..b7e180545 100644 --- a/resource-1.0/doc/clt2006.html +++ b/resource-1.0/doc/clt2006.html @@ -7,7 +7,7 @@

The GF Resource Grammar Library Version 1.0

Author: Aarne Ranta <aarne (at) cs.chalmers.se>
-Last update: Sat Mar 4 14:20:07 2006 +Last update: Tue Mar 7 16:01:46 2006

@@ -274,9 +274,7 @@ Rosetta Machine Translation (B

Coverage

-

-===Languages==== -

+

Languages

The current GF Resource Project covers ten languages:

@@ -302,9 +300,7 @@ API 1.0 not yet implemented for Danish and Russian

-

-===Morphology==== -

+

Morphology and lexicon

Complete inflection engine

@@ -315,24 +311,20 @@ Complete inflection engine

-High-level access via ParadigmsX; e.g. Swedish: +Basic lexicon

+ +

+It is more important to enable lexicon extensions than to +provide a huge lexicon. +

+

@@ -340,7 +332,32 @@ High-level access via ParadigmsX; e.g. Swedish:

Syntactic structures

- +Texts: +sequences of phrases with punctuation +

+

+Phrases: +declaratives, questions, imperatives, vocatives +

+

+Tense, mood, and polarity: +present, past, future, conditional ; similtaneous, anterior ; positive, negative +

+

+Questions: +yes-no, "wh" ; direct, indirect +

+

+Clauses: +main, relative, embedded (subject, object, adverbial) +

+

+Verb phrases: +intransitive, transitive, ditransitive, prepositional +

+

+Noun phrases: +proper names, pronouns, determiners, possessives, cardinals and ordinals

@@ -378,15 +395,125 @@ Lines of source code (4/3/2006):

-

Structure

+

Structure of the API

+

Language-independent ground API

+

+ +

-

Language-independent ground API

+

The structure of a text sentence

+
+  John walks.
+  
+  TFullStop              : Phr -> Text -> Text
+    (PhrUtt              : PConj -> Utt -> Voc -> Phr
+      NoPConj
+      (UttS              : S -> Utt
+        (UseCl           : Tense -> Anter -> Pol -> Cl -> S
+          TPres              
+          ASimul 
+          PPos 
+          (PredVP        : NP -> VP -> Cl
+            (UsePN       : PN -> NP 
+              john_PN) 
+            (UseV        : V  -> VP
+              walk_V)))) 
+      NoVoc) 
+    TEmpty
+
+

+

+ +

+

Structure in syntax editor

+

+ +

Language-dependent paradigm modules

+

Regular paradigms

+

+Every language implements these regular patterns that take +"dictionary forms" as arguments. +

+
+    regN : Str -> N
+    regA : Str -> A 
+    regV : Str -> V
+
+

+Their usefulness varies. For instance, they +all are quite good in Finnish and English. +In Swedish, less so: +

+
+    regN "val" ---> val, valen, valar, valarna
+
+

+Initializing a lexicon with regXs is +usually a good starting point in grammar development. +

+

+ +

+

Regular paradigms

+

+In Swedish, giving the gender of N improves a lot +

+
+    regGenN "val" neutrum ---> val, valet, val, valen
+
+

+

+There are also special constructs taking other forms: +

+
+    mk2N : (nyckel,nycklar : Str) -> N
+    mk1N : (bilarna : Str) -> N
+  
+    irregV : (dricka, drack, druckit : Str) -> V
+
+

+

+Regular verbs are actually implemented the +Lexin way +

+
+    regV : (talar : Str) -> N
+
+

+

+ +

+

Worst-case paradigms

+

+To cover all situations, worst-case paradigms are given. E.g. Swedish +

+
+    mkN : (apa,apan,apor,aporna : Str) -> N
+    mkA : (liten, litet, lilla, sma, mindre, minst, minsta : Str) -> A
+    mkV : (supa,super,sup,söp,supit,supen : Str) -> V
+
+

+

+ +

+

Irregular words

+

+Iregular words in IrregX, e.g. Swedish: +

+
+      draga_V : V = 
+        mkV (variants { "dra"; "draga"}) (variants { "drar" ; "drager"}) 
+            (variants { "dra" ; "drag" }) "drog" "dragit" "dragen" ;
+
+

+Goal: eliminate the user's need of worst-case functions. +

@@ -395,6 +522,20 @@ Lines of source code (4/3/2006):

Special-purpose APIs

+

+Syntactic structures that are not shared by all languages. +

+

+Not implemented yet. +

+

+Candidates: +

+ +

@@ -402,20 +543,127 @@ Lines of source code (4/3/2006):

+

Compiling

+

+It is a good idea to compile the library, so that it can be opened faster +

+
+    GF/lib/resource-1.0% make
+  
+    writes GF/lib/alltenses
+           GF/lib/present
+           GF/lib/resource-1.0/langs.gfcm
+
+

+If you don't intend to change the library, you never need to process the source +files again. Just do some of +

+
+    gf -nocf langs.gfcm                                    -- all 8 languages
+   
+    gf -nocf -path=alltenses:prelude alltenses/LangSwe.gfc -- Swedish only
+  
+    gf -nocf -path=alltenses:prelude present/LangSwe.gfc   -- Swedish only, present tense only
+
+

+

+ +

Parsing

+The default parser does not work! +

+

+The MCFG parser works in some languages, after waiting appr. 20 seconds +

+
+    p -mcfg -lang=LangEng -cat=S "I would see her"
+  
+    p -mcfg -lang=LangSwe -cat=S "jag skulle se henne"
+  
+    p -mcfg -lang=LangNor -cat=S "jeg ville se henne"
+  
+
+

+Parsing in present/ versions is quicker. +

+

Treebank generation

+Multilingual treebank entry = tree + linearizations +

+

+Some examples on treebank generation, assuming langs.gfcm +

+
+    gr -cat=S   -number=10 -cf | tb                  -- 10 random S
+  
+    gt -cat=Phr -depth=4       | tb -xml | wf ex.xml -- all Phr to depth 4, into file ex.xml
+
+

+Regression testing +

+
+    rf ex.xml | tb -c      -- read treebank from file and compare to present grammars 
+
+

+Updating a treebank +

+
+    rf old.xml | tb -trees | tb -xml | wf new.xml    -- read old from file, write new to file
+
+

+

Treebank-based parsing

+Brute-force method that helps if real parsing is more expensive. +

+
+    make treebank                     -- make treebank with all languages
+  
+    gf -treebank langs.xml            -- start GF by reading the treebank
+  
+    > ut -strings -treebank=LangIta   -- show all Ita strings
+  
+    > ut -treebank=LangIta -raw "Quello non si romperebbe" -- look up a string
+  
+    > i -nocf langs.gfcm              -- read grammar to be able to linearize
+  
+    > ut -treebank=LangIta "Quello non si romperebbe" | l -multi  -- translate to all
+
+

+

Morphology

+Use morphological analyser +

+
+    gf -nocf -retain -path=alltenses:prelude alltenses/LangSwe.gf
+    > ma "jag kan inte höra vad du säger"
+
+

+

+Try out a morphology quiz +

+
+    > mq -cat=V
+
+

+

+Try out inflection patterns +

+
+    gf -retain -path=alltenses:prelude alltenses/ParadigmsSwe.gfr
+    > cc regV "lyser"
+
+

+

@@ -423,6 +671,16 @@ Lines of source code (4/3/2006):

Syntax editing

+We start a demo by +

+
+  gfeditor langs.gfcm
+
+

+

+ +

+

Efficient parsing via application grammar

@@ -469,6 +727,6 @@ Lines of source code (4/3/2006):

Extend old modules or add a new one?

- + diff --git a/resource-1.0/doc/clt2006.txt b/resource-1.0/doc/clt2006.txt index 5b215297a..dd348b2da 100644 --- a/resource-1.0/doc/clt2006.txt +++ b/resource-1.0/doc/clt2006.txt @@ -217,7 +217,7 @@ Rosetta Machine Translation ([Book 1994 http://citeseer.ist.psu.edu/181924.html] ==Coverage== -===Languages==== +===Languages=== The current GF Resource Project covers ten languages: - ``Dan``ish @@ -240,7 +240,7 @@ API 1.0 not yet implemented for Danish and Russian #NEW -===Morphology==== +===Morphology and lexicon=== Complete inflection engine - all word classes @@ -248,24 +248,16 @@ Complete inflection engine - all inflectional paradigms -High-level access via ``ParadigmsX``; e.g. Swedish: -- worst-case functions -``` - mkV : (supa,super,sup,söp,supit,supen : Str) -> V ; -``` -- common patterns -``` - regV : (talar : Str) -> V ; - irregV : (dricka, drack, druckit : Str) -> V ; -``` -- irregular words in ``IrregX``: -``` - draga_V : V = - mkV (variants { "dra"; "draga"}) (variants { "drar" ; "drager"}) - (variants { "dra" ; "drag" }) "drog" "dragit" "dragen" ; -``` +Basic lexicon +- 100 structural words +- 350 content words, mainly for testing +- these include the 207 [Swadesh words http://en.wiktionary.org/wiki/Swadesh_List] +It is more important to enable lexicon extensions than to +provide a huge lexicon. +- technical lexica can have very special words, which tend to be regular + @@ -274,7 +266,28 @@ High-level access via ``ParadigmsX``; e.g. Swedish: ===Syntactic structures=== -[Lang.png] +Texts: +sequences of phrases with punctuation + +Phrases: +declaratives, questions, imperatives, vocatives + +Tense, mood, and polarity: +present, past, future, conditional ; similtaneous, anterior ; positive, negative + +Questions: +yes-no, "wh" ; direct, indirect + +Clauses: +main, relative, embedded (subject, object, adverbial) + +Verb phrases: +intransitive, transitive, ditransitive, prepositional + +Noun phrases: +proper names, pronouns, determiners, possessives, cardinals and ordinals + + #NEW @@ -307,16 +320,117 @@ Lines of source code (4/3/2006): #NEW -==Structure== +==Structure of the API== + +===Language-independent ground API=== + +[Lang.png] + #NEW -===Language-independent ground API=== +===The structure of a text sentence=== + +``` +John walks. + +TFullStop : Phr -> Text -> Text + (PhrUtt : PConj -> Utt -> Voc -> Phr + NoPConj + (UttS : S -> Utt + (UseCl : Tense -> Anter -> Pol -> Cl -> S + TPres + ASimul + PPos + (PredVP : NP -> VP -> Cl + (UsePN : PN -> NP + john_PN) + (UseV : V -> VP + walk_V)))) + NoVoc) + TEmpty +``` + +#NEW + +===Structure in syntax editor=== + +[editor.png] + #NEW ===Language-dependent paradigm modules=== +====Regular paradigms==== + +Every language implements these regular patterns that take +"dictionary forms" as arguments. +``` + regN : Str -> N + regA : Str -> A + regV : Str -> V +``` +Their usefulness varies. For instance, they +all are quite good in Finnish and English. +In Swedish, less so: +``` + regN "val" ---> val, valen, valar, valarna +``` +Initializing a lexicon with ``regX``s is +usually a good starting point in grammar development. + + +#NEW + +====Regular paradigms==== + +In Swedish, giving the gender of ``N`` improves a lot +``` + regGenN "val" neutrum ---> val, valet, val, valen +``` + +There are also special constructs taking other forms: +``` + mk2N : (nyckel,nycklar : Str) -> N + mk1N : (bilarna : Str) -> N + + irregV : (dricka, drack, druckit : Str) -> V +``` + +Regular verbs are actually implemented the +[Lexin http://lexin.nada.kth.se/sve-sve.shtml] way +``` + regV : (talar : Str) -> N +``` + + +#NEW + +====Worst-case paradigms==== + +To cover all situations, worst-case paradigms are given. E.g. Swedish +``` + mkN : (apa,apan,apor,aporna : Str) -> N + mkA : (liten, litet, lilla, sma, mindre, minst, minsta : Str) -> A + mkV : (supa,super,sup,söp,supit,supen : Str) -> V +``` + + +#NEW + +====Irregular words==== + +Iregular words in ``IrregX``, e.g. Swedish: +``` + draga_V : V = + mkV (variants { "dra"; "draga"}) (variants { "drar" ; "drager"}) + (variants { "dra" ; "drag" }) "drog" "dragit" "dragen" ; +``` +Goal: eliminate the user's need of worst-case functions. + + + #NEW ===Language-dependent syntax extensions=== @@ -325,34 +439,139 @@ Lines of source code (4/3/2006): ===Special-purpose APIs=== +Syntactic structures that are not shared by all languages. + +Not implemented yet. + +Candidates: +- ``Nor`` post-possessives: ``bilen min`` +- ``Fre`` question forms: ``est-ce que tu dors ?`` + #NEW ===How to use as top-level grammar=== +#NEW + +===Compiling=== + +It is a good idea to compile the library, so that it can be opened faster +``` + GF/lib/resource-1.0% make + + writes GF/lib/alltenses + GF/lib/present + GF/lib/resource-1.0/langs.gfcm +``` +If you don't intend to change the library, you never need to process the source +files again. Just do some of +``` + gf -nocf langs.gfcm -- all 8 languages + + gf -nocf -path=alltenses:prelude alltenses/LangSwe.gfc -- Swedish only + + gf -nocf -path=alltenses:prelude present/LangSwe.gfc -- Swedish only, present tense only +``` + + #NEW ===Parsing=== +The default parser does not work! + +The MCFG parser works in some languages, after waiting appr. 20 seconds +``` + p -mcfg -lang=LangEng -cat=S "I would see her" + + p -mcfg -lang=LangSwe -cat=S "jag skulle se henne" + + p -mcfg -lang=LangNor -cat=S "jeg ville se henne" + +``` +Parsing in ``present/`` versions is quicker. + + #NEW ===Treebank generation=== +Multilingual treebank entry = tree + linearizations + +Some examples on treebank generation, assuming ``langs.gfcm`` +``` + gr -cat=S -number=10 -cf | tb -- 10 random S + + gt -cat=Phr -depth=4 | tb -xml | wf ex.xml -- all Phr to depth 4, into file ex.xml +``` +Regression testing +``` + rf ex.xml | tb -c -- read treebank from file and compare to present grammars +``` +Updating a treebank +``` + rf old.xml | tb -trees | tb -xml | wf new.xml -- read old from file, write new to file +``` + + + #NEW ===Treebank-based parsing=== +Brute-force method that helps if real parsing is more expensive. +``` + make treebank -- make treebank with all languages + + gf -treebank langs.xml -- start GF by reading the treebank + + > ut -strings -treebank=LangIta -- show all Ita strings + + > ut -treebank=LangIta -raw "Quello non si romperebbe" -- look up a string + + > i -nocf langs.gfcm -- read grammar to be able to linearize + + > ut -treebank=LangIta "Quello non si romperebbe" | l -multi -- translate to all +``` + + #NEW ===Morphology=== +Use morphological analyser +``` + gf -nocf -retain -path=alltenses:prelude alltenses/LangSwe.gf + > ma "jag kan inte höra vad du säger" +``` + +Try out a morphology quiz +``` + > mq -cat=V +``` + +Try out inflection patterns +``` + gf -retain -path=alltenses:prelude alltenses/ParadigmsSwe.gfr + > cc regV "lyser" +``` + + #NEW + #NEW ===Syntax editing=== +We start a demo by +``` gfeditor langs.gfcm + +[editor.png] + + #NEW ===Efficient parsing via application grammar=== diff --git a/resource-1.0/doc/editor.png b/resource-1.0/doc/editor.png new file mode 100644 index 0000000000000000000000000000000000000000..63a3161bfc38346991ade7840c152f7a9172284a GIT binary patch literal 20552 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 Str -> {s : Number => Str} = \x,y -> { s = table Number [x ; y] diff --git a/resource-1.0/finnish/LexiconFin.gf b/resource-1.0/finnish/LexiconFin.gf index 0bbe9d8b8..1d3cd997d 100644 --- a/resource-1.0/finnish/LexiconFin.gf +++ b/resource-1.0/finnish/LexiconFin.gf @@ -1,6 +1,6 @@ --# -path=.:prelude -concrete LexiconFin of Lexicon = CatFin ** open ParadigmsFin in { +concrete LexiconFin of Lexicon = CatFin ** open MorphoFin, ParadigmsFin in { flags optimize=values ; @@ -51,8 +51,8 @@ lin "lapsina" "lapsissa" "lasten" "lapsia" "lapsiin" ; church_N = nLukko "kirkko" ; city_N = regN "kaupunki" ; - clean_A = regADeg "puhdas" ; - clever_A = regADeg "viisas" ; + clean_A = regA "puhdas" ; + clever_A = regA "viisas" ; close_V2 = dirV2 (regV "sulkea") ; coat_N = regN "takki" ; cold_A = mkADeg (nLukko "kylmä") "kylmempi" "kylmin" ; @@ -121,7 +121,8 @@ lin love_V2 = caseV2 (regV "rakastaa") partitive ; man_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen" "miehinä" "miehissä" "miesten" "miehiä" "miehiin" ; - married_A2 = mkA2 (mkA (nRae "avioitunut" "avioituneena")) (postPrep genitive "kanssa") ; + married_A2 = + mkA2 (mkA (nRae "avioitunut" "avioituneena")) (postPrep genitive "kanssa") ; meat_N = nLukko "liha" ; milk_N = nLukko "maito" ; moon_N = regN "kuu" ; @@ -149,7 +150,7 @@ lin radio_N = reg2N "radio" "radioita" ; rain_V0 = mkV0 (reg2V "sataa" "satoi") ; read_V2 = dirV2 (regV "lukea") ; - red_A = regADeg "punainen" ; + red_A = regA "punainen" ; religion_N = nLukko "uskonto" ; restaurant_N = nLukko "ravintola" ; river_N = nArpi "joki" ; @@ -172,7 +173,7 @@ lin shirt_N = nLukko "paita" ; shoe_N = nLukko "kenkä" ; shop_N = nLukko "kauppa" ; - short_A = regADeg "lyhyt" ; + short_A = regA "lyhyt" ; silver_N = regN "hopea" ; sister_N = nLukko "sisko" ; sleep_V = regV "nukkua" ; @@ -185,7 +186,7 @@ lin stone_N = nSylki "kivi" ; stove_N = reg3N "liesi" "lieden" "liesiä" ; student_N = reg2N "opiskelija" "opiskelijoita" ; - stupid_A = regADeg "tyhmä" ; + stupid_A = regA "tyhmä" ; sun_N = nLukko "aurinko" ; switch8off_V2 = dirV2 (regV "sammuttaa") ; --- switch8on_V2 = dirV2 (regV "sytyttää") ; --- @@ -194,8 +195,8 @@ lin teacher_N = nLukko "opettaja" ; teach_V2 = dirV2 (regV "opettaa") ; television_N = reg2N "televisio" "televisioita" ; - thick_A = regADeg "paksu" ; - thin_A = regADeg "ohut" ; + thick_A = regA "paksu" ; + thin_A = regA "ohut" ; train_N = nLukko "juna" ; travel_V = regV "matkustaa" ; tree_N = regN "puu" ; @@ -214,7 +215,7 @@ lin war_N = nLukko "sota" ; watch_V2 = dirV2 (regV "katsella") ; water_N = reg3N "vesi" "veden" "vesiä" ; - white_A = regADeg "valkoinen" ; + white_A = regA "valkoinen" ; window_N = reg2N "ikkuna" "ikkunoita" ; wine_N = regN "viini" ; win_V2 = dirV2 (regV "voittaa") ; @@ -222,7 +223,7 @@ lin wonder_VQ = mkVQ (regV "ihmetellä") ; wood_N = regN "puu" ; write_V2 = dirV2 (regV "kirjoittaa") ; - yellow_A = regADeg "keltainen" ; + yellow_A = regA "keltainen" ; young_A = mkADeg (nArpi "nuori") "nuorempi" "nuorin" ; do_V2 = dirV2 ( @@ -237,13 +238,137 @@ lin put_V2 = dirV2 (regV "panna") ; stop_V = regV "pysähtyä" ; jump_V = regV "hypätä" ; -{- - here_Adv = mkAdv "täällä" ; - here7to_Adv = mkAdv "tänne" ; - here7from_Adv = mkAdv "täältä" ; - there_Adv = mkAdv "siellä" ; --- tuolla - there7to_Adv = mkAdv "sinne" ; - there7from_Adv = mkAdv "sieltä" ; --} + left_Ord = mkOrd (regN "vasen") ; + right_Ord = mkOrd (regN "oikea") ; + far_Adv = mkAdv "kaukana" ; + correct_A = regA "oikea" ; + dry_A = mkADeg (regN "kuiva") "kuivempi" "kuivin" ; + dull_A = mkADeg (regN "tylsä") "tylsempi" "tylsin" ; + full_A = mkADeg (reg3N "täysi" "täyden" "täysiä") "täydempi" "täysin" ; + heavy_A = regA "raskas" ; + near_A = regA "läheinen" ; + rotten_A = regA "mätä" ; + round_A = regA "pyöreä" ; + sharp_A = regA "terävä" ; + smooth_A = regA "sileä" ; + straight_A = mkADeg (regN "suora") "suorempi" "suorin" ; + wet_A = mkADeg (regN "märkä") "märempi" "märin" ; + wide_A = regA "leveä" ; + animal_N = reg3N "eläin" "eläimen" "eläimiä" ; + ashes_N = regN "tuhka" ; + back_N = regN "selkä" ; + bark_N = regN "kaarna" ; + belly_N = regN "vatsa" ; + blood_N = nMeri "veri" ; + bone_N = regN "luu" ; + breast_N = regN "rinta" ; + cloud_N = reg2N "pilvi" "pilviä" ; + day_N = regN "päivä" ; + dust_N = regN "pöly" ; + ear_N = regN "korva" ; + earth_N = regN "maa" ; + egg_N = regN "muna" ; + eye_N = regN "silmä" ; + fat_N = regN "rasva" ; + feather_N = reg3N "höyhen" "höyhenen" "höyheniä" ; + fingernail_N = reg3N "kynsi" "kynnen" "kynsiä" ; + fire_N = reg2N "tuli" "tulia" ; + flower_N = regN "kukka" ; + fog_N = regN "sumu" ; + foot_N = regN "jalka" ; + forest_N = regN "metsä" ; + grass_N = regN "ruoho" ; + guts_N = regN "sisälmys" ; --- suoli + hair_N = regN "hius" ; + hand_N = reg3N "käsi" "käden" "käsiä" ; + head_N = regN "pää" ; + heart_N = reg3N "sydän" "sydämen" "sydämiä" ; + horn_N = reg2N "sarvi" "sarvia" ; + husband_N = mkN "mies" "miehen" "miehenä" "miestä" "mieheen" + "miehinä" "miehissä" "miesten" "miehiä" "miehiin" ; + ice_N = regN "jää" ; + knee_N = reg2N "polvi" "polvia" ; + leaf_N = reg2N "lehti" "lehtiä" ; + leg_N = regN "jalka" ; --- sääri + liver_N = regN "maksa" ; + louse_N = regN "lude" ; + mouth_N = regN "suu" ; + name_N = reg2N "nimi" "nimiä" ; + neck_N = regN "niska" ; + night_N = regN "yö" ; + nose_N = regN "nenä" ; + person_N = regN "henkilö" ; + rain_N = regN "sade" ; + road_N = regN "tie" ; + root_N = reg2N "juuri" "juuria" ; + rope_N = reg3N "köysi" "köyden" "köysiä" ; + salt_N = regN "suola" ; + sand_N = regN "hiekka" ; + seed_N = regN "siemen" ; + skin_N = regN "nahka" ; + sky_N = reg3N "taivas" "taivaan" "taivaita" ; + smoke_N = regN "savu" ; + snow_N = sgpartN (nMeri "lumi") "lunta" ; + stick_N = regN "keppi" ; + tail_N = regN "häntä" ; + tongue_N = reg2N "kieli" "kieliä" ; + tooth_N = regN "hammas" ; + wife_N = regN "vaimo" ; + wind_N = reg2N "tuuli" "tuulia" ; + wing_N = reg2N "siipi" "siipiä" ; + worm_N = regN "mato" ; + year_N = reg3N "vuosi" "vuoden" "vuosia" ; + bite_V2 = dirV2 (regV "purra") ; + blow_V = regV "puhaltaa" ; + burn_V = regV "palaa" ; + count_V2 = dirV2 (regV "laskea") ; + cut_V2 = dirV2 (reg2V "leikata" "leikkasi") ; + dig_V = regV "kaivaa" ; + fall_V = reg3V "pudota" "putoan" "putosi" ; + fear_V2 = dirV2 (reg3V "pelätä" "pelkään" "pelkäsi") ; + fight_V2 = dirV2 (regV "taistella") ; + float_V = regV "kellua" ; + flow_V = reg3V "virrata" "virtaan" "virtasi" ; + fly_V = regV "lentää" ; + freeze_V = regV "jäätyä" ; + give_V3 = dirdirV3 (regV "antaa") ; + hit_V2 = dirV2 (regV "lyödä") ; + hold_V2 = dirV2 (regV "pitää") ; + hunt_V2 = dirV2 (regV "metsästää") ; + kill_V2 = dirV2 (regV "tappaa") ; + laugh_V = reg3V "nauraa" "nauran" "nauroi" ; + lie_V = reg3V "maata" "makaan" "makasi" ; + play_V = regV "pelata" ; + pull_V2 = dirV2 (regV "vetää") ; + push_V2 = dirV2 (regV "työntää") ; + rub_V2 = dirV2 (regV "hieroa") ; + scratch_V2 = dirV2 (regV "raapia") ; + sew_V = regV "kylvää" ; + sing_V = regV "laulaa" ; + sit_V = regV "istua" ; + smell_V = reg2V "haistaa" "haistoi" ; + spit_V = regV "sylkeä" ; + split_V2 = dirV2 (reg2V "halkaista" "halkaisi") ; + squeeze_V2 = dirV2 (regV "puristaa") ; + stab_V2 = dirV2 (regV "pistää") ; + stand_V = mkV "seistä" "seisoo" "seison" "seisovat" "seiskää" "seistään" + "seisoi" "seisoin" "seisoisi" "seissyt" "seisty" "seistyn" ; --- *seisoivät + suck_V2 = dirV2 (regV "imeä") ; + swell_V = mkV "turvota" "turpoaa" "turpoan" "turpoavat" "turvotkaa" "turvotaan" + "turposi" "turposin" "turpoaisi" "turvonnut" "turvottu" "turvotun" ; + swim_V = reg3V "uida" "uin" "ui" ; + think_V = reg3V "ajatella" "ajattelen" "ajatteli" ; + throw_V2 = dirV2 (regV "heittää") ; + tie_V2 = dirV2 (regV "sitoa") ; + turn_V = regV "kääntyä" ; + vomit_V = regV "oksentaa" ; + wash_V2 = dirV2 (regV "pestä") ; + wipe_V2 = dirV2 (regV "pyyhkiä") ; + + breathe_V = regV "hengittää" ; + + oper + mkOrd : N -> Ord ; + mkOrd x = {s = \\n,c => x.s ! NCase n c; lock_Ord = <> } ; } ; diff --git a/resource-1.0/finnish/ParadigmsFin.gf b/resource-1.0/finnish/ParadigmsFin.gf index 1f7d8bfa9..0120d62e8 100644 --- a/resource-1.0/finnish/ParadigmsFin.gf +++ b/resource-1.0/finnish/ParadigmsFin.gf @@ -224,7 +224,7 @@ oper -- The regular adjectives are based on $regN$ in the positive. - regADeg : (punainen : Str) -> A ; + regA : (punainen : Str) -> A ; --2 Verbs @@ -490,13 +490,15 @@ reg3N = \vesi,veden,vesi in regAdjective x kivempaa kivinta ** {lock_A = <>} ; - regADeg suuri = + regA suuri = let suur = regN suuri in mkADeg suur (init (suur.s ! NCase Sg Gen) + "mpi") (init (suur.s ! NCase Pl Ess)) ; + regADeg = regA ; -- for bw compat + mkV a b c d e f g h i j k l = mkVerb a b c d e f g h i j k l ** {sc = NPCase Nom ; lock_V = <>} ; diff --git a/resource-1.0/french/LexiconFre.gf b/resource-1.0/french/LexiconFre.gf index 04d57e91d..0467041f3 100644 --- a/resource-1.0/french/LexiconFre.gf +++ b/resource-1.0/french/LexiconFre.gf @@ -1,6 +1,7 @@ --# -path=.:../romance:../common:../abstract:../../prelude -concrete LexiconFre of Lexicon = CatFre ** open ParadigmsFre, IrregFre in { +concrete LexiconFre of Lexicon = CatFre ** + open MorphoFre, ParadigmsFre, IrregFre in { flags optimize=values ; @@ -71,6 +72,7 @@ lin factory_N = regGenN "usine" feminine ; father_N2 = deN2 (regGenN "père" masculine) ; fear_VS = mkVS (v2V craindre_V2) ; + fear_V2 = dirV2 (v2V craindre_V2) ; find_V2 = dirV2 (regV "trouver") ; fish_N = regGenN "poisson" masculine ; floor_N = regGenN "plancher" masculine ; @@ -224,4 +226,127 @@ lin stop_V = reflV (regV "arrêter") ; jump_V = regV "sauter" ; + left_Ord = mkOrd (regA "gauche") ; + right_Ord = mkOrd (regA "droite") ; + far_Adv = mkAdv "loin" ; + correct_A = regA "correct" ; + dry_A = (mkA "sec" "sèche" "secs" "sèches") ; + dull_A = regA "émoussé" ; + full_A = regA "plein" ; + heavy_A = regA "lourd" ; + near_A = regA "proche" ; + rotten_A = regA "pourri" ; + round_A = regA "rond" ; + sharp_A = regA "tranchant" ; + smooth_A = regA "lisse" ; + straight_A = regA "droite" ; + wet_A = regA "mouillé" ; + wide_A = regA "large" ; + animal_N = regN "animal" ; + ashes_N = regGenN "cendre" masculine ; + back_N = regN "dos" ; + bark_N = regN "écorce" ; + belly_N = regGenN "ventre" masculine ; + blood_N = regN "sang" ; + bone_N = regN "os" ; + breast_N = regN "sein" ; --- poitrine + cloud_N = regGenN "nuage" masculine ; + day_N = regN "jour" ; + dust_N = regN "poussière" ; + ear_N = regN "oreille" ; + earth_N = regN "terre" ; + egg_N = regN "oeuf" ; + eye_N = mkN "oeil" "yeux" masculine ; + fat_N = regN "graisse" ; + feather_N = regN "plume" ; + fingernail_N = regGenN "ongle" masculine ; + fire_N = regN "feu" ; + flower_N = regGenN "fleur" feminine ; + fog_N = regN "brouillard" ; + foot_N = regN "pied" ; + forest_N = regGenN "forêt" feminine ; + grass_N = regN "herbe" ; + guts_N = regN "entraille" ; + hair_N = regN "cheveu" ; + hand_N = regGenN "main" feminine ; + head_N = regN "tête" ; + heart_N = regN "coeur" ; + horn_N = regGenN "corne" masculine ; + husband_N = regN "mari" ; + ice_N = regN "glace" ; + knee_N = regN "genou" ; + leaf_N = regN "feuille" ; + leg_N = regN "jambe" ; + liver_N = regGenN "foie" masculine ; + louse_N = regN "pou" ; + mouth_N = regN "bouche" ; + name_N = regN "nom" ; + neck_N = mkN "cou" "cous" masculine ; + night_N = regGenN "nuit" feminine ; + nose_N = regN "nez" ; + person_N = regN "personne" ; + rain_N = regN "pluie" ; + road_N = regN "route" ; + root_N = regN "racine" ; + rope_N = regN "corde" ; + salt_N = regN "sel" ; + sand_N = regGenN "sable" masculine ; + seed_N = regN "graine" ; + skin_N = regN "peau" ; + sky_N = mkN "ciel" "cieux" masculine ; + smoke_N = regN "fumée" ; + snow_N = regN "neige" ; + stick_N = regN "bâton" ; + tail_N = regN "queue" ; + tongue_N = regN "langue" ; + tooth_N = regGenN "dent" feminine ; + wife_N = regN "femme" ; + wind_N = regN "vent" ; + wing_N = regN "aile" ; + worm_N = regN "ver" ; + year_N = regN "an" ; --- année + bite_V2 = mordre_V2 ; + blow_V = regV "souffler" ; + breathe_V = regV "respirer" ; + burn_V = regV "brûler" ; + count_V2 = dirV2 (regV "conter") ; + cut_V2 = dirV2 (regV "tailler") ; + dig_V = regV "creuser" ; + fall_V = regV "tomber" ; + fight_V2 = dirV2 (regV "lutter") ; + float_V = regV "flotter" ; + flow_V = regV "couler" ; + fly_V = regV "voler" ; + freeze_V = reg3V "geler" "gèle" "gèlera" ; + give_V3 = dirdirV3 (regV "donner") ; + hit_V2 = dirV2 (regV "frapper") ; + hunt_V2 = dirV2 (regV "chasser") ; + kill_V2 = dirV2 (regV "tuer") ; + laugh_V = rire_V2 ; + lie_V = reflV étendre_V2 ; + play_V = regV "jouer" ; + pull_V2 = dirV2 (regV "tirer") ; + push_V2 = dirV2 (regV "pousser") ; + rub_V2 = dirV2 (regV "frotter") ; + scratch_V2 = dirV2 (regV "gratter") ; + sew_V = coudre_V2 ; + sing_V = regV "chanter" ; + sit_V = reflV asseoir_V2 ; + smell_V = v2V ( sentir_V2) ; + spit_V = regV "cracher" ; + squeeze_V2 = dirV2 (regV "serrer") ; + stab_V2 = dirV2 (regV "poignarder") ; + stand_V = reflV (reg3V "lever" "lève" "lèvera") ; + suck_V2 = dirV2 (regV "sucer") ; + swell_V = regV "gonfler" ; + swim_V = regV "nager" ; + think_V = regV "penser" ; + throw_V2 = dirV2 (regV "jeter") ; + tie_V2 = dirV2 (regV "lier") ; + turn_V = regV "tourner" ; + vomit_V = regV "vomir" ; + wash_V2 = dirV2 (regV "laver") ; + wipe_V2 = dirV2 (regV "essuyer") ; + + } ; diff --git a/resource-1.0/german/LexiconGer.gf b/resource-1.0/german/LexiconGer.gf index 1193b00a2..d6051e699 100644 --- a/resource-1.0/german/LexiconGer.gf +++ b/resource-1.0/german/LexiconGer.gf @@ -202,7 +202,8 @@ lin tree_N = reg2N "Baum" "Bäume" masculine ; ---- trousers_N = regN "trousers" ; ---- pl t ! ugly_A = regA "häßlich" ; - understand_V2 = dirV2 (irregV "verstehen" "versteht" "verstand" "verstände" "verstanden") ; + understand_V2 = + dirV2 (irregV "verstehen" "versteht" "verstand" "verstände" "verstanden") ; university_N = reg2N "Universitet" "Universiteten" feminine ; village_N = reg2N "Dorf" "Dörfer" neuter ; wait_V2 = mkV2 (regV "warten") (mkPrep "auf" accusative) ; @@ -222,4 +223,136 @@ lin yellow_A = regA "gelb" ; young_A = mkA "jung" "jünger" "jüngste" ; + +-- rest of Swadesh words: to be completed! + +{- + left_Ord = ss "link" ; -- should be the adjective! + right_Ord = ss "recht" ; -- adjective! + far_Adv = mkAdv "weit" ; + correct_A = (regA "recht") ; + dry_A = regA "trocken" ; + dull_A = regA "dull" ; + full_A = regA "voll" ; + heavy_A = regA "schwer" ; + near_A = regA "nahe" ; + rotten_A = (regA "rotten") ; + round_A = regA "rund" ; + sharp_A = regA "scharf" ; + smooth_A = regA "eben" ; + straight_A = regA "gerade" ; + wet_A = regA "nass" ; ---- + wide_A = regA "weit" ; + animal_N = regN "Tier" ; + ashes_N = regN "Asch" ; -- FIXME: plural only? + back_N = regN "Ruecke" ; + bark_N = regN "bark" ; + belly_N = regN "Mage" ; + blood_N = regN "Blut" ; + bone_N = regN "Bein" ; + breast_N = regN "Brust" ; + cloud_N = regN "Wolk" ; + day_N = regN "Tag" ; + dust_N = regN "dust" ; + ear_N = regN "Ohre" ; + earth_N = regN "Erde" ; + egg_N = regN "Ei" ; + eye_N = regN "Auge" ; + fat_N = regN "dick" ; + feather_N = regN "feather" ; + fingernail_N = regN "Nagel" ; + fire_N = regN "Feuer" ; + flower_N = regN "Blum" ; + fog_N = regN "fog" ; + foot_N = mk2N "foot" "feet" ; + forest_N = regN "forest" ; + grass_N = regN "grass" ; + guts_N = regN "gut" ; -- FIXME: no singular + hair_N = regN "hair" ; + hand_N = regN "hand" ; + head_N = regN "head" ; + heart_N = regN "heart" ; + horn_N = regN "horn" ; + husband_N = regN "Ehemann" ; + ice_N = regN "ice" ; + knee_N = regN "knee" ; + leaf_N = mk2N "leaf" "leaves" ; + leg_N = regN "leg" ; + liver_N = regN "liver" ; + louse_N = mk2N "louse" "lice" ; + mouth_N = regN "mouth" ; + name_N = regN "name" ; + neck_N = regN "neck" ; + night_N = regN "night" ; + nose_N = regN "nose" ; + person_N = regN "Persone" ; + rain_N = regN "regnen" ; + road_N = regN "Strasse" ; + root_N = regN "root" ; + rope_N = regN "rope" ; + salt_N = regN "salt" ; + sand_N = regN "sand" ; + seed_N = regN "seed" ; + skin_N = regN "skin" ; + sky_N = regN "sky" ; + smoke_N = regN "smoke" ; + snow_N = regN "snow" ; + stick_N = regN "stick" ; + tail_N = regN "tail" ; + tongue_N = regN "tongue" ; + tooth_N = regN "Zahn" ; + wife_N = regN "Frau" ; + wind_N = regN "wind" ; + wing_N = regN "wing" ; + worm_N = regN "worm" ; + year_N = regN "year" ; + blow_V = blow_V ; + breathe_V = dirV2 (regV "breathe") ; + burn_V = burn_V ; + dig_V = dig_V ; + fall_V = fall_V ; + float_V = regV "float" ; + flow_V = regV "flow" ; + fly_V = fly_V ; + freeze_V = freeze_V ; + give_V3 = dirV3 give_V "to" ; + laugh_V = regV "laugh" ; + lie_V = lie_V ; + play_V = regV "play" ; + sew_V = sew_V ; + sing_V = sing_V ; + sit_V = sit_V ; + smell_V = regV "smell" ; + spit_V = spit_V ; + stand_V = stand_V ; + swell_V = swell_V ; + swim_V = swim_V ; + think_V = think_V ; + turn_V = regV "turn" ; + vomit_V = regV "vomit" ; + + bite_V2 = dirV2 bite_V ; + count_V2 = dirV2 (regV "count") ; + cut_V2 = dirV2 cut_V ; + fear_V2 = dirV2 (regV "fear") ; + fight_V2 = dirV2 fight_V ; + hit_V2 = dirV2 hit_V ; + hold_V2 = dirV2 hold_V ; + hunt_V2 = dirV2 (regV "hunt") ; + kill_V2 = dirV2 (regV "kill") ; + pull_V2 = dirV2 (regV "pull") ; + push_V2 = dirV2 (regV "push") ; + rub_V2 = dirV2 (regDuplV "rub") ; + scratch_V2 = dirV2 (regV "scratch") ; + split_V2 = dirV2 split_V ; + squeeze_V2 = dirV2 (regV "squeeze") ; + stab_V2 = dirV2 (regDuplV "stab") ; + suck_V2 = dirV2 (regV "suck") ; + throw_V2 = dirV2 throw_V ; + tie_V2 = dirV2 (regV "tie") ; + wash_V2 = dirV2 (regV "wash") ; + wipe_V2 = dirV2 (regV "wipe") ; + +-} + } ; diff --git a/resource-1.0/italian/LexiconIta.gf b/resource-1.0/italian/LexiconIta.gf index 0676cd975..785771824 100644 --- a/resource-1.0/italian/LexiconIta.gf +++ b/resource-1.0/italian/LexiconIta.gf @@ -1,6 +1,7 @@ --# -path=.:../romance:../common:../abstract:../../prelude -concrete LexiconIta of Lexicon = CatIta ** open ParadigmsIta, BeschIta in { +concrete LexiconIta of Lexicon = CatIta ** open + MorphoIta, ParadigmsIta, BeschIta in { flags optimize=values ; @@ -223,12 +224,130 @@ lin put_V2 = dirV2 (verboV (mettere_57 "mettere")) ; stop_V = reflV (regV "fermare") ; jump_V = regV "saltare" ; -{- - here_Adv = mkAdv "quì" ; - here7to_Adv = mkAdv "quì" ; - here7from_Adv = mkAdv ["da quì"] ; - there_Adv = mkAdv "lì" ; - there7to_Adv = mkAdv "lì" ; - there7from_Adv = mkAdv ["da lì"] ; --} + + left_Ord = mkOrd (regA "sinistro") ; + right_Ord = mkOrd (regA "destro") ; + far_Adv = mkAdv "lontano" ; + correct_A = regA "corretto" ; + dry_A = regA "secco" ; + dull_A = regA "noioso" ; + full_A = regA "pieno" ; + heavy_A = regA "pesante" ; + near_A = regA "vicino" ; + rotten_A = regA "marcio" ; + round_A = regA "rotondo" ; + sharp_A = regA "aguzzo" ; + smooth_A = regA "liscio" ; + straight_A = regA "diretto" ; + wet_A = regA "bagnato" ; + wide_A = regA "largo" ; + animal_N = regN "animale" ; + ashes_N = regN "cenere" ; + back_N = regN "schiena" ; + bark_N = regN "corteccia" ; + belly_N = regN "pancia" ; + blood_N = regN "sangue" ; + bone_N = regN "osso" ; + breast_N = regN "seno" ; + cloud_N = regN "nuvola" ; + day_N = regN "giorno" ; + dust_N = regN "polvere" ; + ear_N = regN "orecchio" ; + earth_N = regN "terra" ; + egg_N = mkN "uovo" "uova" masculine ; -- fem in Pl + eye_N = regN "occhio" ; + fat_N = regN "grasso" ; + feather_N = regN "piuma" ; + fingernail_N = regN "unghia" ; + fire_N = regN "fuoco" ; + flower_N = regN "fiore" ; + fog_N = regN "nebbia" ; + foot_N = regN "piede" ; + forest_N = regN "bosco" ; + grass_N = regN "erba" ; + guts_N = regN "intestino" ; + hair_N = regN "capello" ; + hand_N = femN (regN "mano") ; + head_N = regN "testa" ; + heart_N = regN "cuore" ; + horn_N = regN "corno" ; + husband_N = regN "marito" ; + ice_N = regN "ghiaccio" ; + knee_N = regN "ginocchio" ; + leaf_N = regN "foglia" ; + leg_N = regN "gamba" ; + liver_N = regN "fegato" ; + louse_N = regN "pidocchio" ; + mouth_N = regN "bocca" ; + name_N = regN "nome" ; + neck_N = regN "collo" ; + night_N = femN (regN "notte") ; + nose_N = regN "naso" ; + person_N = regN "persona" ; + rain_N = regN "pioggia" ; + road_N = regN "strada" ; + root_N = femN (regN "radice") ; + rope_N = regN "corda" ; + salt_N = regN "sale" ; + sand_N = regN "sabbia" ; + seed_N = regN "seme" ; + skin_N = femN (regN "pelle") ; + sky_N = regN "cielo" ; + smoke_N = regN "fumo" ; + snow_N = femN (regN "neve") ; + stick_N = regN "bastone" ; + tail_N = regN "coda" ; + tongue_N = regN "lingua" ; + tooth_N = regN "dente" ; + wife_N = regN "donna" ; + wind_N = regN "vento" ; + wing_N = regN "ala" ; + worm_N = regN "verme" ; + year_N = regN "anno" ; + bite_V2 = dirV2 (verboV (esplodere_51 "mordere")) ; + blow_V = regV "soffiare" ; + burn_V = regV "bruciare" ; + count_V2 = dirV2 (regV "contare") ; + cut_V2 = dirV2 (regV "tagliare") ; + dig_V = regV "scavare" ; + fall_V = essereV (verboV (cadere_28 "cadere")) ; + fear_V2 = dirV2 (verboV (temere_20 "temere")) ; + fight_V2 = dirV2 (regV "lottare") ; + float_V = regV "galleggiare" ; + flow_V = verboV (finire_100 "fluire") ; + fly_V = regV "volare" ; + freeze_V = regV "gelare" ; + give_V3 = dirdirV3 (verboV (dare_15 "dare")) ; + hit_V2 = dirV2 (regV "colpire") ; + hold_V2 = dirV2 (verboV (venire_110 "tenire")) ; + hunt_V2 = dirV2 (regV "cacciare") ; + kill_V2 = dirV2 (verboV (ridere_74 "uccidere")) ; + laugh_V = verboV (ridere_74 "ridere") ; + lie_V = verboV (piacere_64 "giacere") ; + play_V = regV "giocare" ; + pull_V2 = dirV2 (regV "tirare") ; + push_V2 = dirV2 (verboV (cingere_31 "spingere")) ; + rub_V2 = dirV2 (regV "strofinare") ; + scratch_V2 = dirV2 (regV "graffiare") ; + sew_V = verboV (cucire_103 "cucire") ; + sing_V = regV "cantare" ; + sit_V = reflV (verboV (sedere_84 "sedere")) ; + smell_V = verboV (sentire_99 "sentire") ; + spit_V = regV "sputare" ; + split_V2 = dirV2 (verboV (ridere_74 "dividere")) ; + squeeze_V2 = dirV2 (verboV (temere_20 "spremere")) ; + stab_V2 = dirV2 (regV "pugnalare") ; + stand_V = verboV (stare_16 "stare") ; ---- in piedi + suck_V2 = dirV2 (regV "succhiare") ; + swell_V = regV "gonfiare" ; + swim_V = regV "nuotare" ; + think_V = regV "pensare" ; + throw_V2 = dirV2 (regV "gettare") ; + tie_V2 = dirV2 (regV "legare") ; + turn_V = regV "tornare" ; + vomit_V = regV "vomitare" ; + wash_V2 = dirV2 (regV "lavare") ; + wipe_V2 = dirV2 (regV "asciugare") ; + breathe_V = (regV "respirare") ; + } ; diff --git a/resource-1.0/minimal/MkLex.hs b/resource-1.0/minimal/MkLex.hs index 3260843d5..94525126f 100644 --- a/resource-1.0/minimal/MkLex.hs +++ b/resource-1.0/minimal/MkLex.hs @@ -1,12 +1,26 @@ module MkLexicon where import Char +import qualified Data.Set as S + +-- apply function o to each line in file f allLines o f = do s <- readFile f mapM_ (putStrLn . o) (filter noComm (lines s)) +-- take each line in file k as a key, and choose those lines in file f +-- that match any of the keys (i.e. whose first word matches it) +chooseKeys k f = do + keys <- readFile k >>= return . (S.fromList . lines) + let choose line = case words line of + w:_ -> S.member w keys + _ -> False + old <- readFile f >>= return . lines + mapM_ (putStrLn . drop 2) $ filter choose old -- to remove extra indent + + -- discard comments and empty lines noComm s = case s of @@ -141,3 +155,10 @@ getAllThose sought given = do gi <- readFile given let so = [w | l <- lines s, w:_ <- [words l]] mapM_ putStrLn $ allThose so $ lines gi + + +-- Swadesh 7/3/2006: replace string defs with f = f ; + +reuseLex line = case words line of + w : "=" : _ | elem '"' line -> " " ++ w ++ " = " ++ w ++ " ;" + _ -> line diff --git a/resource-1.0/norwegian/LexiconNor.gf b/resource-1.0/norwegian/LexiconNor.gf index 9dd4dd0b8..ed9d351c1 100644 --- a/resource-1.0/norwegian/LexiconNor.gf +++ b/resource-1.0/norwegian/LexiconNor.gf @@ -1,6 +1,7 @@ --# -path=.:../scandinavian:../common:../abstract:../../prelude -concrete LexiconNor of Lexicon = CatNor ** open ParadigmsNor, IrregNor in { +concrete LexiconNor of Lexicon = CatNor ** + open Prelude, ParadigmsNor, IrregNor in { flags startcat=Phr ; lexer=textlit ; unlexer=text ; optimize=values ; @@ -221,14 +222,133 @@ lin put_V2 = mkV2 (irregV "sette" "satte" "satt") [] ; stop_V = regV "stanse" ; jump_V = regV "hoppe" ; -{- - here_Adv = mkAdv "her" ; - here7to_Adv = mkAdv "hit" ; - here7from_Adv = mkAdv ["herfra"] ; - there_Adv = mkAdv "der" ; - there7to_Adv = mkAdv "dit" ; - there7from_Adv = mkAdv ["derfra"] ; --} + + left_Ord = {s = "venstre" ; isDet = True} ; + right_Ord = {s = "høyre" ; isDet = True} ; + far_Adv = mkAdv "fjern" ; + correct_A = regA "riktig" ; + dry_A = mk2A "tørr" "tørt" ; + dull_A = regA "sløv" ; + full_A = regA "full" ; + heavy_A = irregADeg "tung" "tyngre" "tyngst" ; + near_A = mkADeg "nære" "nære" "nære" "nærmere" "nærmest" ; + rotten_A = mk3ADeg "råtten" "råttent" "råtne" ; + round_A = regA "rund" ; + sharp_A = mk2A "kvass" "kvast" ; + smooth_A = mk2A "slett" "slett" ; + straight_A = regA "rak" ; + wet_A = regA "våt" ; + wide_A = regA "bred" ; + animal_N = mk2N "dyr" "dyret" ; + ashes_N = mk2N "aske" "aska" ; + back_N = mk2N "rygg" "ryggen" ; + bark_N = mk2N "bark" "barken" ; + belly_N = mk2N "mage" "magen" ; + blood_N = mk2N "blod" "blodet" ; + bone_N = mk2N "bein" "beinet" ; + breast_N = mk2N "bryst" "brystet" ; + cloud_N = mk2N "sky" "skya" ; + day_N = mk2N "dag" "dagen" ; + dust_N = mk2N "støv" "støvet" ; + ear_N = mk2N "øre" "øret" ; + earth_N = mk2N "jord" "jorda" ; + egg_N = mk2N "egg" "egget" ; + eye_N = mkN "øye" "øyet" "øyne" "øynene" ; + fat_N = mk2N "fett" "fettet" ; + feather_N = mk2N "fjør" "fjøra" ; + fingernail_N = mk2N "negl" "neglen" ; + fire_N = mk2N "ild" "ilden" ; + flower_N = mk2N "blomst" "blomsten" ; + fog_N = mk2N "tåke" "tåka" ; + foot_N = mk2N "fot" "føtter" ; + forest_N = mk2N "skog" "skogen" ; + grass_N = mk2N "gras" "graset" ; + guts_N = mk2N "tarm" "tarmen" ; ---- involler + hair_N = mk2N "hår" "håret" ; + hand_N = mk2N "hånd" "hånden" ; + head_N = mk2N "hode" "hodet" ; + heart_N = mk2N "hjerte" "hjertet" ; + horn_N = mk2N "horn" "hornet" ; + husband_N = mkN "ektemann" "ektemannen" "ektemenn" "ektemennen" ; + ice_N = mk2N "is" "isen" ; + knee_N = mkN "kne" "kneet" "knær" "knæne" ; + leaf_N = mk2N "løv" "løvet" ; + leg_N = mk2N "bein" "beinet" ; + liver_N = mkN "lever" "leveren" "levrer" "levrene" ; + louse_N = mk2N "lus" "lusa" ; + mouth_N = mk2N "munn" "munnen" ; + name_N = mk2N "navn" "navnet" ; + neck_N = mk2N "nakke" "nakken" ; + night_N = mkN "natt" "natta" "netter" "nettene" ; + nose_N = mk2N "nese" "nesen" ; + person_N = mk2N "person" "personen" ; + rain_N = mk2N "regn" "regnet" ; + road_N = mk2N "vei" "veien" ; + root_N = mkN "rot" "rota" "røtter" "røttene" ; + rope_N = mk2N "tau" "tauet" ; + salt_N = mk2N "salt" "saltet" ; + sand_N = mk2N "sand" "sanden" ; + seed_N = mk2N "frø" "frøet" ; + skin_N = mk2N "skinn" "skinnet" ; + sky_N = mkN "himmel" "himmelen" "himler" "himlene" ; + smoke_N = mk2N "røyk" "røyken" ; + snow_N = mk2N "snø" "snøen" ; + stick_N = mk2N "pinne" "pinnen" ; + tail_N = mk2N "hale" "halen" ; + tongue_N = mk2N "tunge" "tunga" ; + tooth_N = mkN "tann" "tanna" "tenner" "tennene" ; + wife_N = mk2N "kone" "kona" ; + wind_N = mk2N "vind" "vinden" ; + wing_N = mk2N "vinge" "vingen" ; + worm_N = mk2N "mark" "marken" ; + year_N = mk2N "år" "året" ; + bite_V2 = dirV2 (IrregNor.bite_V) ; + blow_V = mk2V "blåse" "blåste" ; + burn_V = brenne_V ; + count_V2 = dirV2 (regV "regne") ; + cut_V2 = dirV2 (skjære_V) ; + dig_V = mk2V "grave" "gravde" ; + fall_V = falle_V ; + fear_V2 = dirV2 (regV "frykte") ; + fight_V2 = dirV2 (slåss_V) ; + float_V = flyte_V ; + flow_V = renne_V ; + fly_V = fly_V ; + freeze_V = fryse_V ; + give_V3 = dirdirV3 gi_V ; + hit_V2 = dirV2 (slå_V) ; + hold_V2 = dirV2 (holde_V) ; + hunt_V2 = dirV2 (regV "jakte") ; + kill_V2 = dirV2 (mk2V "drepe" "drepte") ; + laugh_V = mkV "le" "ler" "les" "lo" "ledd" "le" ; + lie_V = ligge_V ; + play_V = mk2V "leke" "lekte" ; + pull_V2 = dirV2 (dra_V) ; + push_V2 = dirV2 (irregV "skyve" "skjøv" "skjøvet") ; + rub_V2 = dirV2 (gni_V) ; + scratch_V2 = dirV2 (regV "klø") ; + sew_V = mk2V "sy" "sydde" ; + sing_V = synge_V ; + sit_V = sitte_V ; + smell_V = regV "lukte" ; + spit_V = regV "spytte" ; + split_V2 = dirV2 (mk2V "kløyve" "kløyvde") ; + squeeze_V2 = dirV2 (mk2V "klemme" "klemte") ; + stab_V2 = dirV2 (stikke_V) ; + stand_V = stå_V ; + suck_V2 = dirV2 (suge_V) ; + swell_V = partV (regV "hovne") "opp" ; + swim_V = regV "simme" ; + think_V = mk2V "tenke" "tenkte" ; + throw_V2 = dirV2 (regV "kaste") ; + tie_V2 = dirV2 (regV "knytte") ; + turn_V = mk2V "vende" "vendte" ; + vomit_V = partV (regV "kaste") "opp" ; + wash_V2 = dirV2 (regV "vaske") ; + wipe_V2 = dirV2 (regV "tørke") ; + breathe_V = regV "puste" ; + + } ; -- a" -> e" 86 diff --git a/resource-1.0/romance/CommonRomance.gf b/resource-1.0/romance/CommonRomance.gf index 8ae45774e..1b5769be2 100644 --- a/resource-1.0/romance/CommonRomance.gf +++ b/resource-1.0/romance/CommonRomance.gf @@ -168,6 +168,10 @@ oper vpAgrNone : VPAgr = VPAgrClit (aagr Masc Sg) ; + oper + mkOrd : {s : Degree => AForm => Str} -> {s : AAgr => Str} ; + mkOrd x = {s = \\ag => x.s ! Posit ! AF ag.g ag.n} ; + param VPAgr = VPAgrSubj -- elle est partie, elle s'est vue @@ -189,5 +193,6 @@ oper ext : Polarity => Str ; -- que je dors / que je dorme } ; + } diff --git a/resource-1.0/spanish/LexiconSpa.gf b/resource-1.0/spanish/LexiconSpa.gf index bb01b102a..659fd8237 100644 --- a/resource-1.0/spanish/LexiconSpa.gf +++ b/resource-1.0/spanish/LexiconSpa.gf @@ -1,6 +1,7 @@ --# -path=.:../romance:../common:../abstract:../../prelude -concrete LexiconSpa of Lexicon = CatSpa ** open ParadigmsSpa, BeschSpa in { +concrete LexiconSpa of Lexicon = CatSpa ** open + MorphoSpa, ParadigmsSpa, BeschSpa in { flags optimize=values ; @@ -222,4 +223,130 @@ lin stop_V = regV "parar" ; jump_V = regV "saltar" ; + left_Ord = mkOrd (regA "izquierda") ; + right_Ord = mkOrd (regA "derecha") ; + far_Adv = mkAdv "lejos" ; ----? + correct_A = regA "correcto" ; + dry_A = regA "seco" ; + dull_A = regA "desafilado" ; + full_A = regA "lleno" ; + heavy_A = regA "pesado" ; + near_A = regA "cerca" ; + rotten_A = regA "podrido" ; + round_A = regA "redondo" ; + sharp_A = regA "filoso" ; -- afilado, puntiagudo + smooth_A = regA "liso" ; -- suave + straight_A = regA "directo" ; + wet_A = regA "mojado" ; + wide_A = regA "ancho" ; -- extenso + animal_N = regN "animal" ; -- masc (sometimes fem when adj) + ashes_N = regN "ceniza" ; + back_N = regN "espalda" ; + bark_N = regN "corteza" ; + belly_N = regN "panza" ; -- barriga + blood_N = femN (regN "sangre") ; + bone_N = regN "hueso" ; + breast_N = regN "seno" ; -- pecho + cloud_N = femN (regN "nube") ; + day_N = mascN (regN "día") ; + dust_N = regN "polvo" ; + ear_N = regN "oreja" ; + earth_N = regN "tierra" ; + egg_N = regN "huevo" ; + eye_N = regN "ojo" ; + fat_N = regN "grasa" ; + feather_N = regN "pluma" ; + fingernail_N = regN "uña" ; + fire_N = regN "fuego" ; + flower_N = femN (regN "flor") ; + fog_N = regN "niebla" ; + foot_N = regN "pie" ; + forest_N = regN "bosque" ; + grass_N = regN "pasto" ; -- hierba, césped (masc) + guts_N = regN "tripa" ; -- gut=intestino ---- pl.t. tripas + hair_N = regN "cabello" ; -- pelo + hand_N = femN (regN "mano") ; + head_N = regN "cabeza" ; + heart_N = mkN "corazón" "corazones" masculine ; + horn_N = regN "cuerno" ; + husband_N = regN "marido" ; -- esposo + ice_N = regN "hielo" ; + knee_N = regN "rodilla" ; + leaf_N = regN "hoja" ; + leg_N = regN "pierna" ; + liver_N = regN "hígado" ; + louse_N = regN "piojo" ; + mouth_N = regN "boca" ; + name_N = regN "nombre" ; + neck_N = regN "cuello" ; + night_N = femN (regN "noche") ; + nose_N = femN (regN "nariz") ; + person_N = regN "persona" ; + rain_N = regN "lluvia" ; + road_N = femN (regN "calle") ; -- camino + root_N = femN (regN "raíz") ; + rope_N = regN "cuerda" ; + salt_N = femN (regN "sal") ; + sand_N = regN "arena" ; + seed_N = regN "semilla" ; + skin_N = femN (regN "piel") ; -- fem + sky_N = regN "cielo" ; + smoke_N = regN "humo" ; + snow_N = femN (regN "nieve") ; -- fem + stick_N = mkN "bastón" "bastones" masculine ; -- palo + tail_N = regN "cola" ; + tongue_N = regN "lengua" ; + tooth_N = regN "diente" ; + wife_N = regN "esposa" ; + wind_N = regN "viento" ; + wing_N = regN "ala" ; + worm_N = regN "gusano" ; -- lombriz (fem) + year_N = regN "año" ; + bite_V2 = dirV2 (verboV (morder_50b "morder")) ; + blow_V = regV "soplar" ; + burn_V = regV "quemar" ; + count_V2 = dirV2 (verboV (contar_38b "contar")) ; + cut_V2 = dirV2 (regV "cortar") ; + dig_V = regV "escarbar" ; + fall_V = verboV (caer_20 "caer") ; + fear_V2 = dirV2 (regV "temer") ; + fight_V2 = dirV2 (regV "pelear") ; + float_V = regV "flotar" ; + flow_V = verboV (influir_45 "fluir") ; -- circular + fly_V = regV "volar" ; + freeze_V = regV "congelar" ; + give_V3 = dirdirV3 (verboV (dar_27 "dar")) ; + hit_V2 = dirV2 (regV "golpear") ; + hold_V2 = dirV2 (verboV (tener_4 "tener")) ; + hunt_V2 = dirV2 (regV "cazar") ; + kill_V2 = dirV2 (regV "matar") ; + laugh_V = regV "reir" ; ----V reír_67 + lie_V = reflV (regV "acostar") ; -- "acostarse" + play_V = regV "jugar" ; + pull_V2 = dirV2 (regV "tirar") ; + push_V2 = dirV2 (regV "empujar") ; + rub_V2 = dirV2 (regV "resfregar") ; + scratch_V2 = dirV2 (regV "rascar") ; + sew_V = regV "coser" ; + sing_V = regV "cantar" ; + sit_V = reflV (regV "sentar") ; + smell_V = verboV (oler_52 "oler") ; + spit_V = regV "escupir" ; + split_V2 = dirV2 (regV "separar") ; -- dividir,) ; + squeeze_V2 = dirV2 (regV "exprimir") ; + stab_V2 = dirV2 (regV "apuñalar") ; + stand_V = verboV (estar_2 "estar") ; ---- "estar de pie" ; + suck_V2 = dirV2 (regV "chupar") ; + swell_V = regV "tragar" ; + swim_V = regV "nadar" ; + think_V = regV "pensar" ; + throw_V2 = dirV2 (regV "tirar") ; + tie_V2 = dirV2 (regV "atar") ; + turn_V = regV "doblar" ; + vomit_V = regV "vomitar" ; + wash_V2 = dirV2 (regV "lavar") ; + wipe_V2 = dirV2 (regV "secar") ; + breathe_V = (regV "respirar") ; + + } ; diff --git a/resource-1.0/swedish/LexiconSwe.gf b/resource-1.0/swedish/LexiconSwe.gf index 2b8087c7f..d0cbe996c 100644 --- a/resource-1.0/swedish/LexiconSwe.gf +++ b/resource-1.0/swedish/LexiconSwe.gf @@ -1,6 +1,7 @@ --# -path=.:../scandinavian:../common:../abstract:../../prelude -concrete LexiconSwe of Lexicon = CatSwe ** open ParadigmsSwe, IrregSwe in { +concrete LexiconSwe of Lexicon = CatSwe ** + open Prelude, ParadigmsSwe, IrregSwe in { flags optimize=values ; @@ -223,4 +224,130 @@ lin stop_V = regV "stanna" ; jump_V = regV "hoppa" ; + left_Ord = {s = "vänstra" ; isDet = True} ; + right_Ord = {s = "högra" ; isDet = True} ; + far_Adv = mkAdv "långt" ; + correct_A = regA "riktig" ; + dry_A = regA "torr" ; + dull_A = mk2A "slö" "slött"; + full_A = regA "full" ; + heavy_A = irregA "tung" "tyngre" "tyngst" ; + near_A = mkA "nära" "nära" "nära" "nära" "närmare" "närmast" "närmaste" ; + rotten_A = mk3A "rutten" "ruttet" "ruttna" ; + round_A = regA "rund" ; + sharp_A = regA "vass" ; + smooth_A = regA "slät" ; + straight_A = regA "rak" ; + wet_A = regA "våt" ; + wide_A = mk2A "bred" "brett" ; + animal_N = mk2N "djur" "djur" ; + ashes_N = mk2N "aska" "askor" ; + back_N = mk2N "rygg" "ryggar" ; + bark_N = mk2N "bark" "barkar" ; + belly_N = mk2N "mage" "magar" ; + blood_N = mk2N "blod" "blod" ; + bone_N = mk2N "ben" "ben" ; + breast_N = mk2N "bröst" "bröst" ; + cloud_N = mk2N "moln" "moln" ; + day_N = mk2N "dag" "dagar" ; + dust_N = mk2N "damm" "damm" ; + ear_N = mkN "öra" "örat" "öron" "öronen" ; + earth_N = mk2N "jord" "jordar" ; + egg_N = mk2N "ägg" "ägg" ; + eye_N = mkN "öga" "ögat" "ögon" "ögonen" ; + fat_N = mk2N "fett" "fett" ; + feather_N = mk2N "fjäder" "fjädrar" ; + fingernail_N = mkN "nagel" "nageln" "naglar" "naglarna"; + fire_N = mk2N "eld" "eldar" ; + flower_N = mk2N "blomma" "blommor" ; + fog_N = mk2N "dimma" "dimmor" ; + foot_N = mk2N "fot" "fötter" ; + forest_N = mk2N "skog" "skogar" ; + grass_N = mk2N "gräs" "gräs" ; + guts_N = mk2N "inälva" "inälvor" ; + hair_N = mk2N "hår" "hår" ; + hand_N = mk2N "hand" "händer" ; + head_N = mkN "huvud" "huvudet" "huvuden" "huvudena" ; + heart_N = mkN "hjärta" "hjärtat" "hjärtan" "hjärtana" ; + horn_N = mk2N "horn" "horn" ; + husband_N = (mk2N "make" "makar") ; + ice_N = mk2N "is" "isar" ; + knee_N = mkN "knä" "knäet" "knän" "knäna" ; + leaf_N = mk2N "löv" "löv" ; + leg_N = mk2N "ben" "ben" ; + liver_N = mkN "lever" "levern" "levrar" "levrarna"; + louse_N = mkN "lus" "lusen" "löss" "lössen" ; + mouth_N = mkN "mun" "munnen" "munnar" "munnarna" ; + name_N = mk2N "namn" "namn" ; + neck_N = mk2N "nacke" "nackar" ; + night_N = mk2N "natt" "nätter" ; + nose_N = mk2N "näsa" "näsor" ; + person_N = mk2N "person" "personer" ; + rain_N = mk2N "regn" "regn" ; + road_N = mk2N "väg" "vägar" ; + root_N = mk2N "rot" "rötter" ; + rope_N = mk2N "rep" "rep" ; + salt_N = mkN "salt" "saltet" "salter" "salterna"; + sand_N = mk2N "sand" "sander" ; + seed_N = mkN "frö" "fröet" "frön" "fröna" ; + skin_N = mk2N "skinn" "skinn" ; + sky_N = mk2N "himmel" "himlar" ; + smoke_N = mk2N "rök" "rökar" ; + snow_N = mkN "snö" "snön" "snöer" "snöerna" ; + stick_N = mk2N "pinne" "pinnar" ; + tail_N = mk2N "svans" "svansar" ; + tongue_N = mk2N "tunga" "tungor" ; + tooth_N = mk2N "tand" "tänder" ; + wife_N = mk2N "fru" "fruar" ; + wind_N = mk2N "vind" "vindar" ; + wing_N = mk2N "vinge" "vingar" ; + worm_N = mk2N "mask" "maskar" ; + year_N = mk2N "år" "år" ; + bite_V2 = dirV2 (bita_V) ; + blow_V = mk2V "blåsa" "blåste" ; + burn_V = brinna_V ; -- FIXME: bränna? + count_V2 = dirV2 (regV "räkna") ; + cut_V2 = dirV2 (skära_V) ; + dig_V = mk2V "gräva" "grävde" ; + fall_V = falla_V ; + fear_V2 = dirV2 (regV "frukta") ; + float_V = flyta_V ; + flow_V = rinna_V ; + fly_V = flyga_V ; + freeze_V = frysa_V ; + give_V3 = dirV3 giva_V "till"; + hit_V2 = dirV2 (slå_V) ; + hold_V2 = dirV2 (hålla_V) ; + hunt_V2 = dirV2 (regV "jaga") ; + kill_V2 = dirV2 (regV "döda") ; + laugh_V = regV "skratta" ; + lie_V = ligga_V ; + play_V = mk2V "leka" "lekte" ; + pull_V2 = dirV2 (draga_V) ; + push_V2 = dirV2 (mk2V "trycka" "tryckte") ; + rub_V2 = dirV2 (gnida_V) ; + scratch_V2 = dirV2 (regV "klia") ; + sew_V = sy_V ; + sing_V = sjunga_V ; + sit_V = sitta_V ; + smell_V = regV "lukta" ; + spit_V = regV "spotta" ; + split_V2 = dirV2 (klyva_V) ; + squeeze_V2 = dirV2 (klämma_V) ; + stab_V2 = dirV2 (sticka_V) ; + stand_V = stå_V ; + suck_V2 = dirV2 (suga_V) ; + swell_V = svälla_V ; + swim_V = regV "simma" ; + think_V = mk2V "tänka" "tänkte" ; + throw_V2 = dirV2 (regV "kasta") ; + tie_V2 = dirV2 (knyta_V) ; + turn_V = vända_V ; + vomit_V = mk2V "spy" "spydde" ; + wash_V2 = dirV2 (regV "tvätta") ; + wipe_V2 = dirV2 (regV "torka") ; + + breathe_V = depV (regV "anda") ; + fight_V2 = mkV2 (mkV "slåss" "slåss" "slåss" "slogs" "slagits" "slagen") "med" ; + } ;