From 28a23b0593655b55ae8bc7cb7c3fea747993179b Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 13 May 2014 07:18:51 +0000 Subject: [PATCH] some updates in lib/doc/translation.html --- lib/doc/translation.dot | 2 ++ lib/doc/translation.html | 47 ++++++++++++++++++++++++++------------- lib/doc/translation.png | Bin 25569 -> 31419 bytes lib/doc/translation.txt | 38 ++++++++++++++++++++----------- 4 files changed, 59 insertions(+), 28 deletions(-) diff --git a/lib/doc/translation.dot b/lib/doc/translation.dot index 17d48ff4a..00dcd3d20 100644 --- a/lib/doc/translation.dot +++ b/lib/doc/translation.dot @@ -6,7 +6,9 @@ graph { Translate -- RGLSyntax [style = dashed] ; Translate -- Extensions ; Translate -- Dictionary ; + Translate -- Chunk ; Extensions -- RGLCategories ; + Chunk -- RGLCategories ; RGLCategories ; RGLSyntax -- RGLCategories ; Dictionary -- RGLCategories ; diff --git a/lib/doc/translation.html b/lib/doc/translation.html index b26d4057d..64b621ea9 100644 --- a/lib/doc/translation.html +++ b/lib/doc/translation.html @@ -2,26 +2,35 @@ + From Resource Grammar to Wide Coverage Translation with GF

From Resource Grammar to Wide Coverage Translation with GF

Aarne Ranta et al.
-Work in progress, January 2014 +January-May 2014
+

Scope

+ +

+Wide-coverage interlingual translator for +Bulgarian, Chinese, Dutch, English, Finnish, French, German, +Hindi, Italian, Spanish, Swedish. +

+

How to use it

-This is a document about a wide-coverage translation system in GF. If you just want to try it before reading more, -here are the main modes of getting started: +If you just want to try it before reading more, +here are the main ways to get started:

-1. Run on our server. Forthcoming. +1. Run on our server. http://www.grammaticalframework.org/demos/translation.html

-2. Get an Android app. Forthcoming. +2. Get an Android app. http://www.grammaticalframework.org/demos/app.html

3. Compile and run in the shell. Get the latest GF sources (with darcs or github) and then @@ -34,27 +43,31 @@ here are the main modes of getting started:

     cd GF/lib/src
-    make Translate8.pgf
+    make -j Translate11.pgf
 
-This will take a long time (ten minutes or more) and will probably require at least 8GB of RAM. +This will take a long time (fifteen minutes or more) and will probably require at least 8GB of RAM.

  • run the translator
    -    pgf-translate Translate8.pgf Phr TranslateEng TranslateSwe
    +    pgf-translate Translate11.pgf Phr TranslateEng TranslateSwe
     
    with obviously the possibility to vary the source and the target language. -

    + + +

    4. To modify the sources, work on the files in +

         GF/lib/src/translator/
     
    +

    It is these files that will be explained below. - +

    GF and the RGL

    @@ -98,15 +111,15 @@ to open-text processing. This success is a result of four lines of development: This development is also based on the work of Peter Ljunglöf on GF parsing and Lauri Alanko on the C runtime.

  • Large-scale dictionaries, both manually built and extracted from free sources, and linked into a multilingual - translation dictionary now covering 10k to 60k entries for eight languages. This work was started by Björn Bringert, + translation dictionary now covering 10k to 60k entries for eleven languages. This work was started by Björn Bringert, who ported the Oxford Advanced Learner's Dictionary of English to GF.

  • Probabilistic disambiguation, using a model trained from the Penn Treebank. Due to the common abstract syntax, - the same model can be readily used for other languages as well, even though the adequacy of this transfer has not + the same model can be used for other languages as well, even though the adequacy of this transfer has not been systematically evaluated.

    -
  • Robust parsing, which recovers from unknown words and syntax by introducing metavariables ("question marks") - and returning chunk-by-chunk translations. This leads to loss of quality, but fulfills the principle that +
  • Robust parsing, which recovers from unknown words and syntax + by using chunk-by-chunk translations. This leads to loss of quality, but fulfills the principle that "something is better than nothing". @@ -152,7 +165,7 @@ Given that these issues get resolved, the strengths of the GF approach can be ma breaking anything else.

  • Light weight. The system runs on standard laptops and even on mobile phones; the size of the run-time - system for all pairs of 8 languages is under 20MB (on the Android platform), and recompiling the whole + system for all pairs of 11 languages is under 25MB (on the Android platform), and recompiling the whole system (e.g. after bug fixes or domain adaptation) is a matter of a few minutes, where corresponding figures for SMT systems are gigabytes of size and days of retraining. @@ -280,6 +293,10 @@ Here is a description of each of the modules: suffixed by categories and word sense information. This consists of the module named Dictionary.

  • RGLCategories stands for the type system of the standard RGL, the module named Cat. +

    +
  • Chunk is the grammar defining what chunks (noun phrases, verbs, + adverbs, etc) can be used and how they are combined, when exact + syntactic combination fails.

    Where and why the translation grammar differs from the RGL

    diff --git a/lib/doc/translation.png b/lib/doc/translation.png index 1dcd9f5e9db908746a16d0cb32a0a9522c0f8fdc..be3216b22b75ae7fd5db5194a8bb128617ff16a8 100644 GIT binary patch literal 31419 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 literal 25569 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 JF6*2UngGMdu}lB} diff --git a/lib/doc/translation.txt b/lib/doc/translation.txt index f70f40796..6c3e7545e 100644 --- a/lib/doc/translation.txt +++ b/lib/doc/translation.txt @@ -1,16 +1,25 @@ From Resource Grammar to Wide Coverage Translation with GF Aarne Ranta et al. -Work in progress, January 2014 +January-May 2014 + +%!Encoding:utf8 + + +==Scope== + +Wide-coverage interlingual translator for +Bulgarian, Chinese, Dutch, English, Finnish, French, German, +Hindi, Italian, Spanish, Swedish. ==How to use it== -This is a document about a wide-coverage translation system in GF. If you just want to try it before reading more, -here are the main modes of getting started: +If you just want to try it before reading more, +here are the main ways to get started: -1. **Run on our server.** Forthcoming. +1. **Run on our server.** http://www.grammaticalframework.org/demos/translation.html -2. **Get an Android app.** Forthcoming. +2. **Get an Android app.** http://www.grammaticalframework.org/demos/app.html 3. **Compile and run in the shell.** Get the latest GF sources (with darcs or github) and then - compile and install the GF compiler and library and the C runtime (``pgf-translate``). @@ -18,13 +27,13 @@ here are the main modes of getting started: - compile the translator: ``` cd GF/lib/src - make Translate8.pgf + make -j Translate11.pgf ``` -This will take a long time (ten minutes or more) and will probably require at least 8GB of RAM. +This will take a long time (fifteen minutes or more) and will probably require at least 8GB of RAM. - run the translator ``` - pgf-translate Translate8.pgf Phr TranslateEng TranslateSwe + pgf-translate Translate11.pgf Phr TranslateEng TranslateSwe ``` with obviously the possibility to vary the source and the target language. @@ -73,15 +82,15 @@ to open-text processing. This success is a result of four lines of development: This development is also based on the work of Peter Ljunglöf on GF parsing and Lauri Alanko on the C runtime. - **Large-scale dictionaries**, both manually built and extracted from free sources, and linked into a multilingual - translation dictionary now covering 10k to 60k entries for eight languages. This work was started by Björn Bringert, + translation dictionary now covering 10k to 60k entries for eleven languages. This work was started by Björn Bringert, who ported the Oxford Advanced Learner's Dictionary of English to GF. - **Probabilistic disambiguation**, using a model trained from the Penn Treebank. Due to the common abstract syntax, - the same model can be readily used for other languages as well, even though the adequacy of this transfer has not + the same model can be used for other languages as well, even though the adequacy of this transfer has not been systematically evaluated. -- **Robust parsing**, which recovers from unknown words and syntax by introducing **metavariables** ("question marks") - and returning chunk-by-chunk translations. This leads to loss of quality, but fulfills the principle that +- **Robust parsing**, which recovers from unknown words and syntax + by using chunk-by-chunk translations. This leads to loss of quality, but fulfills the principle that "something is better than nothing". @@ -121,7 +130,7 @@ Given that these issues get resolved, the strengths of the GF approach can be ma breaking anything else. - **Light weight**. The system runs on standard laptops and even on mobile phones; the size of the run-time - system for all pairs of 8 languages is under 20MB (on the Android platform), and recompiling the whole + system for all pairs of 11 languages is under 25MB (on the Android platform), and recompiling the whole system (e.g. after bug fixes or domain adaptation) is a matter of a few minutes, where corresponding figures for SMT systems are gigabytes of size and days of retraining. @@ -236,6 +245,9 @@ Here is a description of each of the modules: - **RGLCategories** stands for the type system of the standard RGL, the module named ``Cat``. +- **Chunk** is the grammar defining what chunks (noun phrases, verbs, + adverbs, etc) can be used and how they are combined, when exact + syntactic combination fails. ==Where and why the translation grammar differs from the RGL==