Manga recommendation 📚⭐️

MadNess_
7 min readJun 12, 2023

--

สิ่งที่มาตอบสนอง requirement ของนักอ่านมังงะ 🤓

เคยไหม?? ที่ลองอ่านมังงะซักกี่เรื่องก็ไม่ตรงใจ มันไม่ touch ใจเอาซะเลย เราเลยทำสิ่งนี้มาแก้ปัญหานี้

ขอแนะนำตัวเราก่อนดีกว่า :
เราชื่อ เจนตา วงศ์เลิศสกุล เรียกเราว่า เจน ได้เลย
ตอนนี้เรียนอยู่ชั้นมัธยมศึกษาปีที่ 6 ที่โรงเรียนดรุณสิกขาลัย(โครงการ วมว.)

เป็นครั้งแรกที่ได้เขียนบทความแบบนี้ครั้งแรก แอบตื่นเต้น และไม่มั่นใจ แต่ก็มาเริ่มกันเลยดีกว่า

Intro :
ก่อนที่จะเริ่มขอเล่าสั้นๆ เกี่ยวกับที่มาที่ไปของโปรเจคเล็กๆนี้
จริงๆแล้วเราเป็นคนชอบอ่านมังงะมากๆ เพราะเราชอบกลิ่นกระดาษ ชอบเวลาได้จับกระดาษ ชอบที่เราสามารถละจากหน้าจอมาอ่านหนังสือได้ ส่วนใหญ่มังงะที่อ่านเนี่ย ก็จะถามเพื่อนมาว่าควรอ่านเรื่องไหน โดยเราก็จะบอกแนวมังงะที่อยากอ่านกับเพื่อนไป เพื่อนที่เป็นคนที่อ่านมังงะและดูเมะเยอะเนี่ย ก็พอจะบอกได้ แต่อยู่มาวันหนึ่งแนวเรื่องมังงะที่เราอยากอ่าน มันเริ่มที่จะเรื่องมาก เพื่อนเราก็ไม่รู้ว่าจะมีเรื่องไหนตรงตาม requirement เลยเป็นที่มาสั้นๆ ขอมากกว่านี้

ปัญหามันคือ เราไม่สามารถถามเพื่อนได้ตลอด แล้วไม่ใช่เพื่อนจะรู้ทุกเรื่อง วิธีการคือการ search google ซึ่งบ้างทีเราก็จะได้อะไรที่ไม่ค่อยตรงความต้องการ ส่วนใหญ่ที่ขึ้นมักจะเป็นกระทู้แล้วเป็นที่เคยอ่าน หรือมีประสบการณ์มาตอบ แต่บางทีมันก็แอบมีความคิดเห็นของคนอ่านบางส่วน การตีความของคนอ่านรวมไปด้วย ซึ่งมันทำให้ไม่ค่อยได้สิ่งที่ต้องการเท่าไหร่

แล้ว ทำไมเราไม่ทำสิ่งนั้นขึ้นมาเองเลยล่ะ????
คำตอบคือ ใช่ เราทำ ทำระบบแนะนำมังงะตาม requirment ของผู้ใช้ ซึ่งสิ่งที่เราทำ ดันแนะนำได้ดีกว่า ChatGPT ซะอีก ถ้าอยากรู้ว่าเราทำยังไง ก็ลองมาดูกัน

เข้าเรื่องเลยดีกว่า เราขอแบ่งงานนี้อย่างละเอียดออกเป็น 10 steps (เยอะจัง ;-;)

Overview

เราใส่ overview ของโปรเจคนี้ เผื่อจะมีคนอยากข้ามไปอ่านในส่วนต่างๆ
แต่ตอนนี้เรามาเริ่มกันเลยดีกว่าค่ะ

Step 1 : สิ่งที่คาดหวังจะให้โปรเจคเป็น
จริงๆ ภาพที่มองเอาไว้คือสิ่งที่มาตอบโจทย์นักอ่านเรื่องมาก เช่น อยากได้มังงะที่ตัวเอกมีพลัง มีเรื่องวิญญาณ แต่ไม่ใช่ผี มีเรื่องคำสาป เรื่องคุณไสย (ถ้าจะเรื่องมากขนาดนี้!!) ก็อยากให้ user มาใส่ความต้องการเข้าไป แล้วก็ output เป็นมังงะซัก 5 เรื่องที่ใกล้เคียงกับความต้องการมากที่สุด

