هل توجد مكتبة مجانية للتحليل الصرفي للغة الألمانية؟

StackOverflow https://stackoverflow.com/questions/680907

سؤال

أبحث عن مكتبة يمكنها إجراء التحليل الصرفي للكلمات الألمانية، أي.فهو يحول أي كلمة إلى شكلها الجذري ويوفر معلومات تعريفية حول الكلمة التي تم تحليلها.

على سبيل المثال:

gegessen -> essen
wurde [...] gefasst -> fassen
Häuser -> Haus
Hunde -> Hund

قائمة امنياتي:

  • يجب أن تعمل مع كل من الأسماء والأفعال.
  • أدرك أن هذه مهمة صعبة جدًا نظرًا لتعقيد اللغة الألمانية، لذلك أبحث أيضًا عن المكتبات التي توفر تقديرات تقريبية فقط أو قد تكون دقيقة بنسبة 80٪ فقط.
  • أفضّل المكتبات التي لا تعمل مع القواميس، ولكن مرة أخرى أنا منفتح على التسوية في ضوء الظروف.
  • أفضّل أيضًا مكتبات C/C++/Delphi Windows، لأن ذلك من شأنه أن يسهل دمجها ولكن .NET وJava و...سوف تفعل أيضا.
  • يجب أن تكون مكتبة مجانية.(ل) جي بي إل، MPL، ...

يحرر: أعلم أنه لا توجد طريقة لإجراء التحليل الصرفي بدون أي قاموس على الإطلاق، بسبب الكلمات غير المنتظمة.عندما أقول، أفضل مكتبة بدون قاموس، أعني تلك القواميس الكاملة التي تحدد كل كلمة:

arbeite -> arbeiten
arbeitest -> arbeiten
arbeitet -> arbeiten
arbeitete -> arbeiten
arbeitetest -> arbeiten
arbeiteten -> arbeiten
arbeitetet -> arbeiten
gearbeitet -> arbeiten
arbeite -> arbeiten
... 

ولهذه القواميس عدة عيوب منها الحجم الكبير وعدم القدرة على معالجة الكلمات غير المعروفة.

بالطبع لا يمكن التعامل مع جميع الاستثناءات إلا باستخدام القاموس:

esse -> essen
isst -> essen
eßt -> essen
aß -> essen
aßt -> essen
aßen -> essen
...

(عقلي يدور الآن :))

هل كانت مفيدة؟

المحلول

أعتقد أنك تبحث عن "خوارزمية جذعية".

إن منهج مارتن بورتر معروف جيدًا بين اللغويين.إن Porter Stemmer هو في الأساس خوارزمية تجريد اللواحق، مقترنة ببعض قواعد الاستبدال لتلك الحالات الخاصة.

يقدم معظم أصحاب السيقان سيقانًا "غير صحيحة" لغويًا.على سبيل المثال:يمكن أن يؤدي كل من "الجميل" و"الجمال" إلى أصل كلمة "جميل"، وهي بالطبع ليست كلمة حقيقية.ومع ذلك، لا يهم هذا إذا كنت تستخدم تلك الجذور لتحسين نتائج البحث في أنظمة استرجاع المعلومات. لوسين يأتي مع دعم لـ Porter Stemmer، على سبيل المثال.

ابتكر بورتر أيضًا لغة برمجة بسيطة لتطوير الجذور، تسمى كرة الثلج.

هناك أيضًا أصول للغة الألمانية متوفرة في Snowball.يتوفر أيضًا إصدار C، الذي تم إنشاؤه من مصدر Snowball، على موقع الويب، بالإضافة إلى شرح نصي عادي للخوارزمية.

هذا هو الجذع الألماني في كرة الثلج: http://snowball.tartarus.org/algorithms/german/stemmer.html

إذا كنت تبحث عن الجذر المقابل لكلمة ما كما تجدها في القاموس، إلى جانب المعلومات المتعلقة بجزء الكلام، فيجب عليك البحث في Google عن "lemmatization".

نصائح أخرى

(تنصل:أقوم بربط مشاريعي مفتوحة المصدر هنا)

هذه البيانات في شكل قائمة الكلمات متاحة في http://www.danielnaber.de/morphologie/.يمكن دمجها مع مكتبة تقسيم الكلمات (مثل jwordsplitter) لتغطية الأسماء المركبة غير الموجودة في القائمة.

