howto document updated

This commit is contained in:
aarne
2006-01-25 13:58:50 +00:00
parent 9dc877cead
commit a02731acc4
3 changed files with 169 additions and 38 deletions

View File

@@ -0,0 +1,110 @@
digraph {
size = "12,12" ;
LangGer [style = "dashed", shape = "box", URL = "LangGer.gf"];
LangGer -> NounGer [style = "solid"];
LangGer -> VerbGer [style = "solid"];
LangGer -> ConjunctionGer [style = "solid"];
LangGer -> StructuralGer [style = "solid"];
LangGer -> LexiconGer [style = "solid"];
LangGer -> Lang [arrowhead = "empty", style = "dashed"];
Lang [style = "solid", shape = "ellipse", URL = "Lang.gf"];
Lang -> Noun [style = "solid"];
Lang -> Verb [style = "solid"];
Lang -> Conjunction [style = "solid"];
Lang -> Structural [style = "solid"];
Lang -> Lexicon [style = "solid"];
NounGer [style = "dashed", shape = "box", URL = "NounGer.gf"];
NounGer -> CatGer [style = "solid"];
NounGer -> ResGer [style = "dotted"];
NounGer -> Prelude [style = "dotted"];
NounGer -> Noun [arrowhead = "empty", style = "dashed"];
Noun [style = "solid", shape = "ellipse", URL = "Noun.gf"];
Noun -> Cat [style = "solid"];
VerbGer [style = "dashed", shape = "box", URL = "VerbGer.gf"];
VerbGer -> CatGer [style = "solid"];
VerbGer -> Prelude [style = "dotted"];
VerbGer -> ResGer [style = "dotted"];
VerbGer -> Verb [arrowhead = "empty", style = "dashed"];
Verb [style = "solid", shape = "ellipse", URL = "Verb.gf"];
Verb -> Cat [style = "solid"];
ConjunctionGer [style = "dashed", shape = "box", URL = "ConjunctionGer.gf"];
ConjunctionGer -> CatGer [style = "solid"];
ConjunctionGer -> ResGer [style = "dotted"];
ConjunctionGer -> Coordination [style = "dotted"];
ConjunctionGer -> Prelude [style = "dotted"];
ConjunctionGer -> Conjunction [arrowhead = "empty", style = "dashed"];
Conjunction [style = "solid", shape = "ellipse", URL = "Conjunction.gf"];
Conjunction -> Cat [style = "solid"];
Coordination [style = "dashed", shape = "ellipse", URL = "Coordination.gf"];
Coordination -> Prelude [style = "dotted"];
StructuralGer [style = "dashed", shape = "box", URL = "StructuralGer.gf"];
StructuralGer -> CatGer [style = "solid"];
StructuralGer -> MorphoGer [style = "dotted"];
StructuralGer -> Prelude [style = "dotted"];
StructuralGer -> Structural [arrowhead = "empty", style = "dashed"];
Structural [style = "solid", shape = "ellipse", URL = "Structural.gf"];
Structural -> Cat [style = "solid"];
LexiconGer [style = "dashed", shape = "box", URL = "LexiconGer.gf"];
LexiconGer -> CatGer [style = "solid"];
LexiconGer -> Prelude [style = "dotted"];
LexiconGer -> ParadigmsGer [style = "dotted"];
LexiconGer -> Lexicon [arrowhead = "empty", style = "dashed"];
Lexicon [style = "solid", shape = "ellipse", URL = "Lexicon.gf"];
Lexicon -> Cat [style = "solid"];
ParadigmsGer [style = "dashed", shape = "ellipse", URL = "ParadigmsGer.gf"];
ParadigmsGer -> Predef [style = "dotted"];
ParadigmsGer -> Prelude [style = "dotted"];
ParadigmsGer -> MorphoGer [style = "dotted"];
ParadigmsGer -> CatGer [style = "dotted"];
CatGer [style = "dashed", shape = "box", URL = "CatGer.gf"];
CatGer -> TenseX [style = "solid"];
CatGer -> ResGer [style = "dotted"];
CatGer -> Prelude [style = "dotted"];
CatGer -> Cat [arrowhead = "empty", style = "dashed"];
Cat [style = "solid", shape = "ellipse", URL = "Cat.gf"];
Cat -> Tense [style = "solid"];
TenseX [style = "dashed", shape = "box", URL = "TenseX.gf"];
TenseX -> ParamX [style = "dotted"];
TenseX -> Tense [arrowhead = "empty", style = "dashed"];
Tense [style = "solid", shape = "ellipse", URL = "Tense.gf"];
MorphoGer [style = "dashed", shape = "ellipse", URL = "MorphoGer.gf"];
MorphoGer -> ResGer [style = "solid"];
MorphoGer -> Prelude [style = "dotted"];
MorphoGer -> Predef [style = "dotted"];
ResGer [style = "dashed", shape = "ellipse", URL = "ResGer.gf"];
ResGer -> ParamGer [style = "solid"];
ResGer -> Prelude [style = "dotted"];
ParamGer [style = "dashed", shape = "ellipse", URL = "ParamGer.gf"];
ParamGer -> ParamX [style = "solid"];
ParamX [style = "dashed", shape = "ellipse", URL = "ParamX.gf"];
ParamX -> Prelude [style = "dotted"];
Prelude [style = "dashed", shape = "ellipse", URL = "Prelude.gf"];
Prelude -> Predef [style = "dotted"];
Predef [style = "dashed", shape = "ellipse", URL = "Predef.gf"];
}