เพื่อนเรา ตอนที่โดนเรา request เยอะๆ

Step 2 : Data collection🗂
ข้อมูลที่อยากได้จะมี ชื่อมังงะ และเรื่องย่อ ตอนแรกเราพยายามที่จะหามัน แต่ก็ไม่ประสบความสำเร็จ จากนั้นไปเจอ myanimelist ซึ่งเราก็ไป scrape(ไปดึงข้อมูลจากเว็บไซด์มา โดยการใช้โค้ด) มา แต่มันไม่พอ มันติดปัญหาที่เรา scrape รัวๆ ไม่ได้ เลยลองหน่วงเวลา ซึ่งระหว่างเวลา scrape เราเลยไปดูเลยเจอ anime-planet ที่นี่เป็นอีกเว็บที่น่าสนใจ ตอนแรกตั้งใจว่าจะเปลี่ยนมา scrape จากเว็บนี้ เพราะมีทั้ง tag และก็รูปประกอบ แต่บังเอิญไปหาเจออันนี้

มันมีคนทำมาแล้ว เลยไปเอามาดูและก็มีข้อมูลตามที่เราต้องการ ซึ่งข้อมูลที่เราต้องการคือ ชื่อเรื่อง เรื่องย่อ รูปประกอบ ชนิด(บางเรื่องมันเป็น live novel)

เอ๊ะ…เอ๋! แต่มันยังไม่จบ ข้อมูลเราไม่ได้ต้องการแค่นั้น แล้วข้อมูลแบบนี้เราจะเอาไปทำอะไรต่อ ยังไง
ปูมาแบบนี้เข้าทางเลย ไปต่อกันเลยที่

Step 3 : Generate query
จริงๆ เราคิดเรื่องการวัดผลของ model ที่จะถูกเทรน เราเลยคิดว่าเราสามารถ genrate query ซึ่งถ้าจะให้อธิบายง่ายๆ query มันก็คือคำถามที่ชี้ไปสู่ manga เรื่องนั้นๆ จริงๆ เราเอามาให้ model ทาย manga ซึ่งตัวอย่าง query เช่น

Title : My Hero Academia
Description
: Middle school student Izuku Midoriya wants to be a hero more than anything, but he hasn’t got an ounce of power in him. With no chance of ever getting into the prestigious U.A. High School for budding heroes, his life is looking more and more like a dead end. Then an encounter with All Might, the greatest hero of them all, gives him a chance to change his destiny…
query
: What is the name of a manga about a middle school student who wants to be a hero but doesn’t have any powers?

แล้วเราก็ generate query อันนี้ให้ได้เยอะๆ เพื่อเอามาทดสอบกับ model โดยโค้ดที่ใช้ในการ generate query สามารถกดดูได้ที่ link ข้างล่างเลยคั้บผม

โค้ดตัวอย่างในการ generate query

ปัญหาที่เราพบโดยส่วนตัวเลยนะ คือโค้ดนี้มันกิน GPU 555555 เราไม่ได้ใช้ google colab pro เราเลยต้องสร้าง account เพิ่มอีกประมาณ 6–7 อัน เพื่อมา generate query ซึ่งจริงๆ AI Builders มี aws sagemaker ให้ แต่เราตอนเรา pip install มันไม่ได้ ติดปัญหานิดหน่อย เลยมาใช้วิธีนี้ระหว่างแก้ปัญหา เมื่อเกือบจะแก้ปัญหาได้ ก็ดันต้องไปทำส่วนต่อไปแล้ว 😓

Step 4 : Preprocess
หลังจากที่เราได้ query มาจำนวนนึงแล้ว เราก็จะไปต่อ เริ่มเลอ!
เราจะเอา description และ query มาใช้ตรงๆเลยคงไม่ได้
เพราะว่าคอมพิวเตอร์นั้นไม่เข้าใจตัวอักษร ปัญหามันก็คือทำยังไงให้มันเข้าใจ (?.?)

