أظهرت ChatGPT أيضًا قدراتها كمترجم قوي ، قادر على التعامل مع ليس فقط اللغات الشائعة ، ولكن أيضًا أشكالًا غير تقليدية من الكتابة مثل الرموز التعبيرية والتدافع. ومع ذلك ، قد لا ينتج دائمًا إخراجًا حتميًا ويلتزم بالارتباط بين خط إلى خط ، مما قد يعطل توقيت الترجمة ، حتى عند توجيه تعليمات إلى اتباع التعليمات الدقيقة وتحديد معلمة temperature النموذج إلى 0 .
تستخدم هذه الأداة المساعدة API Openai ChatGPT لترجمة النص ، مع التركيز المحدد على الترجمة القائمة على الخط ، وخاصة لترجمات SRT. يعمل المترجم على تحسين استخدام الرمز المميز عن طريق إزالة SRT النفقات العامة ، وتجميع النص إلى دفعات ، مما يؤدي إلى ترجمات الطول التعسفي دون استهلاك رمزي مفرط مع ضمان تطابق واحد إلى واحد بين إدخال الخط والإخراج.
--experimental-structured-mode .--experimental-use-full-context (CLI فقط).المرجع: https://github.com/openai/openai-quickstart-node#setup
>= 16.13.0 المطلوب. هذا Readme يفترض بيئة قذيفة bashgit clone https://github.com/Cerlancism/chatgpt-subtitle-translator && cd chatgpt-subtitle-translatornpm installchmod +x cli/translator.mjs.example.env .env cp .env.example .env.env الذي تم إنشاؤه حديثًا cli/translator.mjs --help
Usage: translator [options]
Translation tool based on ChatGPT API
خيارات:
--from <language>
لغة المصدر (افتراضي: "")
--to <language>
اللغة المستهدفة (الافتراضي: "الإنجليزية")
-i, --input <file>
نص مصدر الإدخال مع محتوى هذا الملف ، في تنسيق .srt أو نص عادي
-o, --output <file>
اسم ملف الإخراج ، الإعدادات الافتراضية التي يجب استنادها إلى اسم ملف الإدخال
-p, --plain-text <text>
نص مصدر الإدخال مع هذه الوسيطة النصية العادية
-s, --system-instruction <instruction>
تجاوز قالب تعليمات نظام المطالبة Translate ${from} to ${to} --to --from
--initial-prompts <prompts>
المطالبات الأولية للترجمة في JSON (افتراضي: "[]" )
--no-use-moderator
لا تستخدم نقطة نهاية API Openai API
--moderation-model
(افتراضي: "omni-moderation-latest" ) https://platform.openai.com/docs/models/moderation
--no-prefix-number
لا تقم ببادئة الخطوط بمؤشرات رقمية
--no-line-matching
لا تفرض مطابقة إخراج إدخال كمية من خط واحد إلى خط واحد
-l, --history-prompt-length <length>
طول السجل المطري للاحتفاظ بطلب للطلب التالي (الافتراضي: 10)
-b, --batch-sizes <sizes> أحجام الدُفعات المتزايدة لشرائح موجه الترجمة في مجموعة JSON (افتراضي: "[10,100]" )
عدد الخطوط التي يجب تضمينها في كل موجه ترجمة ، شريطة أن يتم تقديرها ضمن الحد المميز. في حالة كميات خط الإخراج غير المتطابقة ، سيتم تقليل هذا الرقم خطوة بخطوة وفقًا للقيم في الصفيف ، حيث يصل في النهاية إلى واحد.
تؤدي أحجام الدُفعات الأكبر عمومًا إلى استخدام رمز أكثر كفاءة وترجمة سياقية أفضل. ومع ذلك ، فإن كميات خط الإخراج غير المتطابقة أو تجاوز الحد المميز سيؤدي إلى إهدار الرمز المميز ، مما يتطلب تقديم الدفعة بحجم دفعة أصغر.
--experimental-structured-mode [mode]
تمكين الاستجابة المنظمة. (افتراضي: array ، array خيارات ، object )
--experimental-structured-mode array بهيكل الإدخال والإخراج في تنسيق صفيف عادي. هذا الخيار أكثر إيجازًا مقارنةً بالوضع الأساسي ، على الرغم من أنه يستخدم المزيد من الرموز المميزة لكل دفعة.--experimental-structured-mode object على كل من الإدخال والإخراج في مخطط كائن تم إنشاؤه ديناميكيًا استنادًا إلى قيم الإدخال. هذا الخيار أكثر إيجازًا ويستخدم عددًا أقل من الرموز ، ولكنه يتطلب أحجام دفعات أصغر ويمكن أن يكون بطيئًا وغير موثوق به. نظرًا لعدم موثوقيته ، فقد يؤدي ذلك إلى مزيد من إعادة تقديم إعادة التقديم ، مما قد يضيع المزيد من الرموز في هذه العملية. --experimental-use-full-context
قم بتضمين السياق الكامل للبيانات المترجمة للعمل بشكل جيد مع التخزين المؤقت السريع.
يتم تقطيع الخطوط المترجمة لكل مستخدم ومساعد للرسالة على النحو المحدد بواسطة --history-prompt-length (افتراضيًا --history-prompt-length 10 ) ، يوصى بتعيين هذا إلى أكبر حجم الدفعة (بشكل افتراضي --batch-sizes "[10,100]" ): --history-prompt-length 100 .
قد يكون تمكين ذلك يخاطر بالركض في حد نافذة سياق النموذج ، وعادة ما يكون 128K ، ولكن يجب أن يكون كافياً لمعظم الحالات.
--log-level <level>
مستوى السجل (الافتراضي: debug ، الخيارات: trace ، debug ، info ، warn ، error ، silent )
--silent
مثل- --log-level silent
--quiet
مثل- --log-level silent
خيارات إضافية لـ GPT:
-m, --model <model>"gpt-4o-mini" )--stream-t, --temperature <temperature>0.3 لتكون أكثر حتمية للترجمة (الافتراضي: 1 ) https://platform.openai.com/docs/api- المرجع--top_p <top_p>--presence_penalty <presence_penalty>--frequency_penalty <frequency_penalty--logit_bias <logit_bias>cli/translator.mjs --plain-text "你好"الإخراج القياسي
Hello.
cli/translator.mjs --stream --to " Emojis " --temperature 0 --plain-text " $( curl ' https://api.chucknorris.io/jokes/0ECUwLDTTYSaeFCq6YMa5A ' | jq .value ) "حجة الإدخال
Chuck Norris can walk with the animals, talk with the animals; grunt and squeak and squawk with the animals... and the animals, without fail, always say 'yessir Mr. Norris'.
الإخراج القياسي
????♂️??????????????️??️❗️??????=???????????????????=??.
cli/translator.mjs --stream --system-instruction " Scramble characters of words while only keeping the start and end letter " --no-prefix-number --no-line-matching --temperature 0 --plain-text " Chuck Norris can walk with the animals, talk with the animals; "الإخراج القياسي
Cuhck Nroris can wakl wtih the aiamnls, talk wtih the aiamnls;
cli/translator.mjs --stream --system-instruction " Unscramble characters back to English " --no-prefix-number --no-line-matching --temperature 0 --plain-text " Cuhck Nroris can wakl wtih the aiamnls, talk wtih the aiamnls; "الإخراج القياسي
Chuck Norris can walk with the animals, talk with the animals;
cli/translator.mjs --stream --temperature 0 --input test/data/test_cn.txtملف الإدخال: اختبار/بيانات/test_cn.txt
你好。
拜拜!
الإخراج القياسي
Hello.
Goodbye!
cli/translator.mjs --stream --temperature 0 --input test/data/test_ja_small.srtملف الإدخال: اختبار/بيانات/test_ja_small.srt
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
おはようございます。
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
お元気ですか?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
はい、元気です。
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
今日は天気がいいですね。
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
はい、とてもいい天気です。ملف الإخراج: اختبار/بيانات/test_ja_small.srt.out_english.srt
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
Good morning.
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
How are you?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
Yes, I'm doing well.
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
The weather is nice today, isn' t it?
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
Yes, it's very nice weather. تعليمات النظام
الرموز: 5
Translate Japanese to English
| مدخل | اِسْتَدْعَى | تحول | الإخراج |
|---|---|---|---|
الرموز: | الرموز: | الرموز: | الرموز: |
1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
おはようございます。
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
お元気ですか?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
はい、元気です。
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
今日は天気がいいですね。
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
はい、とてもいい天気です。 | | | 1
00 : 00 : 00 , 000 --> 00 : 00 : 02 , 000
Good morning.
2
00 : 00 : 02 , 000 --> 00 : 00 : 05 , 000
How are you?
3
00 : 00 : 05 , 000 --> 00 : 00 : 07 , 000
Yes, I'm doing well.
4
00 : 00 : 08 , 000 --> 00 : 00 : 12 , 000
The weather is nice today, isn' t it?
5
00 : 00 : 12 , 000 --> 00 : 00 : 16 , 000
Yes, it's very nice weather. |
TODO : المزيد من التحليل
5 خطوط SRT:
اختبار/بيانات/test_ja_small.srt
299362276 30 خطوط SRT:
اختبار/بيانات/test_ja.srt
16256719[5, 10] ، بما في ذلك ما يصل إلى 10 سياق موجه تاريخي:1036