أو مجرد استخدام أداة اللغة من جافا, ، والتي تحتوي على قائمة الكلمات المضمنة في شكل آلة مدمجة ذات حالة محدودة (بالإضافة إلى أنها تتضمن أيضًا تقسيمًا مركبًا).

لقد طرحت هذا السؤال منذ فترة، ولكن لا يزال بإمكانك تجربته مورفيستو.

فيما يلي مثال حول كيفية القيام بذلك في أوبونتو:

  1. قم بتثبيت أدوات محول الطاقة ذات الحالة المحدودة في شتوتغارت

    $ sudo apt-get install sfst

  2. قم بتنزيل مورفيستو مورفولوجية، على سبيل المثال.مورفيستو-02022011.أ

  3. ضغطه، على سبيل المثال.

    $ fst-compact مورفيستو-02022011.a مورفيستو-02022011.ac

  4. استخدمه!وهنا بعض الأمثلة:

    $ صدى هوخزيت | FST-proc morphisto-02022011.ac ^Hochzeit/hohZeit<+NN>/hohZeit<+NN>/hohZeit<+NN>/hohZeit<+NN>/HochZeit<+NN>/HochZeit<+NN>/HochZeit<+NN>/HochZeit<+NN>/Hochzeit<+NN>/Hochzeit<+NN>/Hochzeit<+NN>/Hochzeit<+NN>$

    $ صدى العتاد | FST-proc morphisto-02022011.ac ^gearbeitet/arbeiten<+ADJ>/arbeiten<+ADJ>/arbeiten<+V>$

ألقِ نظرة على LemmaGen (http://lemmatise.ijs.si/) وهو مشروع يهدف إلى توفير منصة موحدة متعددة اللغات مفتوحة المصدر لإضفاء الطابع الرسمي.إنه يفعل بالضبط ما تريد.

لا أعتقد أنه يمكن القيام بذلك بدون قاموس.

سوف تتعثر الأساليب القائمة على القواعد دائمًا على أشياء مثل

جيجيسن -> إيسن
جيجانجين -> أنجن

(ملاحظة للأشخاص الذين لا يتحدثون الألمانية:الحل الصحيح في الحالة الثانية هو "gehen").

القي نظرة على ليو.إنهم يقدمون البيانات التي تبحث عنها، وربما تعطيك بعض الأفكار.

يمكن للمرء أن يستخدم مورفيستو مع بارزو (https://github.com/rsennrich/parzu).ParZu هو محلل تبعية للغة الألمانية.

وهذا يعني أن ParZu يزيل الغموض أيضًا عن الإخراج من مورفيستو

هناك بعض الأدوات التي يمكنك استخدامها مثل morph.مكون في أدوات Matetools وMorphisto وما إلى ذلك.لكن الألم يكمن في دمجها في سلسلة أدواتك.يعد DKpro غلافًا جيدًا جدًا لعدد كبير جدًا من هذه الأدوات اللغوية (https://dkpro.github.io/dkpro-core/)، إطار عمل باستخدام UIMA.فهو يسمح لك بكتابة مسار المعالجة المسبقة الخاص بك باستخدام أدوات لغوية مختلفة من موارد مختلفة يتم تنزيلها جميعًا تلقائيًا على جهاز الكمبيوتر الخاص بك والتحدث مع بعضها البعض.يمكنك استخدام Java أو Groovy أو حتى Jython لاستخدامها.يوفر لك DKPro وصولاً سهلاً إلى اثنين من المحللين المورفولوجيين، MateMorphTagger وSfstAnnotator.

أنت لا تريد استخدام جذر مثل بورتر، فهو سيقلل من شكل الكلمة بطريقة لا معنى لها من الناحية اللغوية وليس لها السلوك الذي تصفه.إذا كنت تريد فقط العثور على الصيغة الأساسية، بالنسبة للفعل الذي سيكون صيغة المصدر وللاسم الاسم المفرد، فيجب عليك استخدام lemmatizer.يمكنك العثور على قائمة من lemmatizers الألمانية هنا.يستخدم Treetagger على نطاق واسع.يمكنك أيضًا استخدام تحليل أكثر تعقيدًا يقدمه محلل مورفولوجي مثل SMORS.سيعطيك شيئًا مثل هذا (مثال من سمورز موقع إلكتروني):

وهنا تحليل "unübersetzbarstes" الذي يوضح البادئة واللاحقة و>التدرج:un<PREF>übersetzen<V>bar<SUFF><+ADJ><Sup><Neut><Nom><Sg><St>

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top