โดยเราจะทำสิ่งที่เรียกว่า word embedding ถ้าจะให้อธิบายง่ายๆ คือเราจะเปลี่ยนตัวอักษรที่คอมพิวเตอร์ไม่เข้าใจ มาเป็น ตัวเลข(vector format) ที่คอมพิวเตอร์สามารถเข้าใจได้

picture from www.baeldung.com/cs/dimensionality-word-embeddings

โดยที่โค้ดจะรวมอยู่ใน Step 5 โดยที่เราจะเริ่มจากการ clean ข้อมูลเล็กๆน้อยๆ ในข้อมูลที่ได้มาเนี่ยมันไม่ได้มีแค่มังงะอย่างเดียว มันจะมี Light Novel, Doujin หรือแม้กระทั่ง Webcomic หรือบางทีเรา loop เพื่อ generate query ออกมาแต่บางเรื่องไม่มี query เพราะเหตุนั้น ก็จะไม่ได้เอาข้อมูลส่วนนี้มาใช้ในการ evaluation

Step 5 : Metrics 📝
มาถึงจุดไฮไลท์แล้วทุกโค้น รู้ว่ามันเริ่มเยอะแล้วที่อ่านมา แต่ก็เดินทางมาถึงครึ่งทางแล้ว เย่!
เราขอเล่าหลักการที่จะวัดผล model ที่จะใช้
เราจะเอา query มาหา similarity score มันเหมือนการหาความเหมือนของ vector(ข้อความที่ผ่านการทำ word embedding มา) 2 ตัวกัน โดย similarity ก็มีหลากหลาย

picture from https://www.pinecone.io/learn/vector-similarity/

โดยในที่นี้เราเลือก cosine similarity
ซึ่ง score จะมีค่าระหว่าง -1 ถึง 1 (มันคือ range ของค่า cosine) ซึ่ง cosine score ที่เป็น 1 แปลว่า มุมคือ 0 แปลว่า vector 2 ตัวมันทับคนพอดี หรือมันเหมือนกันเป๊ะ ถ้า score ใกล้ๆ 1 แปลว่ามุมที่ 2 vector กระทำต่อกันเนี่ยน้อย หรือเราสามารถสรุปง่ายๆได้ว่า มีความเหมือนกันมาก สามารถดูรูปด้านล่างประกอบได้

รูปทางซ้ายคือ มุมเล็กๆ รูปทางขวาคือ มุมใหญ่ๆ

เราก็เลยมาเขียน logic ในการวัด accuracy ง่ายๆ คือ เราจะเอา query ของเรื่อง A (สมมติ) มาหา cosine similarity score กับ description ของมังงะที่เรื่อง(encode แล้ว) เอาเรื่องที่มี score มากที่สุดมา ถ้ามีเรื่อง A เราจะ accuracy+1 แต่ถ้ามันไม่มี accuracy+0 วนทำซ้ำๆไปเรื่อยๆ จนหมด query ที่มีโดยที่เราจะหา accuaracy แบบนี้แต่ลองให้ output ออกมาไม่ใช่แค่ top-1 แต่เป็น top-k (k=1, 3, 5)

Step 6 : Optimizing Model
ในที่สุดก็เริ่มทำ model ซักทีหลังจากที่ยืดเยื้อมานาน เข้าเรื่องเลยดีกว่า เราจะเอา
pre-train model (มันคือ model ที่ถูก train มาแล้ว) นั้นมา finetune ซึ่งไอการ finetune นั้น มันก็คือการเอา data บางส่วนของเราเนี่ยให้ model เห็น เพื่อให้ model รู้จัก data ของเรามากยิ่งขึ้น ซึ่งวิธีการคือ เราลองเอา data บางส่วนของเรามาแบ่ง train test แล้ว เอา train data มาจับคู่เช่น query ของ manga A ก็คู่กับ description ของ manga A และให้ความ similarity เป็น 1.0

และจากที่ทุกคนเห็นจากโค้ดนี้ มันดันมีคำว่า make unrelated data ในบรรทัดที่ 8 ทำไมต้องทำมันขึ้นมาสินะ ?.? เรื่องมันมีอยู่ว่า

