استخدام التعلم العميق بيثون نص الدليل الشامل ملخص الجزء الثاني (مع الدروس)

الكاتب: أرافيند PAI

الترجمة: الصين و

تصحيح التجارب المطبعية: شن ليبين

هذه المقالة حول 7500 كلمات وأوصى القراءة لمدة 15 دقيقة.

توضح هذه المقالة كيفية استخدام seq2seq لإنشاء ملخص نص النموذج، فضلا عن اهتمام هذه الآليات. وضع Keras صعودا واستخدامها لكتابة رمز نموذج كامل.

مقدمة

"أنا لا أريد تقرير كامل، فقط أعطني ملخص للنتائج." كثيرا ما أجد نفسي في هذا الموقف - سواء في الكلية أو في مكان العمل. قمنا بإعداد تقرير شامل، ولكن المعلم / المشرف ولكن فقط لديهم الوقت لقراءة ملخص.

يبدو مألوفا؟ حسنا، أنا قررت أن تفعل شيئا حيال ذلك. تقرير موجز يدويا تحويل تستغرق وقتا طويلا جدا، أليس كذلك؟ يمكنني الاعتماد على معالجة اللغة الطبيعية التقنيات (NLP) لمساعدتك؟

المعالجة الطبيعية للغة (NLP)

https://courses.analyticsvidhya.com/courses/natural-language-processing-nlp؟utm_source=blog&utm_medium=comprehensive-guide-text-summarization-using-deep-learning-python

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

كيف نستخدم عمق التعلم ملخص النص الكامل لنتائج ذلك؟ جيد جدا. لذلك، في هذه المقالة، سوف نقدم تدريجيا من استخدام عملية التعلم العميقة لبناء ملخص النص الذي يحتوي على كافة مفهوم المبنى التي يحتاجها. ثم أننا سنحقق ملخص نص النموذج الأول مع بيثون!

ملاحظة: تتطلب هذه المادة فهم أساسي لبعض مفاهيم التعلم عميقة. أقترح قراءة المقالة التالية.

  • A لا بد من قراءة مقدمة لتسلسل النمذجة (مع حالات الاستخدام)

https://www.analyticsvidhya.com/blog/2018/04/sequence-modelling-an-introduction-with-practical-use-cases/؟

