
سنحاول اليوم تدريب شبكتنا العصبية لكتابة كلمات للأغاني. ستكون عينة التدريب هي نصوص مجموعة 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