หลังจากที่ทำไปทำมาเนี่ย ตอนแรกมันก็ไม่ได้มีส่วนนี้หรอก แต่ดันไปเจอปัญหาที่พอ finetune ไป ผลมันออกมาน้อยแปลกๆ มันแปล๊ก จริงๆ งงไปหมด มองไปมองมา ก็ไปถามพี่ mentor พบแว่ เอ้ย พบว่า มันต้องเจอสิ่งที่ผิดด้วย(negative example) ซึ่งวิธีการคือ เราเอา query ของ manga A มาจับคู่กับ description ของ manga B แล้วบอกว่า similarity เป็น 0.0

ขั้นตอนนี้แนะนำให้ทำบน google colab นะ เพราะมันเร็วมาก เราเคยลองรันบนเครื่อง (macbookAir M1) epoch ละ 1 ชั่วโมง 55555 แล้วค่อย save model เป็น zip file ออกมาจาก google colab

Step 7: Accuracy📊
หลังจากได้ทำ Step 6 มาแล้ว ก็มาดูผลของแต่ละ top-k กัน

pre train model ที่เป็นอังกฤษล้วน : all-MiniLM-L6-v2
pre train model ที่เป็น multilingual model : paraphrase-multilingual-mpnet-base-v2

ผลจาก model ตัวแรก ที่เป็น model ที่เข้าใจแค่ภาษาอังกฤษ

เราลองมาดูผลกัน
ใน top 1 ก่อน pretrain accuracy ประมาณ 55% แต่พอ finetune ไปแล้วกลายเป็นเกือบ 75% ที่จะทายถูก
ใน top 3 ก่อน pretrain accuracy ประมาณ 60% แต่พอ finetune ไปแล้วกลายเป็น 80% ที่จะทายถูก
ใน top 5 ก่อน pretrain accuracy ประมาณ 70% แต่พอ finetune ไปแล้วกลายเป็นประมาณ 85% ที่จะทายถูก

ผลจาก multilingual model ซึ่งเข้าใจได้หลายภาษา

เราลองมาดูผลกัน
ใน top 1 ก่อน pretrain accuracy ประมาณ 35% แต่พอ finetune ไปแล้วกลายเป็นประมาณ 60% ที่จะทายถูก
ใน top 3 ก่อน pretrain accuracy ประมาณ 50% แต่พอ finetune ไปแล้วกลายเป็น 70% ที่จะทายถูก
ใน top 5 ก่อน pretrain accuracy ประมาณ 55% แต่พอ finetune ไปแล้วกลายเป็นเกือบ 75% ที่จะทายถูก

ในที่นี้ ยิ่งเราแนะนำเรื่องที่ top-k ที่ k มีค่ามากๆ accuracy ยิ่งสูง เราเลยเลือกที่จะแนะนำ top 5 manga ที่ใกล้เคียง query

จริงๆ เราได้ deploy ไปแล้วค่ะ โดยการใช้ model ที่เป็นภาษาอังกฤษล้วน แต่จาก feedback รวมถึงเวลาที่เหลืออยู่อีก 3 สัปดาห์ เราเลยกลับมาที่ขั้นตอนนี้ใหม่ค่ะ ตอนแรกเราใช้ pre-train เป็นตัวที่รองรับแต่ภาษาอังกฤษค่ะ แต่คนใช้ส่วนใหญ่ของเราดันถนัดพิมภาษาไทยมากกว่า เราจึงลองไปหา pre-train ที่เป็น multilingual model เพื่อให้รองรับหลายภาษามากขึ้น และพอ finetune ไปถึง accuracy ที่วัดได้เนี่ยก็อยู่ในเกณฑ์ที่รับได้

เรา upload model ที่ finetune แล้วเนี่ยเข้า Hugging Face ซึ่งทุกๆคนก็สามารถไปลองใช้ได้นะ
model ที่เป็นอังกฤษล้วน : https://huggingface.co/Madnesss/fine-tune-all-MiniLM-L6-v2
model ที่เป็น multilingual model : https://huggingface.co/Madnesss/fine-tune-paraphrase-multilingual-mpnet-base-v2

