Difference between revisions of "Improved corpus-based paradigm matching"

From Apertium
Jump to navigation Jump to search
m
Line 44: Line 44:
 
* wol: f / ves
 
* wol: f / ves
   
  +
We can then extract possible candidates from our corpus, e.g.
   
  +
<pre>
  +
$ cat /tmp/cand | rev | sort | rev | grep "\(f\|ves\) *$" | sort
  +
aardwolf
  +
aardwolves
  +
behalf
  +
behaves
  +
belief
  +
believes
  +
half
  +
halves
  +
leaf
  +
leaves
  +
lives
  +
...
  +
</pre>
  +
  +
Some of these are good matches for the paradigm and others are not.
   
 
==See also==
 
==See also==

Revision as of 13:44, 10 February 2015

<spectie> we want to increase the coverage of our analysers
<spectie> one way we can do it is for a human to think about every entry
<spectie> but, we already have a lot of knowledge already
<spectie> so, if we have a load of paradigms, and a load of lemmas -- we can try and match the lemmas to paradigms by generating 
          the forms for each paradigm and looking in a corpus
<spectie> there are quite a few papers on this. 
<spectie> so, e.g. in english let's say we have the paradigms "-s" plural and "-ren" plural
<spectie> and a load of lemmas 'child, cat, dog, ...'
<spectie> we look up {child, childs}, {child, children}, {cat, catren}, {cat, cats} etc. in the corpus
<spectie> but then there is the problem of ambiguity
<spectie> in english we have ambiguity between verb forms with -s and noun forms 
<spectie> which usually isn't a big problem
<spectie> so the idea is to preprocess your corpus, using your existing analyser, and tagger to give possible values to unknown words
          based on the surrounding context
<spectie> so let's say you have: 
<spectie> na poziv *fizikalne i *matematične fakulteti u *Odesi
<spectie> you would assign possible values for case/number/gender to the unknown surface forms of *fizikalne and *matematične based 
          on the surrounding _known_ context (na .... fakulteti)
<spectie> then, when you come to check the paradigms against the surface forms in the corpus
<spectie> you're not only checking if the surface form is valid, but also if the morphological information that it predicts is valid
<spectie> as far as i know, this is novel (apart from forsberg's preliminary work)
<spectie> if you need to do some kind of machine learning, you could quite easily use the existing entries in your morphology for learning 
          which features best descriminate between ambiguous paradigms.


Example

We want to find English nouns.

We have the following paradigms:

  • cat, cats
  • child, children
  • fox, foxes
  • wolf, wolves

We can turn these into stem, suffix patterns:

  • cat: - / s
  • child: - / ren
  • fox: - / es
  • wol: f / ves

We can then extract possible candidates from our corpus, e.g.

$ cat /tmp/cand | rev | sort | rev | grep "\(f\|ves\) *$" | sort 
 aardwolf 
 aardwolves 
 behalf 
 behaves 
 belief 
 believes 
 half 
 halves 
 leaf 
 leaves 
 lives 
...

Some of these are good matches for the paradigm and others are not.

See also