ua.net.nlp.other.Inflect.groovy Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of nlp_uk Show documentation
Show all versions of nlp_uk Show documentation
NLP tools for Ukrainian language
The newest version!
#!/usr/bin/env groovy
package ua.net.nlp.other
@GrabConfig(systemClassLoader=true)
@Grab(group='org.languagetool', module='languagetool-core', version='6.5')
@Grab(group='org.languagetool', module='language-uk', version='6.5')
@Grab(group='ch.qos.logback', module='logback-classic', version='1.4.+')
@Grab(group='info.picocli', module='picocli', version='4.6.+')
import org.languagetool.*
import org.languagetool.language.*
import org.languagetool.uk.*
import org.languagetool.synthesis.uk.*
import groovy.util.Eval
class Inflect {
@groovy.transform.SourceURI
static SOURCE_URI
static SCRIPT_DIR=new File(SOURCE_URI).parent
// easy way to include a class without forcing classpath to be set
static textUtils = Eval.me(new File("$SCRIPT_DIR/../tools/TextUtils.groovy").text + "\n new TextUtils()")
Ukrainian ukLanguage = new Ukrainian() {
@Override
protected synchronized List> getPatternRules() { return [] }
}
UkrainianSynthesizer synth = new UkrainianSynthesizer(ukLanguage);
def inflectWord(String word, String tag, boolean regexp) {
def token = new AnalyzedToken("", "", word);
return synth.synthesize(token, tag, regexp);
}
static void main(String[] argv) {
textUtils.warnOnWindows()
if( argv.length != 2 ) {
System.err.println("Використання: Inflect.groovy ")
System.err.println("Повертає всі словоформи зі словника, що відповідають заданій лемі та виразу тегів")
System.err.println("Опис тегів: https://github.com/brown-uk/dict_uk/blob/master/doc/tags.txt")
System.err.println("Напр.: Inflect.groovy місто noun:inanim:n:v_rod")
System.err.println("або: Inflect.groovy місто noun:inanim:n:v_.*")
System.exit(1)
}
def nlpUk = new Inflect()
println nlpUk.inflectWord(argv[0], argv[1], true)
}
}