แอบนอกเรื่อง :
เรื่องตลกของตอนที่วัด accuracy และเป็นอุทาหรณ์ เครื่องเตือนใจที่อยาก
บอกกับใครหลายๆคนให้ระวัง
วันนั้นนั่งเขียนโค้ดอยู่ดีๆ เขียนทุกอย่างถูกนั่งไล่ logic ซ้ำ
accuracy มันสูงมาก acc=0.9957537154989384 ของ top-1 โอ้มายก๊อด บ้าไปแล้ว
งานเราจะแม่น จะเจ๋งแจ๋วขนาดนั้นเลยหรอ พระเจ้าช่วย !!!!!
แอบรู้สึกว่ามันแปลกๆ เลยลองถามพี่ๆ พี่ก็บอกว่าเขียนถูกแล้ว แต่ก็ยังงงๆ
ผ่านไปซักพักเนี่ยก็เจอจุดผิด !

i ใน i มันใช้ตัวแปรซ้ำ ทำให้เกิดเรื่องน่าตกใจขึ้น 555555

โอเค แอบนอกเรื่องจบแล้ว เข้าเรื่องต่อเลย

ถ้าเราลองเอา model ของเรา มาเทียบกับ ChatGPT ล่ะ (ตรงนี้แหละน่าตื่นเต้น)

ลองใช้ query : What is the name of the manga about a legendary hitman who gets married and has a baby?

Modelเราแนะนำได้ตรงกว่า ChatGPT! 😮
มันจะเจ๋งแจ๋ว เก๋กู้ดไปไหน ตึงไปป่าวคับพี่

จะเห็นได้ว่าใน top-5 ChatGPT แนะนำ manga อย่าง gangsta ที่มีเนื้อเรื่องเกี่ยวกับการสะท้อนสังคม การจัดการคนร้าย หรือสิ่งที่ผิด ที่เลวร้ายเกินกว่าที่ตำรวจจะเข้ามายุ่ง ซึ่งดูไม่ค่อยเกี่ยวค่อยกับ query เลย แต่ manga ที่ model ของเรา recommend ออกมาเนี่ย ยังมีความเกี่ยวข้องกับ query แต่ไม่ได้ตรงตาม query 100%

Note : แต่สิ่งนี้ก็ไม่สามารถการันตีได้ว่า model ของเราจะดีกว่า ChatGPT เพราะเมื่อลองเปลี่ยน query บางที model เราก็แนะนำไม่ตรง 1–2 เรื่อง จาก 5 เรื่อง แต่เราสามารถการันตีได้ว่า manga ที่ได้ถูกแนะนำออกมา ถูกเรียงลำดับตามความใกล้เคียง ซึ่งแตกต่างจาก ChatGPT ตรงที่บางครั้ง manga ทีถูก recommend ออกมา แล้วไม่ตรงเนี่ย อยู่ลำดับต้นๆ ซึ่งไอการ rank แบบนี้ จะช่วยให้ user เลือก manga ที่ตรงใจเป็นลำดับๆไป

Step 8: Simplify for deployment ✅
ขั้นตอนนี้ชื่ออาจจะดูแปลกๆ เพราะปกติมันต้อง depolyment เลย แต่ว่าที่เราสร้าง step นี้ขึ้นมา เพราะคิดว่าหน้าตาเว็บที่จะทำ มันจะออกมาเป็นยังไง มันทำให้ต้อง
เตรียมอะไรเพิ่มขึ้นมาอีกนิด

flow ที่คิดขึ้นมาคร่าวๆคือ พอ user มากรอก requirement เข้าไป ปกติเราจะเช็คแค่ index ตอนวัด accuracy ตอนนี้เราต้องการชื่อเรื่อง แถมยังต้องการรูป
ปลากรอบ (ประกอบ) เราเลยต้องโค้ดเพิ่มนิดนึง 🤏🏻 เพิ่มให้เอามาใช้ต่อง่าย ๆ และก็มีปัญหาเล็กน้อย พอดี url รูปที่มันมากับ dataset มันดันเปิดไม่ได้ เลยต้องเปลี่ยนวิธีเพราะอยากมีรูปประกอบ ชื่อมังงะ และก็ %matching

