اكتب أغنيتك في 10 دقائق (وحدة textgenrnn Python3)


سنحاول اليوم تدريب شبكتنا العصبية لكتابة كلمات للأغاني. ستكون عينة التدريب هي نصوص مجموعة Hands Up. لا شيء يمنعك من تبادل البيانات لنصوص مجموعاتك المفضلة. لاستخراج البيانات من المواقع الإلكترونية ، نستخدم Python3 (الوحدة النمطية BeautifulSoup).


ستكون المهمة هي تنزيل البيانات (النصوص) من المواقع الإلكترونية ثم تدريب الشبكة العصبية بناءً عليها.


في الواقع ، يمكنك تقسيم العمل إلى مرحلتين:
المرحلة 1: تفريغ وحفظ كلمات بتنسيق مناسب.
المرحلة 2: تدريب الشبكة العصبية الخاصة بك.


إلى المتصيدون والهواة للبحث عن المعنى السري سأقوله على الفور:


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

المرحلة 1


بيئة افتراضية للمشروع (virtualenv).
REPO


#start virtualenv -p python3 my_song # 

 #run source my_song/bin/activate 

 #install modules pip install -r requirements.txt 

تفريغ وحفظ كلمات من موقع الويب في حفظ بتنسيق * .csv.


 #-*- coding: utf-8 -*- import urllib.request from bs4 import BeautifulSoup import pandas as pd URL = 'http://txtmusic.ru/index.php?s=%D0%F3%EA%E8+%C2%E2%E5%F0%F5%21' #  page = urllib.request.urlopen(URL) soup = BeautifulSoup(page) li = soup.body.findAll('li') #   <li>    URL URLS = ['http://txtmusic.ru/'+laget('href') for l in li] df = pd.DataFrame(columns=['name', 'text']) list_of_names = [] list_of_text = [] ind=0 BIG = "" for URL in URLS: page = urllib.request.urlopen(URL) soup = BeautifulSoup(page) article = soup.body.findAll('article') #    ( rticle) text = str(article[0]).split('\n')[8] text = text.split('<br/>') text = [t for t in text if t!=''] text = " ".join(text) name= str(article[0].h1).split(" - ")[1].rstrip("</h1>") list_of_text.append(text) list_of_names.append(name) df.name = list_of_names df.text = list_of_text df.to_csv('songs.csv') #    'songs.csv' 

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


 import pandas as pd df = pd.read_csv('songs.csv') df = df[['name','text']] df.text = df.text.apply(lambda x: cyrtranslit.to_latin(x, 'ru')) df.text.to_csv('trans.csv') '''  cyrtranslit.to_latin('      ', 'ru') 'Moyo sudno na vozdushnoj podushke polno ugrej' cyrtranslit.to_cyrillic('Moyo sudno na vozdushnoj podushke polno ugrej') '      ' ''' 

المرحلة 2


 from textgenrnn import textgenrnn textgen = textgenrnn() textgen.train_from_file('trans.csv', num_epochs=1) # created file textgenrnn_weights.hdf5 

وهذا كل شيء! كان الأمر سهلًا ومريحًا للاستخدام (textgenrnn) [ https://github.com/minimaxir/textgenrnn ] ، لا تزال النصوص غير واقعية ، لكن يتعين عليك تغيير معلمات النموذج بنفسك.



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


 #      textgen_2 = textgenrnn('textgenrnn_weights.hdf5') textgen_2.generate(3, temperature=1.0) textgen_2.generate_to_file('lyrics.txt') 

ما التالي؟


الآن ، بعد أن تعلمت كيفية جعل textgenrnn لإنشاء نصوص ، يمكنك القيام بالكثير باستخدام هذه المعرفة:


  • إنشاء مقال ويكيبيديا.
  • المشاركات على الشبكات الاجتماعية.
  • الأخبار.

قائمة المصادر المستخدمة:


https://github.com/minimaxir/textgenrnn
https://towardsdatascience.com/ai-generates-taylor-swifts-song-lyrics-6fd92a03ef7e

Source: https://habr.com/ru/post/ar464973/


All Articles