package hu.u_szeged.nlp.pos.guesser; /** * Developed by: * Research Group on Artificial Intelligence of the Hungarian Academy of Sciences * http://www.inf.u-szeged.hu/rgai/ * * Contact: * János Zsibrita * zsibrita@inf.u-szeged.hu * * Licensed by Creative Commons Attribution Share Alike * * http://creativecommons.org/licenses/by-sa/3.0/legalcode */ import hu.u_szeged.nlp.pos.MagyarlancResourceHolder; import hu.u_szeged.nlp.pos.MorAna; import java.util.Set; import java.util.TreeSet; /** * A MorPhonGuesser osztály egy ismeretlen (nem elemezhető) főnévi szótő és * tetszőleges suffix guesselésére szolgál. A guesselés során az adott suffixet * a rendszer morPhonDir szótá-rának elemeire illesztve próbájuk elemezni. A * szótár reprezentálja a magyar nyelv minden (nem hasonuló) illeszkedési * szabályát, így biztosak lehetünk benne, hogy egy valós toldalék mindenképp * illeszkedni fog legalább egy szótárelemre. Például egy „hoz” rag esetén, * először a köd elemre próbálunk illeszteni, majd elemezni. A kapott szóalak * így a ködhez lesz, melyre a KR elemzőnk nem ad elemzést. A következő * szó-tárelem a talány, a szóalak a talányhoz lesz, melyre megkapjuk az Nc-st * (külső közelí-tő/allative) főnévi elemzést. */ public class MorPhonGuesser { public static Set<MorAna> guess(String root, String suffix) { Set<MorAna> stems = null; stems = new TreeSet<MorAna>(); for (String guess : MagyarlancResourceHolder.getMorPhonDir()) { if (MagyarlancResourceHolder.getRFSA().analyse(guess + suffix).size() > 0) { for (String kr : MagyarlancResourceHolder.getRFSA().analyse( guess + suffix)) { for (MorAna stem : MagyarlancResourceHolder.getKRToMSD().getMSD(kr)) { if (stem.getMsd().startsWith("N")) { stems.add(new MorAna(root, stem.getMsd())); } } } } } return stems; } public static void main(String[] args) { System.out.println(guess("London", "ban")); } }