หน้าตาโค้ดที่เอาไว้ดึง url image
หน้าตาโค้ดที่เอาไว้เอา index ไปหา title

อีกอย่างสำคัญที่ต้องเตรียมคือ model ที่เรา finetune เมื่อขั้นตอนก่อนหน้านี้ ไฟล์มันดันใหญ่อัปโหลดเข้า github ไป deploy ด้วยไม่ได้ วิธีการแก้ปัญหาของเราก็คือ อัปเข้า Hugging Face แล้วโหลดมาใช้เอา เพื่อไม่ให้หน่วงที่ต้องโหลด model ทุกครั้งที่ใช้ เราแนะนำให้ลองใช้ function นี้

มันทำให้ load model ครั้งเดียว

Step 9: Deployment 🚀
streamlit เป็นเครื่องมือที่เอามาใช้ในงานนี้ UI มันสวยมาก เราก็แค่เอาโค้ดที่ simplify แล้วใน Step 8มาใช้(จริงๆแล้ว Step 8 สามารถมารวมกับ Step 9 ได้ แต่เราคิดว่าจะ deployment หรือไม่ เราก็ควรทำให้เอาไปใช้ง่ายๆ) เราจะทำหน้าเว็บขึ้นมาง่ายๆ แต่เราจะแอบเก็บ จำนวนครั้งที่คนเข้าใช้งานนิดหน่อย เราสร้างส่วน feedback ไว้ด้วยแหละ

อีกเรื่องที่เกิดขึ้นอ่ะคือ model เราใหญ่มาก upload เข้า github ไม่ได้ เลยไป upload เข้า Hugging Face แล้ว load มาใช้เอา

Step 10: Feedback 📨
คิดว่าควรจบตั้งแต่ Step 9 แล้วใช่ไหมล่ะ แต่จริงๆสำหรับเราคือยัง พอลองทำจริงๆ เราเป็นคนสร้าง แต่ถ้าเราได้รู้ความเห็นของมุม user เนี่ย มันจะได้เอามาปรับปรุง เบื้องต้น เราได้ลองให้คนรอบตัวใช้ไปบ้างแล้ว ซึ่งผลที่ออกมาคือ เรื่องที่ score เยอะๆ แต่คนไม่ค่อยรู้จัก เรื่องที่รู้จักดันไปอยู่ในเรื่องที่ 4 หรือ 5 ของ top-5 ที่ recommend ไป ซึ่งไอเดียที่อยากให้แก้ตรงนี้คือการใส่ข้อมูลที่เป็น rating เข้าไปด้วย จะทำให้ได้ manga ที่ตรงใจ และก็มี rating เยอะๆ และนั่นคือข้อดีของ feedback ซึ่งมันดีย์ ดีย์จิงๆนะ แค่วงเล็กๆ มันทำให้เจอมุมมอง ความเห็น หรือความไม่สะดวกสบายของ user ได้ขนาดนี้ ถ้าวงใหญ่ขึ้น เราจะได้พัฒนาต่อ เพราะเราคิดว่าพอจบค่ายนี้ เราก็ยังอยากที่จะพัฒนามันต่อไป ! 💪🏻 เรารออ่าน feedback ของทุกๆคนอยู่นะ

สำหรับคนที่อยากลองใช้ manga recommendation ของเราเนี่ย กด link ได้เลย

https://jjentaa-manga-recommendation-welcome-k37vlz.streamlit.app/give-feedback
เราขอมาเสนอวิธีใช้ง่าย

