package test;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import org.apache.commons.lang.StringEscapeUtils;
import org.json.JSONObject;
import arabi.tools.verbs.analysis.Verb;
import arabi.tools.verbs.analysis.VerbsConjugation;
import arabi.tools.verbs.awzan.PossibleWazan;
import arabi.tools.verbs.lemma.LemmaExtractor;
import arabi.tools.verbs.stem.StemmerExtractor;
import arabi.tools.verbs.support.Pronouns;
import arabi.tools.verbs.synonyms.SynonymsExtractor;
import arabi.tools.verbs.tashkeel.PossibleVerbTashkeel;
public class VerbsToolsTester {
public static void main(String[] args) throws IOException, ParseException {
//example1();
//example2();
//example3();
//example4();
//example5();
//example6();
//example7();
//example8();
//example9();
}
//مثال ١: برنامج يستخرج المصدر لكلمة
public static void example1() throws IOException, ParseException {
// الكلمة المدخلة مثال : يدرسون
String word = "يدرسون";
// بناء كائن من نوع مستخلص أصل الكلمة (أو ما اخذت منه)
LemmaExtractor le = new LemmaExtractor();
// إرجاع قائمة بالنتائج بعد مناداة العملية البرمجية الخاصة باسترجاع أصل الكلمة
ArrayList<String> res = le.getLemma(word);
// طباعة النتائج على الشاشة
System.out.println(res);
}
//مثال ٢: برنامج يعمل على إستخراج جذر كلمة
public static void example2() throws IOException, ParseException {
// الكلمة المدخلة مثال : البطولية
String word = "البطولية";
// بناء كائن من نوع مستخرج الجذور
StemmerExtractor sm = new StemmerExtractor();
//إستخراج جذر الكلمة
ArrayList<String>res = sm.getStem(word);
// طباعة الجذر
System.out.println(res);
}
//مثال ٣: قطعة برنامج تعمل على ارجاع معلومات مهيكلة عن تصريف مُدخل معين
public static void example3() throws IOException, ParseException {
// الفعل المُدخل للتحليل
String input_verb = "سألتمونيها";
// بناء كائن من نظام التحليل الصرفي
VerbsConjugation vc = new VerbsConjugation();
// استخراج التحليل الصرفية وفي حال كان هنالك اكثر من احتمالية للفعل فتعود جميع الاحتمالات
ArrayList<Verb> verbs = vc.getVerbConj(input_verb);
// استخراج معلومات الفعل مهيكلة
JSONObject structured_result = verbs.get(0).generateJSONFormat();
// تحويل المعلومات المهيكلة الى نص لتسهيل عملية طباعته
String structured_result_txt = StringEscapeUtils.unescapeJava(structured_result.toString());
// طباعة النتائج
System.out.println(structured_result_txt);
}
//مثال ٤: ارجاع اسم الفاعل واسم المفعول لفعل معين
public static void example4() throws IOException, ParseException {
// الفعل المُدخل للتحليل
String input_verb = "يقرأون";
// بناء كائن من نظام التحليل الصرفي
VerbsConjugation vc = new VerbsConjugation();
// استخراج التحليل الصرفية وفي حال كان هنالك اكثر من احتمالية للفعل فتعود جميع الاحتمالات
ArrayList<Verb> verbs = vc.getVerbConj(input_verb);
// استخرج اسم الفاعل واطبعه على الشاشة
String participles_active = verbs.get(0).getParticiples_active();
System.out.println("اسم الفاعل: "+participles_active);
// استخرج اسم المفعول واطبعه على الشاشة
String participles_passive = verbs.get(0).getParticiples_passive();
System.out.println("اسم المفعول: "+participles_passive);
}
//مثال ٥: ارجاع التصريف لفعل ما في المضارع والماضي المبنيان للمعلوم مع الضمير - هو
public static void example5() throws IOException, ParseException {
// الفعل المُدخل للتحليل
String input_verb = "يبتكرون";
// بناء كائن من نظام التحليل الصرفي
VerbsConjugation vc = new VerbsConjugation();
// استخراج التحليل الصرفية وفي حال كان هنالك اكثر من احتمالية للفعل فتعود جميع الاحتمالات
ArrayList<Verb>verbs = vc.getVerbConj(input_verb);
// ارجاع الماضي مع الضمير هو للفعل المُدخل
String past_tense_howa = verbs.get(0).getPast_active(Pronouns.howa);
System.out.println("الماضي مع الضمير هو : "+past_tense_howa);
// ارجاع المضارع مع الضمير هو للفعل المُدخل
String present_tense_howa = verbs.get(0).getPresent_tense(Pronouns.howa);
System.out.println("المضارع مع الضمير هو :"+present_tense_howa);
}
//مثال ٦: ارجاع التصريف لفعل ما في المضارع المنصوب المبني للمجهول و الأمر مع الضمير - أنتِ
public static void example6() throws IOException, ParseException {
// الفعل المُدخل للتحليل
String input_verb = "تسديد";
// بناء كائن من نظام التحليل الصرفي
VerbsConjugation vc = new VerbsConjugation();
// استخراج التحليل الصرفية وفي حال كان هنالك اكثر من احتمالية للفعل فتعود جميع الاحتمالات
ArrayList<Verb>verbs = vc.getVerbConj(input_verb);
// ارجاع الماضي مع الضمير أنت للفعل المُدخل
String passive_present_ind = verbs.get(0).getPassive_present_tense_indicative(Pronouns.anti);
System.out.println("المضارع المنصوب المبني للمجهول مع الضمير أنتِ: "+passive_present_ind);
// ارجاع الأمر مع الضمير أنتِ للفعل المُدخل
String imperative_tense = verbs.get(0).getImperative_tense(Pronouns.anti);
System.out.println("فعل الأمر مع الضمير أنتِ: "+imperative_tense);
}
//مثال ٧: قطعة برنامج تبني التشكيلات المختلفة للفعل
public static void example7() throws IOException {
// الفعل المُدخل للتشكيل
String verb = "يجمعون";
//بناء كائن من فئة التشكيلات المحتملة
PossibleVerbTashkeel pt = new PossibleVerbTashkeel();
// ايجاد قائمة التشكيلات
ArrayList<String> res = pt.getPossibleVerbTashkeel(verb);
// طباعة النتيجة
System.out.println(res);
}
//مثال ٨: قطعة برنامج لإستخراج الوزن الصرفي
public static void example8() throws IOException, ParseException {
// الفعل المُدخل لإيجاد الوزن الصرفي
String word = "استنباط";
// بناء كائن من فئة الميزان الصرفي
PossibleWazan wa = new PossibleWazan();
// ايجاد الوزن بدون ومع تشكيل
ArrayList<String> res = wa.getPossibleVerbWazen(word);
// طباعة النتيجة
System.out.println(res);
}
//مثال ٩: قطعة برنامج لإيجاد الكلمات ذات العلاقة
public static void example9() throws IOException, ParseException {
// الكلمة المُدخلة
String word = "حكايات";
// بناء كائن من فئة ايجاد المرادفات والكلمات ذات العلاقة
SynonymsExtractor sy = new SynonymsExtractor();
// ايجاد النتائج وتخزينها في قائمة
ArrayList<String> res = sy.getSynonyms(word);
// طباعة النتائج
System.out.println(res);
}
}