public List<Result> generate(DictionaryItem item, Morpheme... morphemes) { List<StemTransition> candidates = stemTransitions.getTransitions(item); return generate(item.id, candidates, Arrays.asList(morphemes)); }
public List<Result> generate(DictionaryItem item, List<Morpheme> morphemes) { List<StemTransition> candidates = stemTransitions.getTransitions(item); return generate(item.id, candidates, morphemes); }
public List<Result> generate(String stem, List<String> morphemeIds) { List<Morpheme> morphemes = new ArrayList<>(); for (String morphemeId : morphemeIds) { Morpheme morpheme = TurkishMorphotactics.getMorpheme(morphemeId); morphemes.add(morpheme); } List<StemTransition> candidates = stemTransitions.getPrefixMatches(stem, false); return generate(stem, candidates, morphemes); }
public List<Result> generate(DictionaryItem item, String... morphemeIds) { List<StemTransition> candidates = stemTransitions.getTransitions(item); return generate(item.id, candidates, morphotactics.getMorphemes(morphemeIds)); }
/** * Converts the input and it's analysis SingleAnalysis to formal surface form and SingleAnalysis * object. * * @return converted single analysis object and new surface form. If input does not contain any * informal morpheme, it returns input without any changes. If generation does not work, returns * null. */ public WordGenerator.Result convert(String input, SingleAnalysis a) { if (!a.containsInformalMorpheme()) { return new Result(input, a); } List<Morpheme> formalMorphemes = toFormalMorphemeNames(a); List<WordGenerator.Result> generations = generator.generate(a.getDictionaryItem(), formalMorphemes); if (generations.size() > 0) { return generations.get(0); } else { return null; } }
public static void main(String[] args) { String[] number = {"A3sg", "A3pl"}; String[] possessives = {"P1sg", "P2sg", "P3sg"}; String[] cases = {"Dat", "Loc", "Abl"}; TurkishMorphology morphology = TurkishMorphology.builder().setLexicon("armut").disableCache().build(); DictionaryItem item = morphology.getLexicon().getMatchingItems("armut").get(0); for (String numberM : number) { for (String possessiveM : possessives) { for (String caseM : cases) { List<Result> results = morphology.getWordGenerator().generate(item, numberM, possessiveM, caseM); results.forEach(s->System.out.println(s.surface)); } } } }
List<WordGenerator.Result> results = morphology.getWordGenerator().generate( analysis.getDictionaryItem(), analysis.getMorphemes());
public static void main(String[] args) { TurkishMorphology morphology = TurkishMorphology.createWithDefaults(); DictionaryItem newStem = morphology.getLexicon().getMatchingItems("poğaça").get(0); String word = "simidime"; Log.info("Input Word = " + word); WordAnalysis results = morphology.analyze(word); for (SingleAnalysis result : results) { List<Result> generated = morphology.getWordGenerator().generate(newStem, result.getMorphemes()); for (Result s : generated) { Log.info("Input analysis: " + result.formatLong()); Log.info("After stem change, word = " + s.surface); Log.info("After stem change, Analysis = " + s.analysis.formatLong()); } } }
public static void main(String[] args) { String[] number = {"A3sg", "A3pl"}; String[] possessives = {"P1sg", "P2sg", "P3sg"}; String[] cases = {"Dat", "Loc", "Abl"}; TurkishMorphology morphology = TurkishMorphology.builder().addDictionaryLines("armut").disableCache().build(); DictionaryItem item = morphology.getLexicon().getMatchingItems("armut").get(0); for (String numberM : number) { for (String possessiveM : possessives) { for (String caseM : cases) { List<Result> results = morphology.getWordGenerator().generate(item, numberM, possessiveM, caseM); results.forEach(s->System.out.println(s.surface)); } } } }
public void initializeController() { post("/generate_word", (req, res) -> { String word = req.queryParams("word"); String morphemes = req.queryParams("morphemes"); morphemes = morphemes.replace('|', '+'); morphemes = morphemes.replace('→', '+'); TurkishMorphology morphology = TurkishMorphology.builder().addDictionaryLines(word).disableCache().build(); DictionaryItem item = morphology.getLexicon().getMatchingItems(word).get(0); List<GenerateWordResult> wordResults = new ArrayList<>(); List<Result> results = morphology.getWordGenerator().generate(item, morphemes.split("\\+")); for (Result generateResult : results) { GenerateWordResult wordResult = new GenerateWordResult(); wordResult.word = word; wordResult.no_surface = generateResult.analysis.formatMorphemesLexical(); wordResult.surface = generateResult.surface; wordResult.analysis = generateResult.analysis.formatLong(); wordResults.add(wordResult); } return jsonConverter.toJson(wordResults); }); } }
public static void main(String[] args) { TurkishMorphology morphology = TurkishMorphology.createWithDefaults(); DictionaryItem newStem = morphology.getLexicon().getMatchingItems("poğaça").get(0); String word = "simidime"; Log.info("Input Word = " + word); WordAnalysis results = morphology.analyze(word); for (SingleAnalysis result : results) { List<Result> generated = morphology.getWordGenerator().generate(newStem, result.getMorphemes()); for (Result s : generated) { Log.info("Input analysis: " + result.formatLong()); Log.info("After stem change, word = " + s.surface); Log.info("After stem change, Analysis = " + s.analysis.formatLong()); } } }