Tips 📋 :
1. ตอนนี้เราอยู่ที่หน้า Welcome ทางซ้ายมือจะมีแถบกดให้เลือกหน้า
2. เริ่มต้น เราสามารถเลือกที่จะลอง model ได้ 2 ตัวค่ะ คือ eng model ที่รองรับภาษาอังกฤษเท่านั้น และ multi model ที่รองรับภาษาอื่นๆ
3. พอกดเข้าไปแต่ละหน้าแล้วเนี่ย สามารถใส่ requirement สำหรับมังงะที่ตามหาได้เลย แล้วกด enter
4. ถ้าไม่รู้จะเริ่มยังไงดี เรามีตัวอย่างทั้งหมด 3 query ให้ในแต่ละหน้า สามารถกดปุ่มได้เลยค่ะ
5. รอซักพักนึง จะมีชื่อมังงะ กับรูปประกอบที่เราแนะนำให้ค่ะ
6. พอเล่นจนพอใช้แล้วเนี่ย ช่วยกดไปที่หน้า give-feedback กรอก feedback เล็กๆน้อยๆทิ้งไว้ให้เราหน่อยนะคะ เราจะได้เอาไปปรับปรุงต่อปล. หน้า multi model เข้าไปอาจจะใช้เวลารอนานระดับนึงเพื่อเริ่มใช้งาน ไม่ต้องห่วงนะคะ เว็บไม่ได้ค้าง
ถ้าใครอยากรู้รายละเอียด link ของบทความจะอยู่ด้านล่างค่ะ และก็เราทิ้งช่องทางการติดต่อเราไว้ด้วย เผื่อใครสงสัยอะไร ทักมาคุยกันได้เลยค่ะ

Future work :
1. จริงๆ เราเอา version แรกที่ deploy ไปให้อาจารย์ที่โรงเรียนกับเพื่อนๆ ได้ลองเล่นแล้วค่ะ มันมี feedback กลับมาว่า อยากให้ rank rating หรือ ความ popular ของ manga ที่แนะนำไปด้วย แต่ด้วย dataset ที่มีดั้งเดิมไม่มีข้อมูลตรงนี้ เราจึงได้ลองหาเพิ่มเติม แต่พอเอามา match กัน บางอันก็ยังไม่มีข้อมูลตรงนี้ ตอนนี้เลยยังไม่ได้ใส่ feature นี้เข้าไปค่ะ แต่อีกไม่นานเราจะใส่เพิ่มเข้าไปค่ะ
2. เราทำแค่ manga อีกไปนานเรายขยายไป light novel และweb comic ด้วยค่ะ หรือบางทีมันอาจจะขยายไปมากกว่านั้นค่ะ
3. เรื่องผิดพลาดที่ต้องปรับปรุงอีกเรื่อง คือ รูปภาพปลากรอบ มันขึ้นบ้างไม่ขึ้นบ้าง ที่ผ่านมายังไม่สามารถแก้ไขตรงนี้ได้ แต่ในอนาคต เราจะแก้ไขมันได้แน่นอน

Special thanks✨ :
ก่อนอื่นต้องขอบคุณที่อ่านมาถึงตรงนี้(ไม่ใช่ข้ามมาอ่านตรงนี้นะ) เรารู้สึกดีใจมากๆเลยที่ได้ทำงานนี้ เพราะที่ผ่านมาก็ไม่ค่อยได้ทำอะไรเป็นชิ้นเป็นอันเท่าไหร่ พอได้จริงจัง ได้ลองทำงานคนเดียว มันก็เป็นเรื่องที่ท้าทายกับเรา

ขอบคุณโครงการ AI BUIDERS และพี่เมนเทอร์ & TA พี่ชารินทร์ พี่แพทริค พี่ปิงที่ให้โอกาส คำปรึกษา คำแนะนำต่างๆ เป็นสิ่งที่ทำให้รู้เลยว่า จริงๆตัวเราเองที่แค่มีความตั้งใจ ก็สามารถทำงานออกมาจนสำเร็จได้ รวมทั้งๆ เพื่อนๆ พี่ๆ ในกลุ่ม ที่คอยให้คำปรึกษา คอยแลกเปลี่ยนมุมมอง หรือแม้กระทั่งคอยแก้บัคกัน มันคือ community ที่ดีมากเลยค่ะ เราเอนจอยและสนุกกับมันมากๆ

ขอบคุณผู้อ่านทุกๆคน เรารู้สึกภูมิใจ และมั่นใจในตัวเองมากขึ้น ตอนเรามาถึงจุดนี้

--

--

MadNess_

I am Jane. I like to try a new thing and always have a strange idea.