როგორ შევქმნათ მუსიკალური ფლეილისტი ტექსტური მოთხოვნით: Sentence Transformers და Gradio
ეს სტატია განმარტავს, თუ როგორ შეიძლება Sentence Transformers ბიბლიოთეკის სემანტიკური ძიების ფუნქციონალის გამოყენება სიმღერების ფლეილისტების შესაქმნელად ტექსტური მოთხოვნის საფუძველზე. აღწერილია წინადადების ემბედინგების გენერირება, მოდელის შერჩევა (მაგ. MS MARCO), გრძელი ტექსტების ლექსებად დაყოფა და ემბედინგების გამოყენება ძიებისთვის. პროექტი განხორციელებულია Gradio აპლიკაციის სახით, რომელიც ჰოსტირებულია Hugging Face Spaces-ზე, რაც მომხმარებლებს საშუალებას აძლევს ინტერაქტიულად მოძებნონ სიმღერები
როგორც Hugging Face ბლოგზე წინა პოსტებში განვიხილეთ, Sentence Transformers (ST) არის ბიბლიოთეკა, რომელიც გვაძლევს საშუალებას წინადადების ემბედინგების გენერირებისთვის, რის გამოყენებასაც მრავალი დანიშნულება აქვს. რადგანაც სიმღერების ტექსტების მონაცემთა ნაკრებზე მქონდა წვდომა, გადავწყვიტე გამომეყენებინა ST-ის სემანტიკური ძიების ფუნქციონალი მითითებული ტექსტური მოთხოვნიდან ფლეილისტების გენერირებისთვის. კონკრეტულად, მიზანი იყო მოთხოვნიდან ემბედინგის შექმნა, ამ ემბედინგის გამოყენება სემანტიკური ძიებისთვის წინასწარ გენერირებული ტექსტების ემბედინგების ნაკრებზე, რათა მიგვეღო შესაბამისი სიმღერების ნაკრები. ეს ყველაფერი განხორციელდებოდა Gradio აპლიკაციაში, ახალი Blocks API-ის გამოყენებით, რომელიც ჰოსტირებული იქნება Hugging Face Spaces-ზე. ჩვენ განვიხილავთ Gradio-ს ოდნავ მოწინავე გამოყენებას, ამიტომ, თუ ბიბლიოთეკის დამწყები ხართ, გირჩევთ წაიკითხოთ „Introduction to Blocks“ სანამ ამ პოსტის Gradio-სთან დაკავშირებულ ნაწილებს შეეხებით. ასევე, გაითვალისწინეთ, რომ მიუხედავად იმისა, რომ სიმღერების ტექსტების მონაცემთა ნაკრებს არ გამოვაქვეყნებ, ტექსტების ემბედინგები ხელმისაწვდომია Hugging Face Hub-ზე თქვენთვის გამოსაყენებლად. მოდით, დავიწყოთ! 🪂
ემბედინგები გადამწყვეტია Sentence Transformers-ში! წინა სტატიაში შევიტყვეთ, რა არის ემბედინგები და როგორ ვქმნით მათ, და გირჩევთ, გაეცნოთ მას, სანამ ამ პოსტს გააგრძელებთ. Sentence Transformers გთავაზობთ წინასწარ გაწვრთნილი ემბედინგის მოდელების დიდ კოლექციას! ის ასევე მოიცავს სახელმძღვანელოებს ამ მოდელების ჩვენივე საწვრთნელი მონაცემებით დასაზუსტებლად (fine-tuning), მაგრამ მრავალი გამოყენების შემთხვევაში (როგორიცაა სემანტიკური ძიება სიმღერების ტექსტების კორპუსზე) წინასწარ გაწვრთნილი მოდელები შესანიშნავად იმუშავებენ ყოველგვარი დამატებითი კონფიგურაციის გარეშე. თუმცა, ამდენი ხელმისაწვდომი ემბედინგის მოდელიდან, როგორ გავიგოთ, რომელი გამოვიყენოთ? ST-ის დოკუმენტაცია ხაზს უსვამს ბევრ ვარიანტს, მათ შეფასების მეტრიკებთან და განზრახული გამოყენების შემთხვევების აღწერილობებთან ერთად. MS MARCO მოდელები გაწვრთნილია Bing საძიებო სისტემის მოთხოვნებზე, მაგრამ რადგან ისინი სხვა სფეროებშიც კარგად მუშაობენ, გადავწყვიტე, რომ ნებისმიერი მათგანი კარგი არჩევანი იქნებოდა ამ პროექტისთვის. ფლეილისტის გენერატორისთვის ყველაფერი, რაც გვჭირდება, არის სიმღერების პოვნა, რომლებსაც აქვთ გარკვეული სემანტიკური მსგავსება, და რადგან კონკრეტული წარმადობის მეტრიკის მიღწევა არ მადარდებს, თვითნებურად ავირჩიე sentence-transformers/msmarco-MiniLM-L-6-v3.
ST-ის თითოეულ მოდელს აქვს კონფიგურირებადი შეყვანის თანმიმდევრობის სიგრძე (მაქსიმუმამდე), რის შემდეგაც თქვენი შეყვანები დამოკლდება. ჩემ მიერ არჩეულ მოდელს ჰქონდა მაქსიმალური თანმიმდევრობის სიგრძე 512 სიტყვის ნაწილად, რაც, როგორც აღმოვაჩინე, ხშირად არ არის საკმარისი მთლიანი სიმღერების ემბედირებისთვის. საბედნიეროდ, არსებობს მარტივი გზა, რომ ტექსტები დავყოთ უფრო მცირე ნაწილებად, რომელთა დამუშავებაც მოდელს შეუძლია – ლექსებად (verses)! მას შემდეგ, რაც სიმღერებს ლექსებად დავყოფთ და თითოეულ ლექსს ემბედირებას გავუკეთებთ, აღმოვაჩენთ, რომ ძიება ბევრად უკეთ მუშაობს. ემბედინგების რეალურად გენერირებისთვის, შეგიძლიათ გამოიძახოთ Sentence Transformers მოდელის .encode() მეთოდი და გადასცეთ მას სტრიქონების სია. შემდეგ შეგიძლიათ შეინახოთ ემბედინგები, როგორც გნებავთ – ამ შემთხვევაში ავირჩიე მათი „დაპიკვლა“ (pickle). თქვენი ემბედინგების სხვებისთვის გასაზიარებლად, შეგიძლიათ Pickle ფაილი ატვირთოთ Hugging Face მონაცემთა ნაკრებზე. წაიკითხეთ ეს სახელმძღვანელო მეტის გასაგებად, ან ეწვიეთ Datasets-ის დოკუმენტაციას, რომ თავად გამოსცადოთ! მოკლედ, Hub-ზე ახალი მონაცემთა ნაკრების შექმნის შემდეგ, შეგიძლიათ უბრალოდ ხელით ატვირთოთ თქვენი Pickle ფაილი „ფაილის დამატება“ ღილაკზე დაწკაპუნებით, როგორც ეს ნაჩვენებია ქვემოთ.
ბოლო, რაც ახლა უნდა გავაკეთოთ, არის ემბედინგების სემანტიკური ძიებისთვის გამოყენება! შემდეგი კოდი ტვირთავს ემბედინგებს, წარმოქმნის ახალ ემბედინგს მითითებული სტრიქონისთვის და ატარებს სემანტიკურ ძიებას ტექსტების ემბედინგებზე უახლოესი დამთხვევების საპოვნელად. შედეგებთან მუშაობის გასაადვილებლად, ასევე მომწონს მათი Pandas DataFrame-ში განთავსება. რადგან ვეძებთ ნებისმიერ ლექსს, რომელიც ემთხვევა ტექსტურ მოთხოვნას, დიდი ალბათობაა, რომ სემანტიკური ძიება იპოვის რამდენიმე ლექსს ერთი და იმავე სიმღერიდან. როდესაც დუბლიკატებს მოვაშორებთ, შესაძლოა მხოლოდ რამდენიმე გამორჩეული სიმღერა დაგვრჩეს. თუ გავზრდით ლექსების ემბედინგების რაოდენობას, რომელსაც util.semantic_search იძიებს top_k პარამეტრით, შეგვიძლია გავზარდოთ სიმღერების რაოდენობა, რომლებსაც ვიპოვით. ექსპერიმენტულად აღმოვაჩინე, რომ როდესაც top_k=20 დავაყენე, თითქმის ყოველთვის ვიღებდი მინიმუმ 9 განსხვავებულ სიმღერას.
დემოსთვის მინდოდა, რომ მომხმარებლებს შეეყვანათ ტექსტური მოთხოვნა (ან აერჩიათ რამდენიმე მაგალითიდან) და ჩაეტარებინათ სემანტიკური ძიება ყველაზე აქტუალური 9 სიმღერის მოსაძებნად. შემდეგ, მომხმარებლებს უნდა შეეძლოთ მიღებული სიმღერებიდან არჩევა ტექსტების სანახავად, რაც შესაძლოა წარმოდგენას შეუქმნიდათ, თუ რატომ შეირჩა ესა თუ ის სიმღერა. აი, როგორ შეგვიძლია ამის გაკეთება! Gradio დემოს თავში, აპლიკაციის გაშვებისას, ჩვენ ვტვირთავთ ემბედინგებს, mapping-ებს და ტექსტებს Hugging Face მონაცემთა ნაკრებებიდან. Gradio Blocks API გაძლევთ საშუალებას შექმნათ მრავალსაფეხურიანი ინტერფეისები, რაც იმას ნიშნავს, რომ თავისუფლად შეგიძლიათ შექმნათ საკმაოდ რთული თანმიმდევრობები თქვენი დემოებისთვის. აქ განვიხილავთ კოდის რამდენიმე მაგალითს, მაგრამ პროექტის კოდი ნახეთ იმისთვის, რომ ყველაფერი მოქმედებაში იხილოთ. ამ პროექტისთვის გვინდა, რომ მომხმარებლებმა აირჩიონ ტექსტური მოთხოვნა და შემდეგ, სემანტიკური ძიების დასრულების შემდეგ, შეეძლოთ შედეგებიდან სიმღერის არჩევა ტექსტების სანახავად. Gradio-ს დახმარებით, ეს შეიძლება აიგოს იტერატიულად
თეგები:
#ხელოვნური ინტელექტი
#მანქანური სწავლება
#hugging face
#ემბედინგები
#sentence transformers
#პითონი
#gradio
#სემანტიკური ძიება
#ფლეილისტები
#სიმღერის ტექსტები
წყარო: huggingface.co
AI-ით გადამუშავებული
მსგავსი სტატიები
ხელოვნური ინტელექტი
Anthropic-ის Claude-ის აღზევება Apple App Store-ის რეიტინგებში პენტაგონთან მოლაპარაკებების ფონზე
ხელოვნური ინტელექტი
ტრამპის ადმინისტრაცია Anthropic-ს სანქციებს უწესებს ხელოვნური ინტელექტის გამოყენებაზე უარის გამო: ექსპერტი ინდუსტრიის უსაფრთხოების ხარვეზებზე საუბრობს
ხელოვნური ინტელექტი