package jhazm.test; import jhazm.Lemmatizer; import org.junit.Test; import java.io.IOException; import java.util.Arrays; import java.util.List; import static org.junit.Assert.assertEquals; /** * * @author Mojtaba Khallash */ public class LemmatizerTest { @Test public void lemmatizeTest() throws IOException { Lemmatizer lemmatizer = new Lemmatizer(); String input, expected, actual, p; List<String> inputs = Arrays.asList(new String[]{ "کتاب‌ها", "آتشفشان", "می‌روم", "گفته شده است", "نچشیده است", "مردم", "اجتماعی" }); List<String> expecteds = Arrays.asList(new String[]{ "کتاب", "آتشفشان", "رفت#رو", "گفت#گو", "چشید#چش", "مردم", "اجتماعی" }); List<String> pos = Arrays.asList(new String[]{ null, null, null, null, null, "N", "AJ" }); for (int i = 0; i < inputs.size(); i++) { input = inputs.get(i); expected = expecteds.get(i); p = pos.get(i); if (p == null) actual = lemmatizer.lemmatize(input); else actual = lemmatizer.lemmatize(input, p); assertEquals("Failed to lematize of '" + input + "' word", expected, actual); } } @Test public void conjugationsTest() throws IOException { Lemmatizer lemmatizer = new Lemmatizer(); String input; String[] expected; List<String> actual; input = "خورد#خور"; expected = new String[] { "خوردم", "خوردی", "خورد", "خوردیم", "خوردید", "خوردند", "نخوردم", "نخوردی", "نخورد", "نخوردیم", "نخوردید", "نخوردند", "خورم", "خوری", /*"خورد",*/ "خوریم", "خورید", "خورند", "نخورم", "نخوری", /*"نخورد",*/ "نخوریم", "نخورید", "نخورند", "می‌خوردم", "می‌خوردی", /*"می‌خورد",*/ "می‌خوردیم", "می‌خوردید", "می‌خوردند", "نمی‌خوردم", "نمی‌خوردی", "نمی‌خورد", "نمی‌خوردیم", "نمی‌خوردید", "نمی‌خوردند", "خورده‌ام", "خورده‌ای", "خورده", "خورده‌ایم", "خورده‌اید", "خورده‌اند", "نخورده‌ام", "نخورده‌ای", "نخورده", "نخورده‌ایم", "نخورده‌اید", "نخورده‌اند", "می‌خورم", "می‌خوری", "می‌خورد", "می‌خوریم", "می‌خورید", "می‌خورند", "نمی‌خورم", "نمی‌خوری", /*"نمی‌خورد",*/ "نمی‌خوریم", "نمی‌خورید", "نمی‌خورند", "بخورم", "بخوری", "بخورد", "بخوریم", "بخورید", "بخورند", "بخور", "نخور" }; actual = lemmatizer.conjugations(input); check(input, expected, actual); input = "آورد#آور"; expected = new String[] { "آوردم", "آوردی", "آورد", "آوردیم", "آوردید", "آوردند", "نیاوردم", "نیاوردی", "نیاورد", "نیاوردیم", "نیاوردید", "نیاوردند", "آورم", "آوری", /*"آورد",*/ "آوریم", "آورید", "آورند", "نیاورم", "نیاوری", /*"نیاورد",*/ "نیاوریم", "نیاورید", "نیاورند", "می‌آوردم", "می‌آوردی", /*"می‌آورد",*/ "می‌آوردیم", "می‌آوردید", "می‌آوردند", "نمی‌آوردم", "نمی‌آوردی", "نمی‌آورد", "نمی‌آوردیم", "نمی‌آوردید", "نمی‌آوردند", "آورده‌ام", "آورده‌ای", "آورده", "آورده‌ایم", "آورده‌اید", "آورده‌اند", "نیاورده‌ام", "نیاورده‌ای", "نیاورده", "نیاورده‌ایم", "نیاورده‌اید", "نیاورده‌اند", "می‌آورم", "می‌آوری", "می‌آورد", "می‌آوریم", "می‌آورید", "می‌آورند", "نمی‌آورم", "نمی‌آوری", /*"نمی‌آورد",*/ "نمی‌آوریم", "نمی‌آورید", "نمی‌آورند", "بیاورم", "بیاوری", "بیاورد", "بیاوریم", "بیاورید", "بیاورند", "بیاور", "نیاور" }; actual = lemmatizer.conjugations(input); check(input, expected, actual); } private void check(String input, String[] expected, List<String> actual) { assertEquals("Failed to generate conjugations of '" + input + "' verb", expected.length, actual.size()); for (int i = 0; i < expected.length; i++) { if (!actual.contains(expected[i])) assertEquals("Failed to generate conjugations of '" + input + "' verb", expected[i], actual.get(i)); } } }