اذهب إلى المحتوى

السؤال

نشر

مرحبا

أعمل على بيانات لغوية  باستعمال LSTM

و عند تجربة الكود تظهر لي الدقة 99%

أما المخرج فمخيب للآمال ولا أعرف ما السبب

النظام عبارة عن إسناد نوع الكلمة للكلمة مثلا: ذهب V يعني فعل

البيانات  في عمودين الأول الكلمة والثاني نوع الكلمة 

وعندي 30 ألف كلمة تدريب واختبار

فهل المشكلة في تنسيق البيانات! أم في القيم ! أم في عدد الكلمات!

لأن الأكواد تعمل بشكل جيد 

فضلا هل لديكم توجيه معين حيال هذه المشكلة؟

 

 

 

Recommended Posts

  • 1
نشر

هل يمكنك أن ترفق بعض البيانات المستخدمة للتدريب؟

أنا أعتقد أن المشكلة هي في شكل البيانات، لأن قوة LSTM تظهر عند إستخدامها على الsequences أو البيانات المتتابعة أو المتسلسلة، وإستخدامها لعمل تصنيف للكلمة بدون مدخلات متسلسلة سيحدث overfitting.

  • 1
نشر

تمام البيانات موجودة في شكل متسلسل وهذا صحيح، بالتالي تكون الدقة العالية التي حققها المودل هي دليل على حدوث الoverfitting.

يمكنك معالجة هذا بتصغير حجم المودل فمثلا يمكنك تقليل حجم الembedding layer أو حجم الLSTM layer.

يمكنك القراءة أكثر عن ظاهرة الoverfitting من هنا.

  • 0
نشر

يبدو أن الmodel لديك به مشكلة الoverfitting.

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

أنا أتوقع أن الدقة 99% هي على بيانات التدريب، فما هي الدقة على بيانات الإختبار؟

أيضاً هل تقوم بتطبيق الLSTM على مستوى الحرف أم على مستوى الكلمة؟

بسبب أن كل input لديك هو عبارة عن كلمة واحدة فقط، لن يكون إستخدام الLSTM على مستوى الكلمة مناسب، ومن الصحيح إستخدامها على مستوى الحرف.

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

بتاريخ 7 ساعات قال Arabic Language:

أما المخرج فمخيب للآمال ولا أعرف ما السبب

ما المقصود بالمخرج هنا؟ هل تقوم بعمل generation لكلمات؟

  • 0
نشر

شكرا لردك وسأبدأ من الأخير.

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

ومليء بالأخطاء.

البيانات واحدة وتقسيمها عشوائي

وجربت أيضا فصلها يدويا ونفس المشكلة

أقوم به على مستوى الكلمة وليس على مستوى الحرف 

 

from keras.models import Sequential
from keras.layers import Dense, LSTM, InputLayer, Bidirectional, TimeDistributed, Embedding, Activation
from keras.optimizers import Adam
 
 
model = Sequential()
model.add(InputLayer(input_shape=(MAX_LENGTH, )))
model.add(Embedding(len(word2index), 256))
model.add(Bidirectional(LSTM(128, return_sequences=True)))
model.add(TimeDistributed(Dense(len(tag2index))))
model.add(Activation('softmax'))
 
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(0.001),
              metrics=['accuracy', ignore_class_accuracy(0)])
 
model.summary()

 

بالنسبة للتشكيل أنا أريد بناء هذا النظام للنصوص غير المشكولة لأننا في الغالب نكتب بدونها.

 

  • 0
نشر (معدل)

لما    D
توفى    V
والد    A
السعدى    N
عطفت    V
عليه    RP
زوجة    N
والده    A

 

هكذا في ملف txt ويفصل بين الكلفة ونوعها tab
 

طبعا عندي أكواد أستعملها لفصل كل عمود عن الآخر

فتصبح على هذه الصورة

['ف' 'قد' 'عاش' 'الى' 'سنة' '1388' 'ه' 'ست' 'و' 'تسعين' 'سنة']

['RP' 'RP' 'V' 'RP' 'N' 'DIGIT' 'ABBREV' 'N' 'N' 'N' 'N']

 

بتاريخ 21 دقائق مضت قال مصطفى القباني:

هل يمكنك أن ترفق بعض البيانات المستخدمة للتدريب؟

أنا أعتقد أن المشكلة هي في شكل البيانات، لأن قوة LSTM تظهر عند إستخدامها على الsequences أو البيانات المتتابعة أو المتسلسلة، وإستخدامها لعمل تصنيف للكلمة بدون مدخلات متسلسلة سيحدث overfitting.

لما    D
توفى    V
والد    A
السعدى    N
عطفت    V
عليه    RP
زوجة    N
والده    A

 

هكذا في ملف txt ويفصل بين الكلفة ونوعها tab
 

طبعا عندي أكواد أستعملها لفصل كل عمود عن الآخر

فتصبح على هذه الصورة

['ف' 'قد' 'عاش' 'الى' 'سنة' '1388' 'ه' 'ست' 'و' 'تسعين' 'سنة']

['RP' 'RP' 'V' 'RP' 'N' 'DIGIT' 'ABBREV' 'N' 'N' 'N' 'N']

تم التعديل في بواسطة Arabic Language
  • 0
نشر
بتاريخ 18 ساعات قال مصطفى القباني:

تمام البيانات موجودة في شكل متسلسل وهذا صحيح، بالتالي تكون الدقة العالية التي حققها المودل هي دليل على حدوث الoverfitting.

يمكنك معالجة هذا بتصغير حجم المودل فمثلا يمكنك تقليل حجم الembedding layer أو حجم الLSTM layer.

يمكنك القراءة أكثر عن ظاهرة الoverfitting من هنا.

أخي الكريم

 

عفوا عندي مشكلة أخرى في البيانات وهو أني عند التنبؤ وإدخال نص خارجي لتحديد أنواع الكلمة فيه يقوم بتحديد كل الكلمات التي وردت في قاعدة البيانات التي تدرب عليها وإذا كان هناك كلمة لم يرها يعطيني keyError فكيف تحل هذه المشكلة؟

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...