إنَّ مبادئ كل فن عشرة … الحد والموضوع ثم الثمرة
وفضله ونسبة والواضع … والاسم الاستمداد حكم الشارع
فمسائل والبعض بالبعض اكتفى … ومن درى الجميع حاز الشرفا
تراكم معرفي وليس شخصًا واحدًا:
ثلاثة أقسام حسب إشارة التعلم:
في هذا النموذج، يقوم المبرمج بدور اللغوي. حيث يجب عليه كتابة كل قاعدة نحوية وكل مفردة يدوياً. إذا لم تكن القاعدة مكتوبة في الكود، فلن يفهمها النظام.
def rule_based_translate(sentence):
# Dictionary (Lexicon)
dictionary = {
"the": "el",
"cat": "gato",
"is": "está",
"black": "negro",
"house": "casa"
# ...
}
words = sentence.lower().split()
translated = []
for i, word in enumerate(words):
# Rule 1: Direct word-for-word mapping
trans_word = dictionary.get(word, word)
# Rule 2: Spanish Adjective Placement
# (e.g., "black cat" -> "gato negro")
if word == "black" and i > 0 and words[i-1] == "cat":
# Swap previous word with current translation
# ...
pass
else:
# ...
pass
# Rule 3: ...
# Rule 4: ...
return " ".join(translated)
print(rule_based_translate("the black cat"))
# Output: el gato negroيتطلب هذا النوع جهداً بشرياً هائلاً لصياغة آلاف القواعد لكل لغة، ويصعب عليه التعامل مع الاستثناءات اللغوية.
هنا يبدأ تعلم الآلة. نحن لا نعطيه قواعد بل نعطيه بيانات متوازية (جمل مقابل ترجتمها)، وهو يستنتج الأنماط والاحتمالات وحده.
from collections import defaultdict, Counter
# SMT: Learning from data (Parallel Corpus)
parallel_data = [
("the cat", "el gato"),
("the house", "la casa"),
("the black cat", "el gato negro"),
("the black house", "la casa negra")
]
def train_smt(data):
# Count occurrences of source-target word pairs
counts = defaultdict(Counter)
for src, tgt in data:
for s_word in src.split():
for t_word in tgt.split():
counts[s_word][t_word] += 1
# Calculate Probability: P(target | source)
model = {}
for s_word, t_variants in counts.items():
total = sum(t_variants.values())
model[s_word] = {t: count / total for t, count in t_variants.items()}
return model
def smt_translate(sentence, model):
words = sentence.lower().split()
# Pick the target word with the highest probability
return " ".join([max(model[w], key=model[w].get) for w in words])
model = train_smt(parallel_data)
print(smt_translate("the black cat", model))
# Output: el gato negro| الميزة | القواعد (RBMT) | الإحصاء (SMT) |
|---|---|---|
| المصدر | علماء لغويات | بيانات ضخمة |
| المنطق | “إذا.. افعل” | احتمالات وأنماط |
| الصيانة | صعبة | سهلة |
| الميزة | القواعد (RBMT) | الإحصاء (SMT) |
|---|---|---|
| المصدر الأساسي | علماء لغويات وقواميس | بيانات ضخمة (Big Data) |
| المنطق | “إذا حدث هذا، افعل ذاك” | حساب احتمالات وأنماط |
| الصيانة | صعبة (تعديل القواعد يدوياً) | سهلة (إضافة بيانات أكثر فقط) |
ومن ميزات تعلم الآلة: التكيُّف مع تغير اللغة بل مع استعمالات الألفاظ في السياقات المختلفة مع اختلاف الأزمنة.