summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Hallgren <th-github@altocumulus.org>2019-12-03 16:40:21 +0100
committerThomas Hallgren <th-github@altocumulus.org>2019-12-03 16:40:21 +0100
commitfb1199c49c39bd9dccde778d60ab50f42edd289f (patch)
treebba5940d8c4855928380cc1a44e7f077fc5accbb /src
parent12e55c93c06263f7f042bc5d8a2c80d6e90b15fa (diff)
GF Cloud: add Word inflection with smart paradigms
This is a reimplemention of Aarne's GFMorpho service from 2012, using the GF shell web API. Not all features are implemented (yet).
Diffstat (limited to 'src')
-rw-r--r--src/www/gfmorpho/index.html107
-rw-r--r--src/www/gfmorpho/morpho.js42
-rw-r--r--src/www/index.html3
3 files changed, 151 insertions, 1 deletions
diff --git a/src/www/gfmorpho/index.html b/src/www/gfmorpho/index.html
new file mode 100644
index 000000000..0990f351d
--- /dev/null
+++ b/src/www/gfmorpho/index.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html> <head>
+<title>Smart paradigms</title>
+<meta charset="UTF-8">
+<meta name = "viewport" content = "width = device-width">
+<link rel=stylesheet href="../cloud.css">
+<style>
+.morpho_output {
+ background: white;
+ padding: 1ex;
+ margin: 1ex;
+ box-shadow: 5px 5px 5px rgba(0,0,0,0.3);
+}
+th,td { vertical-align: baseline; }
+</style>
+</head>
+
+<body>
+<header>
+<h1><a href="/"><img class=nofloat src="../P/gf-cloud.png" alt=""></a> Word inflection with smart paradigms</h1>
+</header>
+<main>
+
+Give language, part of speech, and one or more word forms, to obtain
+the inflection table.
+<p>
+<table>
+ <tr><th>Examples:
+ <td>
+<input onclick="submit_example(this)" type=button value="Eng N baby">
+<input onclick="submit_example(this)" type=button value="Fin V odottaa odotti">
+<input onclick="submit_example(this)" type=button value="Fre V manger">
+<input onclick="submit_example(this)" type=button value="Ger N Soldat Soldaten _masculine">
+<input onclick="submit_example(this)" type=button value="Hin N बच्छा">
+<input onclick="submit_example(this)" type=button value="Jpn V 答える _Gr2">
+ <input onclick="submit_example(this)" type=button value="Lat A vetus veteris">
+ </table>
+<p>
+ Thus notice that word forms are given without quotes. In addition
+ to word forms, in some languages it might be necessary to give
+ an inherent feature (e.g. gender) and these
+ are prefixed with an underscore <tt>_</tt>.
+<p>
+<form name=morpho method=get action="gfmorpho.cgi" onsubmit="submitmorpho();return false" onreset="resetmorpho()">
+Create your own example:
+<!--
+<select name=language><option value=Eng>English</option></select>
+<select name=category>
+ <option value=N>Noun</option>
+ <option value=A>Adjective</option>
+ <option value=V>Verb</option>
+</select>
+-->
+<input size=40 name=args placeholder="Lang Cat word_forms">
+<input type=submit value="Submit">
+<input type=reset value="Clear">
+</form>
+
+<pre id=morpho_output></pre>
+
+
+<h2>Language and part of speech</h2>
+
+The available languages are:
+<pre>
+ Afr Amh Ara Bul Cat Chi Dan Dut Eng Est Eus Fin Fre Ger
+ Grc Gre Heb Hin Ice Ina Ita Jpn Lat Lav Mlt Mon Nep Nno
+ Nor Pes Pnb Pol Por Ron Rus Slv Snd Spa Swe Tha Tur Urd
+</pre>
+
+<!--
+In addition, the library has the languages <tt>Ara Bul Pol</tt>, but they
+are not yet available in this way; you can however use the full form of
+paradigm applications prefixed by "!" as described below.
+-->
+<p>
+
+The parts of speech are: N (= noun), A (= adjective), V (= verb).
+
+<p>
+
+The way this works is that the program constructs the most probable
+inflection table from the forms given. For a vast majority of words in
+all languages, it is enough to give just one form. But sometimes more
+forms are needed to get the inflection table right.
+
+<p>
+
+This is a front-end to the Paradigms modules in the GF Resource Grammar.
+See <a href=http://www.grammaticalframework.org/lib/doc/synopsis.html>RGL
+Synopsis</a> for more information on available languages and paradigms.
+
+
+</main>
+<footer>
+<hr>
+<div class=modtime><small>
+ <!-- hhmts start -->Last modified: Tue Dec 3 16:24:08 CET 2019 <!-- hhmts end -->
+</small></div>
+<address>Thomas H</address>
+Based on <a href="gfmorpho.html">GFMorpho</a> by Aarne Ranta 2012.
+</body>
+<script src="../js/support.js"></script>
+<script src="../js/localstorage.js"></script>
+<script src="../gfse/cloud2.js"></script>
+<script src="morpho.js"></script>
+</html>
diff --git a/src/www/gfmorpho/morpho.js b/src/www/gfmorpho/morpho.js
new file mode 100644
index 000000000..d154b8bf7
--- /dev/null
+++ b/src/www/gfmorpho/morpho.js
@@ -0,0 +1,42 @@
+
+var local=appLocalStorage("gf.morpho.")
+
+function quote(s) {
+ return s[0]=="_" ? s.substr(1) : '"'+s+'"'
+}
+
+function show_output(output) {
+ morpho_output.className=output ? "morpho_output" : ""
+ replaceChildren(morpho_output,text(output))
+}
+
+function submitmorpho() {
+ clear(morpho_output)
+ var args=morpho.args.value.split(/ +/)
+ var lang=args[0]
+ var cat=args[1]
+ var wordforms=args.slice(2).map(quote).join(" ")
+ //console.log("submitmorpho",lang,cat,wordforms)
+ switch("") {
+ case lang: show_output("No language"); break;
+ case cat: show_output("No category"); break;
+ case wordforms: show_output("No word forms"); break;
+ default:
+ gfshell("e",function() {
+ gfshell("i -retain alltenses/Paradigms"+lang+".gfo",function() {
+ gfshell("cc -table -unqual mk"+cat+wordforms,show_output)
+ })
+ })
+ }
+ return false;
+}
+
+function resetmorpho() {
+ show_output("")
+}
+
+function submit_example(b) {
+ //console.log("submit_example",b.value)
+ morpho.args.value=b.value
+ submitmorpho()
+}
diff --git a/src/www/index.html b/src/www/index.html
index 317af6cf8..a9af3e917 100644
--- a/src/www/index.html
+++ b/src/www/index.html
@@ -20,7 +20,8 @@
<li><a href="gfse/">GF online editor for simple multilingual grammars</a>
<li><a href="translator/">Simple Translation Tool</a>
(bilingual document editor)
- <li><a href="wc.html">Wide Coverage Translation Demo</a>
+ <!--<li><a href="wc.html">Wide Coverage Translation Demo</a>-->
+ <li><a href="gfmorpho/">Word inflection with smart paradigms</a>
</ul>
<h2>Documentation</h2>