أداة لإنشاء قواعد خاصة لترجمة الكلمات والمهام المشابهة

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

سؤال

أقوم بالكثير من معالجة اللغة الطبيعية بمتطلبات غير عادية بعض الشيء.في كثير من الأحيان أحصل على المهام على غرار lemmatization - بالنظر إلى كلمة (أو مجرد جزء من النص)، أحتاج إلى العثور على بعض الأنماط وتحويل الكلمة بطريقة ما.على سبيل المثال، قد أحتاج إلى تصحيح الأخطاء الإملائية، على سبيل المثال:نظرا لكلمة "أكل" أحتاج إلى تحويلها إلى "أكل".أو ربما أحتاج إلى تحويل الكلمات "ahahaha"، "ahahahaha"، وما إلى ذلك.إلى "أهاها" فقط، وما إلى ذلك.

لذلك أنا أبحث عن بعض أداة عامة الذي يسمح بتحديد قواعد التحول لمثل هذه الحالات.قد تبدو القواعد شيئًا مثل هذا:

 {w}in   ->  {w}ing
 aha(ha)+  ->  ahaha

وهذا يعني أنني بحاجة إلى أن أكون قادرًا على استخدام الأنماط الملتقطة من الجانب الأيسر على الجانب الأيمن.

أنا أعمل مع لغويين لا يعرفون البرمجة على الإطلاق، لذا بشكل مثالي يجب أن تستخدم هذه الأداة الملفات الخارجية و لغة بسيطة للقواعد.

أنا أقوم بهذا المشروع في كلوجر، لذا بشكل مثالي يجب أن تكون هذه الأداة مكتبة لإحدى لغات JVM (Java، وScala، وClojure)، ولكن لا بأس باللغات الأخرى أو أدوات سطر الأوامر أيضًا.

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

لاحظ أنني أعمل مع عدة لغات وأقوم بمهام مختلفة تمامًا، لذا فإن أدوات lemmatizers المحددة والمشتقات ومصححات الأخطاء الإملائية وما إلى ذلك بالنسبة للغات المحددة لا تناسب احتياجاتي - أحتاج حقًا إلى أداة أكثر عمومية.

محدث. يبدو أنني بحاجة إلى تقديم المزيد من التفاصيل/الأمثلة عما أحتاج إليه.

في الأساس، أحتاج إلى وظيفة لاستبدال النص بنوع من التعبير العادي (على غرار Java String.replaceAll()) ولكن مع إمكانية استخدم النص الذي تم التقاطه في السلسلة البديلة.على سبيل المثال، في النصوص الواقعية، غالبًا ما يكرر الأشخاص الأحرف للتأكيد على كلمة معينة، على سبيل المثال:قد يكتب شخص ما "هذا الفيلم مزعج جدًا ...".أحتاج إلى أن أكون قادرًا على استبدال هذه "oooo" المتكررة بحرف واحد فقط.لذلك قد تكون هناك قاعدة كهذه (في بناء جملة مشابه لما استخدمته سابقًا في هذا المنشور):

{chars1}<char>+{chars2}?  ->  {chars1}<char>{chars2}

أي استبدال الكلمة التي تبدأ ببعض الأحرف (chars1)، على الأقل 3 أحرف وربما تنتهي ببعض الأحرف الأخرى (chars2) بسلسلة مماثلة، ولكن بسلسلة واحدة فقط.النقطة الأساسية هنا هي أننا نلتقط الجانب الأيسر من القاعدة ونستخدمه على الجانب الأيمن.

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

المحلول

لقد وجدت http://userguide.icu-project.org/transforms/general لتكون مفيدة أيضًا لبعض مهام النمط/التحويل العامة مثل هذه، تجاهل الأشياء المتعلقة بالترجمة الصوتية، فهي لطيفة للقيام بالكثير من الأشياء.

يمكنك فقط تحميل القواعد من ملف إلى سلسلة وتسجيلها، وما إلى ذلك.

http://userguide.icu-project.org/transforms/general/rules

نصائح أخرى

أنا لست خبيرا في البرمجة اللغوية العصبية، ولكن أعتقد كرة الثلج قد تكون ذات فائدة لك.إنها لغة لتمثيل الخوارزميات الجذعية.يتم استخدام جذعها في محرك بحث Lucene.

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