utm_source على بلوق = & utm_medium = شامل دليل النص التعلم العميق باستخدام-تلخيص-الثعبان

  • لا بد من كلمة دروس لتعلم تسلسل النمذجة (deeplearning.ai دورة # 5)

https://www.analyticsvidhya.com/blog/2019/01/sequence-models-deeplearning/؟utm_source=blog&utm_medium=comprehensive-guide-text-summarization-using-deep-learning-python

  • أساسيات ديب التعلم: مقدمة قصيرة طويلة الأجل الذاكرة

https://www.analyticsvidhya.com/blog/2017/12/fundamentals-of-deep-learning-introduction-to-lstm/؟utm_source=blog&utm_medium=comprehensive-guide-text-summarization-using-deep-learning-python

دليل

ما ملخص النص هو 1. NLP؟

2. تسلسل تسلسل (Seq2Seq) مقدمة في نمذجة

3. تقدير التشفير (التشفير) - فك (فك) العمارة

4. المبرمج - القيود بنية فك

5. الحدس وراء آلية الاهتمام

6. فهم بيان المشكلة

7. استخدام ملخص النص تحقيق نموذج Keras في بيثون

8. آليات كيف الإنتباه تعمل؟

ظللت بعض "كيف الآليات في الانتباه العمل؟" في السطح النهائي من هذه المادة. هذا هو جزء كثيفة الرياضيات، فإنه ليس إلزاميا لفهم كيفية كود بايثون. ومع ذلك، وأنا أشجعكم لقراءته، لأنه سيتيح لديك فهم واضح للمفهوم البرمجة اللغوية العصبية.

ملاحظة: هذا آخر يحتوي على المحتوى 7-8،1-6 يرجى الاطلاع على: استخدام التعلم العميق بيثون نص الدليل الشامل ملخص الجزء الأول (مع الدروس)
7. استخدام ملخص نص حققت Keras في بيثون

لقد حان الوقت لنفتح Jupyter دفتر حتى! دعونا نفهم على الفور تفاصيل التنفيذ.

طبقة اهتمام مخصصة

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

1. من الاهتمام AttentionLayer استيراد

مكتبة الاستيراد

1. نمباي استيراد كما أرستها 2. الباندا استيراد كما المشتريات إعادة 3. استيراد 4. من BS4 BeautifulSoup استيراد 5. من keras.preprocessing.text استيراد Tokenizer 6. من pad_sequences استيراد keras.preprocessing.sequence 7. من nltk.corpus كلمات الإيقاف استيراد 8. من tensorflow.keras.layers استيراد المدخلات، LSTM، التضمين، الكثيفة، سلسل، TimeDistributed، ثنائي الاتجاه 9. من tensorflow.keras.models استيراد نموذج 10. من tensorflow.keras.callbacks استيراد EarlyStopping 11. تحذيرات استيراد 12. pd.set_option ( "display.max_colwidth"، 200) 13. warnings.filterwarnings ( "تجاهل")

قراءة مجموعة البيانات

يتضمن مجموعة البيانات المطبخ الأمازون التعليق. وتغطي هذه البيانات أكثر من 10 عاما، في كل شيء عن 500،000 اعتبارا من أكتوبر 2012 مراجعة. وتشمل هذه المنتجات الاستعراضات ومعلومات المستخدم والتقييمات والتعليقات، وملخص نص عادي. ويشمل أيضا تعليقات من جميع الفئات الأمازون الأخرى.

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

1. بيانات = pd.read_csv ( "../ الإدخال / الأمازون غرامة استعراضات الغذائية / Reviews.csv"، nrows = 100000)

إزالة التكرارات والقيم NA

1. data.drop_duplicates (فرعية = ، inplace = صحيح) #dropping التكرارات 2. data.dropna (المحور = 0، inplace = صحيح) #dropping غ

المعالجة

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

هذا هو القاموس كنا تمديد شكل مختصر من:

1. = contraction_mapping { "ليست": "لا"، "لا": "ليست"، "لا يمكن": "لا يمكن"، "قضية": "لأن"، "قد قمت ":" يمكن أن يكون "،" لا يمكن ":" لا يمكن "، 2. 3. "لا": "لا"، "لا": "لا"، "لا": "لا"، "لم": "لم"، "لم ":" لم "،" لم ":" لم "، 4. 5. "عنيدا": "انه" "، وسوف": "انه سوف"، "انه": "هو"، "كيف سوف": "كيف فعلت"، "how'd'y ":" كيف أنت "،" how'll ":" كيف سيكون "،" كيف ل":" كيف "، 6. 7. "فما استقاموا لكم فاستقيموا": "أود أن"، "I'd've": "كنت أود أن يكون"، "أنا سوف أكون": "سوف"، "I'll've": "سيكون لي "،" أنا ":" أنا "، وقال" لقد ":" لقد "،" كنت ":" أود أن " 8. 9. "i'd've": "كنت أود أن يكون"، "أنا": "سوف"، "i'll've": "سوف يكون لي"، "أنا": "أنا "، وقال" لقد ":" لدي "،" لا ":" لا "،" انها تريد ":" انها "، 10. 11. "it'd've": "كان يمكن أن يكون"، "انها سوف": "سيكون"، "it'll've": "سيكون لها"، "انها": "فمن" "دعونا": "دعونا"، "سيدتي": "سيدتي"، 12. 13. "mayn't": "لا يجوز"، "قد قمت": "قد يكون"، "قد لا": "قد لا"، "mightn't've": "قد لا يكون"، " يجب أن كنت ":" يجب أن يكون "، 14. 15. "لا يجب": "يجب أن لا"، "mustn't've": "يجب أن لا يكون"، "ضرورة عدم": "ضرورة عدم"، "needn't've": "الحاجة يكن لديك "،" الساعة ":" على مدار الساعة "، 16. 17. "oughtn't": "لا ينبغي"، "oughtn't've": "لا يجب أن يكون"، "لا": "لا يجوز"، "sha'n't": "لا يجوز" "shan't've": "لا يجوز أن يكون" 18. 19. "وقالت انها تريد": "انها سوف"، "she'd've": "إنها كانت"، "انها سوف": "انها سوف"، "she'll've": "انها سوف تضطر "،" انها ":" هي "، 20. 21. "يجب أن قمت": "يجب أن يكون"، "لا ينبغي": "لا ينبغي"، "shouldn't've": "لا ينبغي أن يكون"، "so've": "حتى يكون"، " لذلك ":" وذلك " 22. 23. "هذه ل": "هذا هو"، "أن يهمني": "من شأنها أن"، "that'd've": "قد يكون ذا"، "أن ل": "هذا هو"، "كنت هناك" : "هناك سوف"، 24. 25. "there'd've": "لن يكون هناك"، "هناك": "هناك"، "هنا": "هنا هي"، "انها تريد": "كانوا"، "انها تريد" لقد ":" سيكون لديهم "، 26. 27. "أنها سوف": "أنها سوف"، "they'll've": "سيكون لديهم"، وقال "انهم": "هم"، واضاف "لقد": "لديهم"، " to've ":" لدينا "، 28. 29. "لم يكن": "لم يكن"، "لكنا": "نحن سوف"، "we'd've": "سيكون لدينا"، "سنقوم": "نحن سوف"، " we'll've ":" سيكون لدينا "، وقال" نحن ":" نحن "، 30. 31. "لقد": "لدينا"، "لم تكن": "لم"، "ما سوف": "ما سوف"، "what'll've": "ما سوف يكون"، " ما كنت ":" ما هي "، 32. 33. "ما": "ما هو"، "what've": "ما يكون"، "عندما و": "عندما يكون"، "when've": "عندما يكون لديك"، "من أين": "أين فعل "،" أين ":" أين "، 34. 35. "where've": "حيث يكون"، "الذي سوف": "الذين"، "who'll've": "الذين سيكون لديهم"، "منظمة الصحة العالمية": "من هو"، "الذين" لقد ":" الذين "، 36. 37. "لماذا ل": "لماذا"، "why've": "لماذا يكون"، "will've": "سيكون لدينا"، "لن": "لن"، "won't've ":" أنا لن يكون " 38. 39. "سوف لقد": "ستكون له"، "لن": "لن"، "wouldn't've": "لن يكون"، "ي 'الل": "كلكم"، 40. 41. "y'all'd": "لكم جميعا سوف"، "y'all'd've": "لكم جميعا سيكون له"، "y'all're": "لكم جميعا"، "ص" all've ":" لديكم جميعا "، 42. 43. "وكنت": "لو كنت"، "you'd've": "سيكون لديك"، "عليك": "سوف"، "you'll've": "سيكون لديك " 44. 45. "أنت": "أنت"، "قمت": "لديك"}

نحن بحاجة إلى تحديد وظيفتين مختلفتين لتوليد ما قبل المراجعة وخلاصة القول، لأن الخطوات المعالجة تشارك في النص وملخصات مختلفة قليلا.

أ) تنظيف النص

دعونا ننظر مجموعة البيانات التعليقات 10 الأولى، لمعرفة كيفية النص خطوات تجهيز قبل:

1. بيانات

الإخراج:

وسوف تقوم بالمهام التالية المعالجة البيانات لدينا:

  • تحويل جميع المحتويات إلى أحرف صغيرة
  • علامات HTML الحذف
  • شكل مختصر لخريطة
  • حذف (الصورة)
  • حذف أي نص بين قوسين ()
  • القضاء على علامات الترقيم وخاصة الأحرف
  • كلمات التوقف الحذف
  • كلمة موجزة الحذف

دعونا ننظر في تعريف الدالة:

1. STOP_WORDS = مجموعة (stopwords.words ( 'الإنجليزية')) text_cleaner 2. صفر (النص): 3. newString = text.lower () 4. newString = BeautifulSoup (newString "lxml"). النص 5. newString = re.sub (ص '\ ( * \)'، ''، newString) 6. newString = re.sub ( ' "'، ''، newString) 7. newString = '' .join ( ) 8. newString = re.sub (ص "الصورة \ ب"، ""، newString) 9. newString = re.sub ( ""، ""، newString) 10. الرموز = 11. long_words = 12. لأنني في الرموز: 13. إذا ليون (ط) > = 3: #removing كلمة قصيرة 14. long_words.append (ط) 15. تعيده ( "أن" .join (long_words)). قطاع () 16. 17. cleaned_text = 18. لتي في البيانات : 19. cleaned_text.append (text_cleaner (ر))

ب) ملخص تنظيف

الآن، سنرى أول استعراض 10 صفوف لمعرفة الأعمدة ملخص خطوة المعالجة:

1. بيانات

الإخراج:

هذه المهمة تعريف الدالة:

summary_cleaner 1. صفر (النص): 2. newString = re.sub ( ' "'، ''، والنص) 3. newString = '' .join ( ) 4. newString = re.sub (ص "الصورة \ ب"، ""، newString) 5. newString = re.sub ( ""، ""، newString) 6. newString = newString.lower () 7. الرموز = newString.split () 8. newString = '' 9. لأنني في الرموز: 10. إذا ليون (ط) > 1: 11. newString = newString + انا + '' 12. عودة newString 13. 14. #Call الدالة أعلاه 15. = cleaned_summary 16. لتي في البيانات : 17. cleaned_summary.append (summary_cleaner (ر)) 18. 19. البيانات = cleaned_text 20. البيانات = cleaned_summary 21. البيانات . استبدال ( ''، np.nan، inplace = صحيح) 22. data.dropna (المحور = 0، inplace = صحيح)

تذكر أن تضيف START الخاصة وعلامة END في بداية ونهاية موجز:

1. بيانات بيانات تطبيق (لامدا س: '_START_' + س + "_END_ ')

والآن، دعونا ننظر في في تعليقات الخمسة الأولى وخلاصة القول:

1. لأنني في مجموعة (5): 2. طباعة ( "المشاركة:" والبيانات ) 3. الطباعة ( "ملخص:" والبيانات ) 4. طباعة ( "\ ن")

الإخراج:

تعلم تسلسل التوزيع

هنا، سنقوم بتحليل وطول ملخص تعليق على فهم كامل للتوزيع طول النص. هذا سيساعدنا على تحديد الحد الأقصى لطول التسلسل:

matplotlib.pyplot 1. استيراد كما معاهدة قانون البراءات 2. text_word_count = 3. summary_word_count = 4. 5. # ملء القوائم مع أطوال الجملة 6. لأنني في البيانات : 7. text_word_count.append (ليون (i.split ())) 8. 9. لأنني في البيانات : 10. summary_word_count.append (ليون (i.split ())) 11. 12. length_df = pd.DataFrame ({ 'النص': text_word_count، "ملخص": summary_word_count}) 13. length_df.hist (صناديق = 30) 14. plt.show ()

الإخراج:

مثيرة للاهتمام. يمكننا أن نستعرض يتم إصلاح طول كحد أقصى في 80، لأنه يبدو أن معظم طول المعلقين. وبالمثل، لا يمكننا استيعاب طول الحد الأقصى إلى 10:

1. max_len_text = 802. max_len_summary = 10

ونحن نقترب من بناء جزء من نموذج. وقبل ذلك، نحن بحاجة إلى تقسيم مجموعة البيانات في مجموعات التدريب والمصادقة عليها. سوف نستخدم 90 من مجموعة البيانات وتدريب البيانات، وتقييم (مجموعة محجوزة) أداء في 10 المتبقية:

1. من sklearn.model_selection train_test_split استيراد 2. x_tr، x_val، y_tr، y_val = train_test_split (بيانات بيانات ، test_size = 0.1، random_state = 0، خلط ورق اللعب = صحيح)

tokenizer جاهزة (Tokenizer)

Tokenizer بناء المفردات وتسلسل الكلمات في سلسلة من الأعداد الصحيحة. الاستمرار في بناء مجزئ للنص وخلاصة القول:

  • أ) النص tokenizer
