•  untoreh الضوء

MTR: ترجمات متعددة

تغليف خدمات الترجمة للاستخدام الداخلي

عند نشر موقع ويب قد ترغب في تقديم ترجمات مختلفة. لا يحب بعض الأشخاص المترجمين الآليين ، وأعتقد أن الترجمة الآلية جيدة بما فيه الكفاية ، وأفضل من لا شيء ، وقد تحسن المترجمون الآليون بشكل تدريجي مع التقدم في البرمجة اللغوية العصبية و ML.

خدمات الترجمة الشائعة هي google و bing و yandex. تقدم هذه فئة مجانية نريد أن نلفها لاستخدامنا الشخصي. هناك أيضا أخرى أقل شهرة خدمات الترجمة وبعضها مغلق وقت كتابة هذا التقرير ...

نص التخزين المؤقت

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

كيف يمكننا تقسيم النص الوارد بحيث يمكننا إعادة بناء النص الأصلي من النص المترجم هو خدعة كبيرة .. أو اختراق. نريد أن نجد سلسلة غريبة بما يكفي بحيث تتركها خدمة الترجمة كما هو في ناتجها. لقد وجدت اختلافات في حرف الفقرة للعمل معظم الأوقات

$this->misc['glue'] = ' ; ¶ ; ';
$this->misc['splitGlue'] = '/\s?;\s?¶\s?;?\s?/';

الglue يتم استخدام السلسلة للتسلسل الكل السلاسل (المنقسمة من الطلب الأصلي) إلى واحد نص واحد لطلب الترجمة الأولية الذي نرسله إلى على سبيل المثال متصفح الجوجل. الsplitGlue يتم استخدامه بدلاً من ذلك لتقسيم الترجمة المستلمة إلى السلاسل التي سنقوم بتخزينها مؤقتًا. نرى هنا أن تقسيم السلاسل ليس مفيدًا فقط للتخزين المؤقت ، ولكن أيضًا تقليل عدد الطلباتنظرًا لأنه في حالة قيام طلب المصب الخاص بنا بتنفيذ العديد من الاستعلامات الصغيرة ، فإننا نستخدم أجهزتنا لدمج الطلبات حتى الحد الأقصى لحجم الحمولة المسموح به بواسطة خدمة المنبع.

الواجهة

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

function__construct(
    Mtr &$mtr,
    Client &$gz,
    TextReq &$txtrq,
    LanguageCode &$ld);
functiontranslate($source, $target, $input);
functiongenReq(array$params);
functionpreReq(array &$input);
functiongetLangs();

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

يسمح إنشاء نسخة الترجمة أيضًا بتهيئة خيارات الطلبات التي يستخدمهاGuzzle مثال العميل بحيث يمكننا على سبيل المثال استخدام الوكلاء لتنفيذ الطلبات. الخدمات مخبأ بعد إنشائه في المرة الأولى ، يكون هذا مفيدًا لأن بعض الخدمات تتطلب إنشاء بعض الرموز المميزة الأولية ، ولا نريد إعادة إنشائها في كل مرة.

نسخة Go

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

مدخلات التنظيف

إلى جانب الترجمة ، قمت أيضًا ببناء خدمة ل تنظيف html . نقوم بإدراج بعض علامات html في القائمة البيضاء وتجاهل الباقي. نقوم أيضًا بإزالة علامات الترقيم المكررة المشابهة للرسائل غير المرغوب فيها وسمات html غير المعروفة ، ونلتف الروابط في علامات ربط مناسبة.

الاستضافة الذاتية:

الاستنتاجات

في الوقت الحاضر ، أعتقد أنني سأستخدم حلًا مستضافًا ذاتيًا ، مقدمًا من قِبل joshua أو argos ، بما أنني لا أهدف إلى الحصول على أفضل ترجمة ، فأنا أريد تقديم ترجمة مقروءة لموقع ويب ، بحيث يمكن التنقل فيه دون احتكاك.

نشر العلامات: