مفاهيم غامضة – ما معنى prosody باللغة العربية؟

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

Computational Approaches to the Syntax–Prosody Interface: Using Prosody to Improve Parsing

ولهذا أظن أن الخطوة الأولى يجب أن تكون تبسيط المفاهيم وتوحيد المصطلحات وتنسيقها. المفهوم الأول الذي أرغب في عرضه هو المتعلق بمصطلح prosody.

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

شكل موجي للكلام المنطوق مأخوذ من برنامج praat يبين بعض الجوانب الصوتية للكلام مثل النبرة والوقفات

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

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

نفس الشيء في هذا المصطلح (prosody)، حيث يعبر أحيانا عن مجال دراسة ضمن علم أصوات اللغة (phonology)، يعنى بالظواهر اللغوية الصوتية التي تسري على أكثر من وحدة صوتية (phoneme) أو قطعة صوتية (segment). كما يعبر أحيانا عن الظواهر الصوتية في هذا المجال، من قبيل تحليل ارتفاع وانخفاض نبرة الكلام (pitch)، وتركيز المتكلم على كلمات أو مقاطع معينة (stress). ويعبر أيضا عن هيكل أو بنية منظمة تتألف من وحدات صوتية مختلفة الحجم. وأحيانا يشير المصطلح إلى مجرد قياسات النبرة وعلو الصوت (intensity/loudness) والمدة التي تستغرقها الكلمات (word durations) وفترات الصمت فيما بينها (pauses).

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

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

فلنحاول اختبار هذا المصطلح وكيف يمكن استخدامه في عدة مفاهيم وسياقات أكثر تعقيدا، سنعرِّف بعضها لاحقا:

  • prosody: لحن / لحن الجملة / اللحن اللغوي
  • prosodic structure: التركيبة اللحنية / الهيكل اللحني / البنية اللحنية
  • prosodic word: كلمة لحنية/لفظة لحنية
  • prosodic constituents: المكونات اللحنية
  • prosodic units: الوحدات اللحنية
  • prosodic boundaries: حدود الوحدات اللحنية/الفواصل اللحنية
  • prosodic breaks: الوقفات اللحنية
  • prosodic cues: الدلائل اللحنية
  • prosodically: لحنيا
  • speech prosody: اللحن الكلامي/لحن الكلام المنطوق
  • implicit prosody: اللحن المضمن
  • prosodic hierarchy: التراتبية اللحنية
  • prosodic phrasing: التقسيم اللحني للكلام

من هذه المصطلحات، نجد أن مصطلح “لحن” هو مصطلح طيع في الاستخدام ويمكن استخدامه بسهولة في مفاهيم وسياقات أكثر تركيبا وتعقيدا.

قبل أن نختتم هنا، من المناسب أن أعرض التعريف الذي استخدمته في رسالتي لهذا المصطلح prosody:

“(1) acoustic patterns of F0, duration, amplitude … , and their articulatory correlates, that can be best accounted for by reference to higher-level structures, and (2) the higher-level structures that best account for these patterns.” (Shattuck-Hufnagel and Turk, 1996)

اللحن اللغوي هو عبارة عن (١) الأنماط الصوتية المتعلقة بالتردد الأساسي للصوت والفترة الزمنية للكلمات وعلو الصوت وما إلى ذلك … وما يناظرها من جوانب تتعلق بالنطق، وأفضل تفسير لهذه الأنماط هو عن طريق الإحالة إلى هياكل ذات مستويات أعلى (٢) وهو عبارة أيضا عن هذه الهياكل ذات المستويات الأعلى التي يمكنها تفسير هذه الأنماط الصوتية (من ورقة بحثية هامة جدا أعدتها ستيفاني شاتوك-هوفناجل وأليس تورك ١٩٩٦ كدليل للممارسين في هذا المجال).

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

المعسكر التدريبي لتعليم بايثون – الحلقة الأولى Python Bootcamp – Episode 1

نتحدث اليوم عن القوائم في لغة بايثون، مثل القائمة التالية:

f=[1,12,20,3,4,2,6,7,1,1,8,10,2]

يمكننا أن نعرف طول القائمة بالأمر التالي:

len(f)

ويمكننا أن نعرف أول عنصر في القائمة:

f[0]

وآخر عنصر:

f[-1]

ويمكننا أن نأخذ منها أي عدد من العناصر، مثلا أول ثلاثة عناصر:

f[-3:]

أو آخر ثلاثة عناصر:

f[-3:]

ويمكنك أن تعكس تسلسل القائمة بهذا الأمر:

f.reverse()

ويمكنك أن تعرف مدى تكرار أي عنصر في القائمة بهذا الأمر، لمعرفة تكرار العنصر 1 على سبيل المثال:

f.count(1)

ويمكنك ترتيب عناصر القائمة على النحو المناسب لك، فعلى سبيل المثال بالنسبة لقائمة البلدان التالي:

countries=[‘Egypt’,’Tunisia’,’Algeria’,’Saudi Arabia’,’United Arab Emirates’,’Kuwait’,’Qatar’,’Syria’,’Lebanon’,’Jordan’,’Yemen’,’Morocco’]

يمكنك ترتيبها أبجديا بشكل عادي:

countries_sorted_alphabetically=sorted(countries)

كما يمكنك تحديد معايير أدق للترتيب، فيمكنك مثلا ترتيب القائمة على حسب طول اسم البلد:

countries_sorted_by_length=sorted(countries,key=lambda x:len(x),reverse=True)

ويمكنك أن تضيف عنصرا واحدا إلى القائمة على النحو التالي:

countries.append(‘Oman’)

كما يمكنك أن تضيف مجموعة من العناصر :

countries.extend([‘Libya’,’Iraq’,’Sudan’,’Bahrain’])

كما يمكنك أن تحدد كل عنصر في القائمة مع ترتيبه في القائمة:

enumerated_list=[v for v in enumerate(countries )]

وهناك خاصية بالغة الأهمية في لغة بايثون، وهي خاصية

list comprehension

وسنتحدث عنها بالتفصيل فيما بعد بإذن الله، ولكن للتعرف عليها باختصار فهي كما يلي:

comprehend=[v for v in enumerated_list if v[1]==’Algeria’]

comprehend=[v for v in enumerated_list if v[1][0]==’T’]

وفكرتها باختصار إنك تعرض كل عناصر القائمة، وتحدد شرطا معينا للعناصر التي ترغب في استخلاصها (في السطر الأول كانت المعلومات التي أريدها هي كل العناصر التي اسمها

‘Algeria’

أما في الثانية فكانت كل العناصر التي يبدأ اسمها بحرف T

وستعرض لنا كل البلدان التي تبدأ بهذا الحرف.

نختتم بخاصية مفيدة جدا تستلزم استدعاء وحدة

itertools

على النحو التالي:

from itertools import groupby

الموقف هو أن لدينا قائمة باسماء بعض الأشخاص، ونريد أن نضع كل من يشتركون في الحرف الأول من اسمهم في مجموعة واحدة، فمثلا:

people=[‘Mohamed’,’Mahmoud’,’Alaa’,’Ahmed’,’Saleh’,’Hamad’,’Hussein’,’Rashed’,’Raghad’,

‘Bassem’,’Baheeg’,’Salma’,’Yaseen’,’Randa’,’Samy’,’Gaber’]

أول خطوة أن نرتب هذه الأسماء الترتيب العادي (وهو هنا الترتيب الأبجدي):

people.sort()

ثم نستخدم هذا السطر، الذي سنشرح كل جزء فيه فيما بعد:

people_counted=[[key,list(group)] for key,group in groupby(people,lambda x:x[0])]

وسيكون عندنا قائمة تضم كل مجموعة من الأشخاص الذين يشتركون في الحرف الأول من الاسم:

[[‘A’, [‘Ahmed’, ‘Alaa’]], [‘B’, [‘Baheeg’, ‘Bassem’]], [‘G’, [‘Gaber’]], [‘H’, [‘Hamad’, ‘Hussein’]], [‘M’, [‘Mahmoud’, ‘Mohamed’]],

[‘R’, [‘Raghad’, ‘Randa’, ‘Rashed’]], [‘S’, [‘Saleh’, ‘Salma’, ‘Samy’]], [‘Y’, [‘Yaseen’]]]

يمكنك تحميل الكود بالكامل من هنا