ب) #prepare على tokenizer عن الاستعراضات على بيانات التدريب ج) x_tokenizer = Tokenizer () د) x_tokenizer.fit_on_texts (قائمة (x_tr)) ه) و) متواليات النص #convert في تسلسل صحيح ز) x_tr = x_tokenizer.texts_to_sequences (x_tr) ح) x_val = x_tokenizer.texts_to_sequences (x_val) ط) ي) #padding الصفر تصل أقصى طول ك) x_tr = pad_sequences (x_tr، MAXLEN = max_len_text، الحشو = 'آخر') ل) x_val = pad_sequences (x_val، MAXLEN = max_len_text، الحشو = 'آخر') م) ن) x_voc_size = ليون (x_tokenizer.word_index) +1
  • ب) ملخص مجزئ
1. #preparing على tokenizer لموجزة عن بيانات التدريب 2. y_tokenizer = Tokenizer () 3. y_tokenizer.fit_on_texts (قائمة (y_tr)) 4. 5. تسلسل موجز #convert في تسلسل صحيح 6. y_tr = y_tokenizer.texts_to_sequences (y_tr) 7. y_val = y_tokenizer.texts_to_sequences (y_val) 8. 9. #padding الصفر تصل أقصى طول 10. y_tr = pad_sequences (y_tr، MAXLEN = max_len_summary، الحشو = 'آخر') 11. y_val = pad_sequences (y_val، MAXLEN = max_len_summary، الحشو = 'آخر') 12. 13. y_voc_size = ليون (y_tokenizer.word_index) +1

بناء نموذج

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

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

هنا، قمنا بإنشاء ثلاث طبقات كومة LSTM التشفير:

1. من keras الخلفية استيراد كما K 2. K.clear_session () 3. latent_dim = 5004. 5. # التشفير 6. encoder_inputs = الإدخال (الشكل = (max_len_text،)) 7. enc_emb = تضمينها (x_voc_size، latent_dim، قابلة للتدريب = صحيح) (encoder_inputs) 8. 9. #LSTM 110. encoder_lstm1 = LSTM (latent_dim، return_sequences = صحيح، return_state = صحيح) 11. encoder_output1، state_h1، state_c1 = encoder_lstm1 (enc_emb) 12. 13. #LSTM 214. encoder_lstm2 = LSTM (latent_dim، return_sequences = صحيح، return_state = صحيح) 15. encoder_output2، state_h2، state_c2 = encoder_lstm2 (encoder_output1) 16. 17. #LSTM 318. encoder_lstm3 = LSTM (latent_dim، return_state = صحيح، return_sequences = صحيح) 19. encoder_outputs، state_h، state_c = encoder_lstm3 (encoder_output2) 20. 21. # إعداد وحدة فك الترميز. 22. decoder_inputs = الإدخال (الشكل = (بلا)) 23. dec_emb_layer = تضمينها (y_voc_size، latent_dim، قابلة للتدريب = صحيح) 24. dec_emb = dec_emb_layer (decoder_inputs) 25. 26. #LSTM باستخدام encoder_states كدولة الأولية 27. decoder_lstm = LSTM (latent_dim، return_sequences = صحيح، return_state = صحيح) 28. decoder_outputs، decoder_fwd_state، decoder_back_state = decoder_lstm (dec_emb، initial_state = ) 29. 30. #Attention طبقة 31. الاهتمام طبقة attn_layer = AttentionLayer (اسم = 'attention_layer') 32. attn_out، attn_states = attn_layer ( ) 33. 34. # الانتاج اهتمام CONCAT وفك الانتاج LSTM 35. decoder_concat_input = سلسل (المحور = -1، اسم = 'concat_layer') ( ) 36. طبقة 37. #Dense 38. decoder_dense = TimeDistributed (الكثيفة (y_voc_size، وتفعيل = 'softmax')) 39. decoder_outputs = decoder_dense (decoder_concat_input) 40. 41. # تحديد نموذج 42. نموذج = النموذجي ( ، Decoder_outputs) 43. model.summary ()

الإخراج:

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

1. model.compile (محسن = 'rmsprop "، وفقدان =' sparse_categorical_crossentropy ')

تذكر مفهوم وقف في وقت مبكر من ذلك؟ يتم استخدامه من قبل مراقبة متري المحددة من قبل المستخدم، يتم إيقاف تدريب الشبكة العصبية في الوقت المناسب. هنا، وأنا مراقبة فقدان مجموعة التحقق من صحة (val_loss). وبمجرد أن فقدان مجموعة التحقق من الصحة للانتعاش، فإننا سنتوقف عن نموذج التدريب:

1. وفاق = EarlyStopping (راصد = 'val_loss، وضع =' دقيقة '، مطول = 1)

سنقوم بتدريب نموذج في حالة وجود حجم دفعة من 512 وتحقق من أنه يحتفظ مجموعة (10 من مجموعة البيانات لدينا) على:

1. التاريخ = model.fit ( ، Y_tr.reshape (y_tr.shape ، y_tr.shape ، 1) ، العهود = 50، الاسترجاعات = ، Batch_size = 512، validation_data = ( ، Y_val.reshape (y_val.shape ، y_val.shape ، 1) ))

تعلم مؤامرة التشخيص

الآن، وسوف استخلاص بعض المؤامرات تشخيصية لفهم التغيرات في نموذج على مر الزمن:

1. من matplotlib pyplot استيراد 2. pyplot.plot (history.history ، والتسمية = 'القطار') 3. pyplot.plot (history.history ، والتسمية = 'اختبار') 4. pyplot.legend () pyplot.show ()

الإخراج:

يمكننا أن نستنتج، بعد دورات ال 10 الاولى (عصر)، وفقدان مجموعة المصادقة زيادة طفيفة. ولذلك، فإننا سوف تتوقف بعد هذا النموذج التدريب.

بعد ذلك، دعونا نبني القاموس لترجمة وجهة ومصدر الكلمات مؤشر المفردات:

1. reverse_target_word_index = y_tokenizer.index_word 2. reverse_source_word_index = x_tokenizer.index_word 3. target_word_index = y_tokenizer.word_index

منطق

التشفير وفك المنطق التخلص منها:

1. # التشفير الاستدلال 2. encoder_model = نموذج (المدخلات = encoder_inputs والمخرجات = ) 3. 4. # فك الاستدلال 5. # يلي التنسورات عقد دول خطوة زمنية سابقة 6. decoder_state_input_h = الإدخال (الشكل = (latent_dim،)) 7. decoder_state_input_c = الإدخال (الشكل = (latent_dim،)) 8. decoder_hidden_state_input = الإدخال (الشكل = (max_len_text، latent_dim)) 9. 10. # احصل على التضمينات من تسلسل فك 11. dec_emb2 = dec_emb_layer (decoder_inputs) 12. 13. # لتوقع الكلمة التالية في التسلسل، تعيين الدول الأولية للدول من الخطوة السابقة مرة 14. decoder_outputs2، state_h2، state_c2 = decoder_lstm (dec_emb2، initial_state = ) 15. 16. #attention الاستدلال 17. attn_out_inf، attn_states_inf = attn_layer ( ) 18. decoder_inf_concat = سلسل (المحور = -1، اسم = 'CONCAT') ( ) 19. 20. # A كثافة طبقة softmax لتوليد غالبا شعبة نظم على مدى المفردات المستهدفة 21. decoder_outputs2 = decoder_dense (decoder_inf_concat) 22. 23. # نموذج فك النهائي 24. decoder_model = النموذجي ( 25.  + ، 26.  + )

نحن هنا تعريف دالة، لتحقيق عملية التفكير (وصفنا في القسم السابق أيضا):

1. مواطنه decode_sequence (input_seq): 2. # شفر المدخلات كما ناقلات الدولة. 3. e_out، e_h، e_c = encoder_model.predict (input_seq) 4. 5. # توليد تسلسل الهدف فارغة من طول 1. 6. target_seq = np.zeros ((1،1)) 7. 8. # اختار 'بداية' كلمة والكلمة الأولى من تسلسل الهدف 9. target_seq target_word_index 10. 11. stop_condition = خطأ 12. decoded_sentence = '' 13. في حين لا stop_condition: 14. output_tokens، ح، ج = decoder_model.predict (  + ) 15. 16. # عينة عربون 17. sampled_token_index = np.argmax (output_tokens ) 18. sampled_token = reverse_target_word_index 19. 20. إذا (sampled_token = 'نهاية'!): 21. decoded_sentence + = '' + sampled_token 22. 23. # حالة الخروج: ضرب إما أقصى طول أو العثور على وقف الكلمة. 24. إذا (sampled_token == 'نهاية' أو ليون (decoded_sentence.split ()) > = (Max_len_summary-1)): 25. stop_condition = صحيح 26. 27. # تحديث تسلسل الهدف (من طول 1). 28. target_seq = np.zeros ((1،1)) 29. target_seq sampled_token_index 30. 31. # الدول الداخلية تحديث 32. e_h، e_c = ح، ج 33. decoded_sentence 34. عودة

نحدد وظيفة لتحويل سلسلة من ملخصات الأعداد الصحيحة واستعراض تسلسل الكلمة:

 seq2summary 1. صفر (input_seq): 2. newString = '' 3. لأنني في input_seq: 4. إذا (! (I = 0 و I = target_word_index ) وأنا = target_word_index ): 5. newString = newString + reverse_target_word_index + " 6. عودة newString 7. seq2text 8. صفر (input_seq): 9. newString = '' 10. لأنني في input_seq: 11. إذا (ط = 0!): 12. newString = newString + reverse_source_word_index + " 13. عودة newString 1. لأنني في مجموعة (ليون (x_val)): 2. طباعة ( "مراجعة"، seq2text (x_val )) 3. الطباعة ( "موجز الأصلي:" seq2summary (y_val )) 4. طباعة ( "توقع ملخص:" decode_sequence (x_val .reshape (1، max_len_text))) 5. طباعة ( "\ ن")

وفيما يلي ملخص لبعض من نموذج ولدت:

انها حقا بارد. نحن جيل حتى نموذج ملخص المجرد والعملي ليس على تطابق تام، لكنهم جميعا ينقل نفس المعنى. لدينا نموذج قادر على إنتاج موجز واضح من النص وفقا للسياق.

ما سبق هو كيف نقوم ملخص نص استخدام مفهوم التعلم العميق في بيثون.

كيف يمكننا تحسين أداء النموذج؟

لا يتوقف التعلم الخاص بك هناك! يمكنك أن تفعل أكثر في محاولة لنموذج:

  • أقترح عليك أن تزيد من حجم مجموعة التدريب البيانات ونماذج البناء. مع زيادة حجم التدريب مجموعة البيانات، نموذج التعلم العمق تعزيز قدرة التعميم
  • محاولة LSTM ثنائية الاتجاه، وأنها قادرة على التقاط سياق الاتجاهين، وإنتاج سياق أفضل من ناقلات
  • استخدام استراتيجية البحث الكتلة (شعاع استراتيجية البحث) فك تسلسل اختبار بدلا من استخدام طريقة الجشع (argmax)
  • نموذج تقييم أداء النتيجة BLEU
  • تنفيذ تغطية الشبكة مؤشر مولد وآليات
8. آليات كيف الإنتباه تعمل؟

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

مصدر تسلسل الناتج التشفير الدول مخبأة في كل مرة خطوة ي، (HJ).

وبالمثل، فإن الناتج من فك مخبأة تسلسل هدف في كل وقت ط خطوة (الاشتراكية).

نحسب يشار إلى درجة التوافق على أنه (Eij) يسجل على أساس النتيجة، عبارة مصدر تتماشى مع كلمة المستهدفة. يسجل حساب المحاذاة من المصدر والهدف HJ مخبأة الدولة الاشتراكية باستخدام وظيفة نتيجة المخفية. وتعطى من قبل المعادلة التالية:

eij = النتيجة (الاشتراكية، HJ)

حيث eij يمثل جزء معين من الانحياز مصدر وقت الخطوة i والوقت الخطوة j.

اعتمادا على نوع وظيفة التهديف يستخدم، وهناك أنواع مختلفة من آليات الإنتباه. I المذكورة أدناه بعض الآليات الاهتمام الشعبية:

نحن نستخدم وظيفة على درجة المواءمة موحدة softmax للحصول على انتباه الوزن (BEL):

نحسب الاهتمام إخفاء الأوزان HJ تنفيذا مشتركا والتشفير والمنتج الخطية لخلق سياق ناقلات المعنية (CI):

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

سي = سلسل ( )

ثم تشارك ناقلات في طبقة مخفية لإنتاج كثيفة سي تغذية يي.

يي = كثيفة (سي)

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

  • التشفير يقرأ مصدر مخفي كامل تسلسل الانتاج وكل خطوة الوقت، مثل H1، H2، H3، H4

  • فك يقرأ كامل تسلسل الهدف إزاحة خطوة الوقت، وإخراج كل خطوة الوقت خفية، مثل S1، S2، S3

الوقت المستهدف الخطوة i = 1

  • يتم احتساب النتيجة باستخدام وظيفة مرحبا من المصدر الخفية وجهة خفية محاذاة النتيجة s1 وe1j:
E11 = النتيجة (S1، H1) E12 = النتيجة (S1، H2) E13 = النتيجة (S1، H3) E14 = النتيجة (S1، H4)
  • Softmax محاذاة عشرات باستخدام الأوزان موحدة e1j سوف تولد الاهتمام a1j:
A11 = إكسب (E11) / ((إكسب (E11) + إكسب (E12) + إكسب (E13) + إكسب (E14)) A12 = إكسب (E12) / (إكسب (E11) + إكسب (E12) + إكسب (E13) + إكسب (E14)) A13 = إكسب (E13) / (إكسب (E11) + إكسب (E12) + إكسب (E13) + إكسب (E14)) A14 = إكسب (E14) / (إكسب (E11) + إكسب (E12) + إكسب (E13) + إكسب (E14))

السياق مشاركة ناقلات C1 والمستمدة من التشفير الخطي ومحاذاة مخبأة النتيجة a1j المنتج الدين حاج من:

C1 = H1 * A11 + H2 * A12 + H3 * A13 + H4 * A14

  • ناقلات السياق C1 والمشاركة في بعض الدول مخبأة S1 لإنتاج ناقلات ربط مشاركة S1 مخفي
S11 = سلسل ( )
  • ناقلات وطبقة ثم خفية مرتبطة تماما S1 لإنتاج Y1
Y1 = كثيفة (S1)

الوقت المستهدف الخطوة i = 2

  • يتم احتساب S2 نظرا التهديف وظيفة من مصدر خفي وجهة مرحبا مخفي محاذاة النتيجة e2j
E21 = النتيجة (S2، H1) E22 = النتيجة (S2، H2) E23 = النتيجة (S2، H3) E24 = النتيجة (S2، H4)
  • Softmax محاذاة عشرات باستخدام الأوزان موحدة e2j سوف تولد الاهتمام a2j:
A21 = إكسب (E21) / (إكسب (E21) + إكسب (E22) + إكسب (E23) + إكسب (E24)) A22 = إكسب (E22) / (إكسب (E21) + إكسب (E22) + إكسب (E23) + إكسب (E24)) A23 = إكسب (E23) / (إكسب (E21) + إكسب (E22) + إكسب (E23) + إكسب (E24)) A24 = إكسب (E24) / (إكسب (E21) + إكسب (E22) + إكسب (E23) + إكسب (E24))
  • مشاركة سياق C2 التشفير من مرحبا ناقلات ومخفية a2j درجة التوافق وتصدير الخطية المنتج:
C2 = H1 * A21 + H2 * A22 + H3 * A23 + H4 * A24

  • سنشارك في سياق C2 ناقلات وتوصيل الهدف لإنتاج الدولة الخفية S2 ناقلات S2 مشاركة إخفاء
S2 = سلسل ( )
  • ويتم توصيل ناقلات طبقة ثم مخبأة S2 إلى أقصى حد لإنتاج Y2

Y2 = كثيفة (S2)

يمكننا استهداف الوقت الخطوة i = 3 ينفذ خطوات مماثلة لإنتاج Y3.

أنا أعرف أكثر قليلا هذا الجزء من الرياضيات ونظرية، ولكن فهم وهذه النقطة تساعدك على السيطرة على الفكرة الأساسية وراء آلية من الاهتمام. لقد ولدت عليها عدة NLP التطورات الأخيرة، والآن حان دورك!

خاتمة

خذ نفسا عميقا، وقدمنا الكثير من المحتوى في هذه المقالة. وأهنئكم على استخدام التعلم العميق لبناء نموذج ملخص النص الأول! نحن نعلم بالفعل كيفية استخدام بايثون لبناء Seq2Seq الخاصة مولد ملخص النص.

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

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

  • المعالجة الطبيعية للغة (NLP) باستخدام بايثون

https://courses.analyticsvidhya.com/courses/natural-language-processing-nlp؟utm_source=blog&utm_medium=comprehensive-guide-text-summarization-using-deep-learning-python

  • مقدمة في معالجة اللغات الطبيعية (NLP)

https://courses.analyticsvidhya.com/courses/Intro-to-NLP؟utm_source=blog&utm_medium=comprehensive-guide-text-summarization-using-deep-learning-python

يمكنك أيضا قراءة المقال على فيديا تحليلات الروبوت APP.

العنوان الأصلي:

دليل شامل لتلخيص نص باستخدام ديب التعلم في بيثون

الرابط الأصلي:

https://www.analyticsvidhya.com/blog/2019/06/comprehensive-guide-text-summarization-using-deep-learning-python/

المحرر: وانغ جينغ تم التعليق بواسطة: لين يي لين

مقدمة المترجم

والصين، ماجستير في هندسة البرمجيات يغادرون ألمانيا. بسبب الاهتمام في تعلم الآلة، اختارت أطروحة الماجستير لتحسين الاستفادة من kmeans التقليدية الخوارزمية الجينية. في البيانات الكبيرة الحالية المتعلقة الممارسة في هانغتشو. THU ترغب في الانضمام بيانات الإرسال للقيام مساهمتها في مساعدة الزملاء IT نأمل أيضا لجعل الكثير من مثل التفكير رفيق.

- انتهى -

تسينغهوا الانتباه - بيانات أكاديمية تشينغداو للعلوم قناة الصغرى الرسمية منصة الجمهور " بيانات الإرسال THU "أيتها الأخوات ولا". إرسال البيانات THU "لرعاية المزيد من المحاضرات ونوعية المحتوى.

كأس العالم للسيدات على بينة من هذه الفجوة، Hengda طلاب المدارس القدم وطنية Rezhao النساء

افتتح الدقة تلبية الطلب الاستهلاكي، ووضع Jingdong C2M جنبا إلى العلامة التجارية الأم والطفل حقبة جديدة من المستهلكين

"ديب التعلم 500 أسئلة" تم تحديث، تألق جيثب 2.6W (مرفق تحميل كامل)

معك ومعرفة كيفية إنشاء عقدة نظام المجموعة ثلاثة HDFS HDFS (مع رمز والقضية)

حوار أستاذ تشينغهوا الشمس Maosong: الذكاء الاصطناعي من الجيل الثالث للتعامل مع مشكلة "تفسيرها"

حصادة بدون طيار لاول مرة وطنية! تقنية الأسود من قرية جيا شيانغ، الاصدقاء الاجانب هتف

60 عامًا من التاريخ الفني ، تأخذك إلى فهم الماضي والحاضر من الذكاء الاصطناعي

تغيير AI "أعاقت بشكل مصطنع"؟ العلم الجديد السببية

بناء نماذج التعلم الآلي باستخدام TensorFlow.js وبيثون في المتصفح

أنت مسؤول عن أي جزء من الذكاء الاصطناعي؟ بناء خريطة المعرفة تعتمد أساسا على دليل أو الجهاز؟

البيانات روج: الأولية تكنولوجيا المحاكاة الديناميكية ودورة حياة التطبيق في مجال الضرائب

تم إيقاف 360 الأعمال الهاتف المحمول، تجنيد 37 مدينة متوسط الراتب الشهري من 8452 يوان ......