View File

@@ -7,7 +7,7 @@
<P ALIGN="center"><CENTER><H1>Resource grammar writing HOWTO</H1> <P ALIGN="center"><CENTER><H1>Resource grammar writing HOWTO</H1>
<FONT SIZE="4"> <FONT SIZE="4">
<I>Author: Aarne Ranta &lt;aarne (at) cs.chalmers.se&gt;</I><BR> <I>Author: Aarne Ranta &lt;aarne (at) cs.chalmers.se&gt;</I><BR>
Last update: Wed Jan 25 14:52:10 2006 Last update: Wed Jan 25 14:58:45 2006
</FONT></CENTER> </FONT></CENTER>
<P></P> <P></P>
@@ -19,32 +19,33 @@ Last update: Wed Jan 25 14:52:10 2006
<LI><A HREF="#toc2">Phrase category modules</A> <LI><A HREF="#toc2">Phrase category modules</A>
<LI><A HREF="#toc3">Infrastructure modules</A> <LI><A HREF="#toc3">Infrastructure modules</A>
<LI><A HREF="#toc4">Lexical modules</A> <LI><A HREF="#toc4">Lexical modules</A>
<LI><A HREF="#toc5">A reduced API</A>
</UL> </UL>
<LI><A HREF="#toc5">Phases of the work</A> <LI><A HREF="#toc6">Phases of the work</A>
<UL> <UL>
<LI><A HREF="#toc6">Putting up a directory</A> <LI><A HREF="#toc7">Putting up a directory</A>
<LI><A HREF="#toc7">The develop-test cycle</A> <LI><A HREF="#toc8">The develop-test cycle</A>
<LI><A HREF="#toc8">Resource modules used</A> <LI><A HREF="#toc9">Resource modules used</A>
<LI><A HREF="#toc9">Morphology and lexicon</A> <LI><A HREF="#toc10">Morphology and lexicon</A>
<LI><A HREF="#toc10">Lock fields</A> <LI><A HREF="#toc11">Lock fields</A>
<LI><A HREF="#toc11">Lexicon construction</A> <LI><A HREF="#toc12">Lexicon construction</A>
</UL> </UL>
<LI><A HREF="#toc12">Inside grammar modules</A> <LI><A HREF="#toc13">Inside grammar modules</A>
<UL> <UL>
<LI><A HREF="#toc13">The category system</A> <LI><A HREF="#toc14">The category system</A>
<LI><A HREF="#toc14">Phrase category modules</A> <LI><A HREF="#toc15">Phrase category modules</A>
<LI><A HREF="#toc15">Resource modules</A> <LI><A HREF="#toc16">Resource modules</A>
<LI><A HREF="#toc16">Lexicon</A> <LI><A HREF="#toc17">Lexicon</A>
</UL> </UL>
<LI><A HREF="#toc17">Lexicon extension</A> <LI><A HREF="#toc18">Lexicon extension</A>
<UL> <UL>
<LI><A HREF="#toc18">The irregularity lexicon</A> <LI><A HREF="#toc19">The irregularity lexicon</A>
<LI><A HREF="#toc19">Lexicon extraction from a word list</A> <LI><A HREF="#toc20">Lexicon extraction from a word list</A>
<LI><A HREF="#toc20">Lexicon extraction from raw text data</A> <LI><A HREF="#toc21">Lexicon extraction from raw text data</A>
<LI><A HREF="#toc21">Extending the resource grammar API</A> <LI><A HREF="#toc22">Extending the resource grammar API</A>
</UL> </UL>
<LI><A HREF="#toc22">Writing an instance of parametrized resource grammar implementation</A> <LI><A HREF="#toc23">Writing an instance of parametrized resource grammar implementation</A>
<LI><A HREF="#toc23">Parametrizing a resource grammar implementation</A> <LI><A HREF="#toc24">Parametrizing a resource grammar implementation</A>
</UL> </UL>
<P></P> <P></P>
@@ -166,8 +167,17 @@ application grammars are likely to use the resource in different ways for
different languages. different languages.
</P> </P>
<A NAME="toc5"></A> <A NAME="toc5"></A>
<H2>Phases of the work</H2> <H3>A reduced API</H3>
<P>
If you want to experiment with a small subset of the resource API first,
try out the module
<A HREF="http://www.cs.chalmers.se/~aarne/GF/doc/tutorial/resource/Syntax.gf">Syntax</A>
explained in the
<A HREF="http://www.cs.chalmers.se/~aarne/GF/doc/tutorial/gf-tutorial2.html">GF Tutorial</A>.
</P>
<A NAME="toc6"></A> <A NAME="toc6"></A>
<H2>Phases of the work</H2>
<A NAME="toc7"></A>
<H3>Putting up a directory</H3> <H3>Putting up a directory</H3>
<P> <P>
Unless you are writing an instance of a parametrized implementation Unless you are writing an instance of a parametrized implementation
@@ -246,7 +256,7 @@ as e.g. <CODE>VerbGer</CODE>.
<IMG ALIGN="middle" SRC="German.png" BORDER="0" ALT=""> <IMG ALIGN="middle" SRC="German.png" BORDER="0" ALT="">
</OL> </OL>
<A NAME="toc7"></A> <A NAME="toc8"></A>
<H3>The develop-test cycle</H3> <H3>The develop-test cycle</H3>
<P> <P>
The real work starts now. The order in which the <CODE>Phrase</CODE> modules The real work starts now. The order in which the <CODE>Phrase</CODE> modules
@@ -311,7 +321,7 @@ follow soon. (You will found out that these explanations involve
a rational reconstruction of the live process! Among other things, the a rational reconstruction of the live process! Among other things, the
API was changed during the actual process to make it more intuitive.) API was changed during the actual process to make it more intuitive.)
</P> </P>
<A NAME="toc8"></A> <A NAME="toc9"></A>
<H3>Resource modules used</H3> <H3>Resource modules used</H3>
<P> <P>
These modules will be written by you. These modules will be written by you.
@@ -336,7 +346,7 @@ package.
<LI><CODE>Predefined</CODE>: general-purpose operations with hard-coded definitions <LI><CODE>Predefined</CODE>: general-purpose operations with hard-coded definitions
</UL> </UL>
<A NAME="toc9"></A> <A NAME="toc10"></A>
<H3>Morphology and lexicon</H3> <H3>Morphology and lexicon</H3>
<P> <P>
When the implementation of <CODE>Test</CODE> is complete, it is time to When the implementation of <CODE>Test</CODE> is complete, it is time to
@@ -416,7 +426,7 @@ These constants are defined in terms of parameter types and constructors
in <CODE>ResGer</CODE> and <CODE>MorphoGer</CODE>, which modules are are not in <CODE>ResGer</CODE> and <CODE>MorphoGer</CODE>, which modules are are not
visible to the application grammarian. visible to the application grammarian.
</P> </P>
<A NAME="toc10"></A> <A NAME="toc11"></A>
<H3>Lock fields</H3> <H3>Lock fields</H3>
<P> <P>
An important difference between <CODE>MorphoGer</CODE> and An important difference between <CODE>MorphoGer</CODE> and
@@ -463,7 +473,7 @@ in her hidden definitions of constants in <CODE>Paradigms</CODE>. For instance,
-- mkAdv s = {s = s ; lock_Adv = &lt;&gt;} ; -- mkAdv s = {s = s ; lock_Adv = &lt;&gt;} ;
</PRE> </PRE>
<P></P> <P></P>
<A NAME="toc11"></A> <A NAME="toc12"></A>
<H3>Lexicon construction</H3> <H3>Lexicon construction</H3>
<P> <P>
The lexicon belonging to <CODE>LangGer</CODE> consists of two modules: The lexicon belonging to <CODE>LangGer</CODE> consists of two modules:
@@ -483,20 +493,20 @@ the coverage of the paradigms gets thereby tested and that the
use of the paradigms in <CODE>BasicGer</CODE> gives a good set of examples for use of the paradigms in <CODE>BasicGer</CODE> gives a good set of examples for
those who want to build new lexica. those who want to build new lexica.
</P> </P>
<A NAME="toc12"></A> <A NAME="toc13"></A>
<H2>Inside grammar modules</H2> <H2>Inside grammar modules</H2>
<P> <P>
So far we just give links to the implementations of each API. So far we just give links to the implementations of each API.
More explanation iś to follow - but many detail implementation tricks More explanation iś to follow - but many detail implementation tricks
are only found in the cooments of the modules. are only found in the cooments of the modules.
</P> </P>
<A NAME="toc13"></A> <A NAME="toc14"></A>
<H3>The category system</H3> <H3>The category system</H3>
<UL> <UL>
<LI><A HREF="gfdoc/Cat.html">Cat</A>, <A HREF="gfdoc/CatGer.html">CatGer</A> <LI><A HREF="gfdoc/Cat.html">Cat</A>, <A HREF="gfdoc/CatGer.html">CatGer</A>
</UL> </UL>
<A NAME="toc14"></A> <A NAME="toc15"></A>
<H3>Phrase category modules</H3> <H3>Phrase category modules</H3>
<UL> <UL>
<LI><A HREF="gfdoc/Tense.html">Tense</A>, <A HREF="../german/TenseGer.gf">TenseGer</A> <LI><A HREF="gfdoc/Tense.html">Tense</A>, <A HREF="../german/TenseGer.gf">TenseGer</A>
@@ -513,7 +523,7 @@ are only found in the cooments of the modules.
<LI><A HREF="gfdoc/Lang.html">Lang</A>, <A HREF="../german/LangGer.gf">LangGer</A> <LI><A HREF="gfdoc/Lang.html">Lang</A>, <A HREF="../german/LangGer.gf">LangGer</A>
</UL> </UL>
<A NAME="toc15"></A> <A NAME="toc16"></A>
<H3>Resource modules</H3> <H3>Resource modules</H3>
<UL> <UL>
<LI><A HREF="../german/ParamGer.gf">ParamGer</A> <LI><A HREF="../german/ParamGer.gf">ParamGer</A>
@@ -522,16 +532,16 @@ are only found in the cooments of the modules.
<LI><A HREF="gfdoc/ParadigmsGer.html">ParadigmsGer</A>, <A HREF="../german/ParadigmsGer.gf">ParadigmsGer.gf</A> <LI><A HREF="gfdoc/ParadigmsGer.html">ParadigmsGer</A>, <A HREF="../german/ParadigmsGer.gf">ParadigmsGer.gf</A>
</UL> </UL>
<A NAME="toc16"></A> <A NAME="toc17"></A>
<H3>Lexicon</H3> <H3>Lexicon</H3>
<UL> <UL>
<LI><A HREF="gfdoc/Structural.html">Structural</A>, <A HREF="../german/StructuralGer.gf">StructuralGer</A> <LI><A HREF="gfdoc/Structural.html">Structural</A>, <A HREF="../german/StructuralGer.gf">StructuralGer</A>
<LI><A HREF="gfdoc/Lexicon.html">Lexicon</A>, <A HREF="../german/LexiconGer.gf">LexiconGer</A> <LI><A HREF="gfdoc/Lexicon.html">Lexicon</A>, <A HREF="../german/LexiconGer.gf">LexiconGer</A>
</UL> </UL>
<A NAME="toc17"></A>
<H2>Lexicon extension</H2>
<A NAME="toc18"></A> <A NAME="toc18"></A>
<H2>Lexicon extension</H2>
<A NAME="toc19"></A>
<H3>The irregularity lexicon</H3> <H3>The irregularity lexicon</H3>
<P> <P>
It may be handy to provide a separate module of irregular It may be handy to provide a separate module of irregular
@@ -541,7 +551,7 @@ few hundred perhaps. Building such a lexicon separately also
makes it less important to cover <I>everything</I> by the makes it less important to cover <I>everything</I> by the
worst-case paradigms (<CODE>mkV</CODE> etc). worst-case paradigms (<CODE>mkV</CODE> etc).
</P> </P>
<A NAME="toc19"></A> <A NAME="toc20"></A>
<H3>Lexicon extraction from a word list</H3> <H3>Lexicon extraction from a word list</H3>
<P> <P>
You can often find resources such as lists of You can often find resources such as lists of
@@ -576,7 +586,7 @@ When using ready-made word lists, you should think about
coyright issues. Ideally, all resource grammar material should coyright issues. Ideally, all resource grammar material should
be provided under GNU General Public License. be provided under GNU General Public License.
</P> </P>
<A NAME="toc20"></A> <A NAME="toc21"></A>
<H3>Lexicon extraction from raw text data</H3> <H3>Lexicon extraction from raw text data</H3>
<P> <P>
This is a cheap technique to build a lexicon of thousands This is a cheap technique to build a lexicon of thousands
@@ -584,7 +594,7 @@ of words, if text data is available in digital format.
See the <A HREF="http://www.cs.chalmers.se/~markus/FM/">Functional Morphology</A> See the <A HREF="http://www.cs.chalmers.se/~markus/FM/">Functional Morphology</A>
homepage for details. homepage for details.
</P> </P>
<A NAME="toc21"></A> <A NAME="toc22"></A>
<H3>Extending the resource grammar API</H3> <H3>Extending the resource grammar API</H3>
<P> <P>
Sooner or later it will happen that the resource grammar API Sooner or later it will happen that the resource grammar API
@@ -593,7 +603,7 @@ that it does not include idiomatic expressions in a given language.
The solution then is in the first place to build language-specific The solution then is in the first place to build language-specific
extension modules. This chapter will deal with this issue. extension modules. This chapter will deal with this issue.
</P> </P>
<A NAME="toc22"></A> <A NAME="toc23"></A>
<H2>Writing an instance of parametrized resource grammar implementation</H2> <H2>Writing an instance of parametrized resource grammar implementation</H2>
<P> <P>
Above we have looked at how a resource implementation is built by Above we have looked at how a resource implementation is built by
@@ -611,7 +621,7 @@ use parametrized modules. The advantages are
In this chapter, we will look at an example: adding Italian to In this chapter, we will look at an example: adding Italian to
the Romance family. the Romance family.
</P> </P>
<A NAME="toc23"></A> <A NAME="toc24"></A>
<H2>Parametrizing a resource grammar implementation</H2> <H2>Parametrizing a resource grammar implementation</H2>
<P> <P>
This is the most demanding form of resource grammar writing. This is the most demanding form of resource grammar writing.

View File

@@ -119,6 +119,17 @@ different languages.
===A reduced API===
If you want to experiment with a small subset of the resource API first,
try out the module
[Syntax http://www.cs.chalmers.se/~aarne/GF/doc/tutorial/resource/Syntax.gf]
explained in the
[GF Tutorial http://www.cs.chalmers.se/~aarne/GF/doc/tutorial/gf-tutorial2.html].
==Phases of the work== ==Phases of the work==
===Putting up a directory=== ===Putting up a directory===