อเมซอน ดาวเนปจูน ML เป็นความสามารถแมชชีนเลิร์นนิง (ML) ของ อเมซอนเนปจูน ที่ช่วยให้คุณคาดการณ์ข้อมูลกราฟได้อย่างแม่นยำและรวดเร็ว ภายใต้ประทุน Neptune ML ใช้ Graph Neural Networks (GNN) เพื่อใช้ประโยชน์จากโครงสร้างกราฟและคุณสมบัติของโหนด/ขอบพร้อมกันเพื่อแก้ไขงานที่ทำอยู่ เมธอดแบบดั้งเดิมจะใช้เฉพาะคุณสมบัติและไม่มีโครงสร้างกราฟ (เช่น XGBoost, Neural Networks) หรือโครงสร้างกราฟเท่านั้นและไม่มีคุณสมบัติ (เช่น node2vec, Label Propagation) เพื่อจัดการคุณสมบัติของโหนด/ขอบได้ดียิ่งขึ้น อัลกอริทึม ML ต้องการให้ข้อมูลเป็นข้อมูลตัวเลขที่มีพฤติกรรมเหมาะสม แต่ข้อมูลดิบในฐานข้อมูลสามารถมีประเภทอื่นๆ ได้ เช่น ข้อความดิบ ในการใช้ข้อมูลประเภทอื่นๆ เหล่านี้ เราจำเป็นต้องมีขั้นตอนการประมวลผลเฉพาะที่แปลงจากประเภทดั้งเดิมเป็นข้อมูลตัวเลข และคุณภาพของผลลัพธ์ ML จะขึ้นอยู่กับคุณภาพของการแปลงข้อมูลเหล่านี้อย่างมาก ข้อความดิบ เช่น ประโยค เป็นประเภทที่แปลงได้ยากที่สุด แต่ความคืบหน้าล่าสุดในด้านการประมวลผลภาษาธรรมชาติ (NLP) ได้นำไปสู่วิธีการที่แข็งแกร่งที่สามารถจัดการกับข้อความที่มาจากหลายภาษาและมีความยาวที่หลากหลาย
เริ่มต้นด้วยเวอร์ชัน 1.1.0.0, Neptune ML รองรับ ตัวเข้ารหัสข้อความหลายตัว (text_fasttext, text_sbert, text_word2vecและ text_tfidf) ซึ่งนำประโยชน์ของความก้าวหน้าล่าสุดใน NLP และช่วยให้รองรับคุณสมบัติข้อความหลายภาษา รวมถึงข้อกำหนดการอนุมานเพิ่มเติมเกี่ยวกับภาษาและความยาวของข้อความ ตัวอย่างเช่น ในกรณีใช้การแนะนำงาน ตำแหน่งงานในประเทศต่างๆ สามารถอธิบายได้ในภาษาต่างๆ และความยาวของคำอธิบายงานจะแตกต่างกันมาก นอกจากนี้ Neptune ML ยังรองรับ an รถยนต์ ตัวเลือกที่จะเลือกวิธีการเข้ารหัสที่ดีที่สุดโดยอัตโนมัติตามลักษณะของคุณลักษณะข้อความในข้อมูล
ในโพสต์นี้ เราจะอธิบายการใช้ตัวเข้ารหัสข้อความแต่ละรายการ เปรียบเทียบข้อดีและข้อเสีย และแสดงตัวอย่างวิธีเลือกตัวเข้ารหัสข้อความที่เหมาะสมสำหรับงานแนะนำงาน
ตัวเข้ารหัสข้อความคืออะไร?
เป้าหมายของการเข้ารหัสข้อความคือการแปลงคุณสมบัติขอบ/โหนดตามข้อความในเนปจูนเป็นเวกเตอร์ขนาดคงที่เพื่อใช้ในโมเดลการเรียนรู้ของเครื่องดาวน์สตรีมสำหรับการจัดประเภทโหนดหรืองานทำนายลิงก์ ความยาวของคุณลักษณะข้อความอาจแตกต่างกันมาก อาจเป็นคำ วลี ประโยค ย่อหน้า หรือแม้แต่เอกสารที่มีหลายประโยค (ขนาดสูงสุดของคุณสมบัติเดียวคือ 55 MB ในดาวเนปจูน) นอกจากนี้ ฟีเจอร์ข้อความสามารถเป็นภาษาต่างๆ ได้ อาจมีประโยคที่มีคำในภาษาต่างๆ หลายภาษา ซึ่งเรากำหนดเป็น การสลับรหัส.
เริ่มต้นด้วยรุ่น 1.1.0.0 Neptune ML ช่วยให้คุณเลือกจากตัวเข้ารหัสข้อความต่างๆ ได้ ตัวเข้ารหัสแต่ละตัวทำงานแตกต่างกันเล็กน้อย แต่มีเป้าหมายเดียวกันในการแปลงฟิลด์ค่าข้อความจาก Neptune เป็นเวกเตอร์ขนาดคงที่ที่เราใช้เพื่อสร้างแบบจำลอง GNN โดยใช้ Neptune ML ตัวเข้ารหัสใหม่มีดังนี้:
- text_fasttext (ใหม่) – การใช้ ข้อความด่วน การเข้ารหัส FastText เป็นห้องสมุดสำหรับการเรียนรู้การแสดงข้อความอย่างมีประสิทธิภาพ
text_fasttext
แนะนำให้ใช้กับฟีเจอร์ที่ใช้เพียงหนึ่งในห้าภาษาที่ fastText รองรับ (อังกฤษ จีน ฮินดี สเปน และฝรั่งเศส) ดิtext_fasttext
วิธีสามารถเลือกใช้max_length
ซึ่งระบุจำนวนสูงสุดของโทเค็นในค่าคุณสมบัติข้อความที่จะถูกเข้ารหัส หลังจากนั้นสตริงจะถูกตัดทอน คุณสามารถถือว่าโทเค็นเป็นคำได้ สิ่งนี้สามารถปรับปรุงประสิทธิภาพได้เมื่อค่าคุณสมบัติข้อความมีสตริงที่ยาว เนื่องจาก ifmax_length
ไม่ได้ระบุ fastText จะเข้ารหัสโทเค็นทั้งหมดโดยไม่คำนึงถึงความยาวของสตริง - text_sbert (ใหม่) – ใช้ประโยค BERT (สเบิร์ต) วิธีการเข้ารหัส SBERT เป็นวิธีการฝังประโยคชนิดหนึ่งโดยใช้แบบจำลองการเรียนรู้การแสดงบริบท BERT-Networks
text_sbert
ขอแนะนำเมื่อภาษาไม่รองรับโดยtext_fasttext
. ดาวเนปจูนรองรับ SBERT สองวิธี:text_sbert128
ซึ่งเป็นค่าเริ่มต้นหากคุณเพียงแค่ระบุtext_sbert
และtext_sbert512
. ความแตกต่างระหว่างพวกเขาคือจำนวนโทเค็นสูงสุดในคุณสมบัติข้อความที่ได้รับการเข้ารหัส ดิtext_sbert128
การเข้ารหัสเข้ารหัสเฉพาะโทเค็น 128 ตัวแรกในขณะที่text_sbert512
เข้ารหัสได้ถึง 512 โทเค็น ส่งผลให้ใช้text_sbert512
อาจต้องใช้เวลาดำเนินการมากกว่าtext_sbert128
. ทั้งสองวิธีช้ากว่าtext_fasttext
. - text_word2vec – การใช้ เวิร์ดทูเวค อัลกอริทึมที่เผยแพร่โดย Google เพื่อเข้ารหัสข้อความ Word2Vec รองรับเฉพาะภาษาอังกฤษ
- text_tfidf – ใช้ระยะความถี่-ความถี่เอกสารผกผัน (TF-ไอดีเอฟ) vectorizer สำหรับการเข้ารหัสข้อความ การเข้ารหัส TF-IDF รองรับคุณสมบัติทางสถิติที่การเข้ารหัสอื่นๆ ไม่รองรับ มันวัดปริมาณความสำคัญหรือความเกี่ยวข้องของคำในคุณสมบัติของโหนดหนึ่งจากโหนดอื่นๆ ทั้งหมด
โปรดทราบว่า text_word2vec
และ text_tfidf
ก่อนหน้านี้ได้รับการสนับสนุนและวิธีการใหม่ text_fasttext
และ text_sbert
ได้รับการแนะนำมากกว่าวิธีการแบบเก่า
การเปรียบเทียบตัวเข้ารหัสข้อความต่างๆ
ตารางต่อไปนี้แสดงการเปรียบเทียบโดยละเอียดของตัวเลือกการเข้ารหัสข้อความที่รองรับทั้งหมด (text_fasttext
, text_sbert
และ text_word2vec
). text_tfidf
ไม่ใช่วิธีการเข้ารหัสตามแบบจำลอง แต่เป็นการวัดแบบนับที่ประเมินความเกี่ยวข้องของโทเค็น (เช่น คำ) กับคุณลักษณะข้อความในโหนดหรือขอบอื่น ๆ ดังนั้นเราจึงไม่รวม text_tfidf
เพื่อเปรียบเทียบ เราแนะนำให้ใช้ text_tfidf
เมื่อคุณต้องการหาปริมาณความสำคัญหรือความเกี่ยวข้องของคำบางคำในหนึ่งโหนดหรือคุณสมบัติของขอบ ท่ามกลางคุณสมบัติของโหนดหรือขอบอื่นๆ ทั้งหมด)
. | . | text_fasttext | text_sbert | text_word2vec |
ความสามารถของโมเดล | ภาษาที่สนับสนุน | อังกฤษ จีน ฮินดี สเปน และฝรั่งเศส | มากกว่า 50 ภาษา | ภาษาอังกฤษ |
สามารถเข้ารหัสคุณสมบัติข้อความที่มีคำในภาษาต่างๆ ได้ | ไม่ | ใช่ | ไม่ | |
รองรับความยาวสูงสุด | ไม่จำกัดความยาวสูงสุด | เข้ารหัสลำดับข้อความที่มีความยาวสูงสุด 128 และ 512 | ไม่จำกัดความยาวสูงสุด | |
ค่าเวลา | กำลังโหลด | ประมาณ 10 วินาที | ประมาณ 2 วินาที | ประมาณ 2 วินาที |
การอนุมาน | รวดเร็ว | ช้า | กลาง |
สังเกตเคล็ดลับการใช้งานต่อไปนี้:
- สำหรับค่าคุณสมบัติข้อความในภาษาอังกฤษ จีน ฮินดี สเปน และฝรั่งเศส
text_fasttext
คือการเข้ารหัสที่แนะนำ อย่างไรก็ตาม ไม่สามารถจัดการกับกรณีที่ประโยคเดียวกันมีคำมากกว่าหนึ่งภาษา สำหรับภาษาอื่นนอกเหนือจากห้านั้นfastText
รองรับการใช้งานtext_sbert
การเข้ารหัส - หากคุณมีสตริงข้อความค่าคุณสมบัติหลายตัวที่ยาวกว่า เช่น 120 โทเค็น ให้ใช้
max_length
เพื่อจำกัดจำนวนโทเค็นในแต่ละสตริงที่text_fasttext
เข้ารหัส
โดยสรุป ขึ้นอยู่กับกรณีการใช้งานของคุณ เราขอแนะนำวิธีการเข้ารหัสต่อไปนี้:
- หากคุณสมบัติข้อความของคุณเป็นหนึ่งในห้าภาษาที่รองรับ เราขอแนะนำให้ใช้
text_fasttext
เนื่องจากการอนุมานที่รวดเร็วtext_fasttext
เป็นตัวเลือกที่แนะนำและคุณยังสามารถใช้text_sbert
ในข้อยกเว้นสองข้อต่อไปนี้ - หากคุณสมบัติข้อความของคุณเป็นภาษาต่างๆ เราขอแนะนำให้ใช้
text_sbert
เพราะเป็นวิธีเดียวที่ได้รับการสนับสนุนที่สามารถเข้ารหัสคุณสมบัติข้อความที่มีคำในหลายภาษา - หากคุณสมบัติข้อความของคุณเป็นภาษาเดียวที่ไม่ใช่หนึ่งในห้าภาษาที่รองรับ เราขอแนะนำให้ใช้
text_sbert
เพราะรองรับมากกว่า 50 ภาษา - หากความยาวเฉลี่ยของคุณสมบัติข้อความของคุณยาวกว่า 128 ให้พิจารณาใช้
text_sbert512
ortext_fasttext
. ทั้งสองวิธีสามารถใช้เข้ารหัสลำดับข้อความที่ยาวขึ้นได้ - หากคุณสมบัติข้อความของคุณเป็นภาษาอังกฤษเท่านั้น คุณสามารถใช้
text_word2vec
แต่เราแนะนำให้ใช้text_fasttext
เพื่อการอนุมานที่รวดเร็ว
ใช้ตัวอย่างกรณี: งานแนะนำงาน
เป้าหมายของงานแนะนำงานคือการคาดการณ์ว่าผู้ใช้จะสมัครงานใดโดยพิจารณาจากใบสมัครก่อนหน้า ข้อมูลประชากร และประวัติการทำงาน โพสต์นี้ใช้ ชุดข้อมูล Kaggle ที่เปิดอยู่. เราสร้างชุดข้อมูลเป็นกราฟประเภทสามโหนด: งาน, ผู้ใช้งานและ เมือง.
งานมีลักษณะตามชื่อ คำอธิบาย ข้อกำหนด เมืองที่ตั้งและรัฐ มีการอธิบายผู้ใช้ด้วยคุณสมบัติของวิชาเอก ประเภทปริญญา จำนวนประวัติการทำงาน จำนวนปีสำหรับประสบการณ์การทำงาน และอื่นๆ สำหรับกรณีการใช้งานนี้ ตำแหน่งงาน รายละเอียดงาน ข้อกำหนดของงาน และสาขาวิชาทั้งหมดจะอยู่ในรูปแบบของข้อความ
ในชุดข้อมูล ผู้ใช้มีคุณสมบัติดังต่อไปนี้:
- สถานะ – ตัวอย่างเช่น CA หรือ 广东省 (ภาษาจีน)
- สำคัญ – ตัวอย่างเช่น การจัดการทรัพยากรบุคคล หรือ Lic Cytura Fisica (ภาษาสเปน)
- องศาประเภท – ตัวอย่างเช่น ปริญญาตรี ปริญญาโท ปริญญาเอก หรือไม่มี
- ประวัติการทำงาน – ตัวอย่างเช่น 0, 1, 16 เป็นต้น
- TotalYearsประสบการณ์ – ตัวอย่างเช่น 0.0, 10.0 หรือ NAN
งานมีคุณสมบัติดังต่อไปนี้:
- ชื่อหนังสือ – ตัวอย่างเช่น Administrative Assistant หรือ Lic Cultura Física (ภาษาสเปน)
- รายละเอียด – ตัวอย่างเช่น “ตำแหน่งผู้ช่วยธุรการนี้มีหน้าที่รับผิดชอบในการปฏิบัติหน้าที่สนับสนุนด้านธุรการและธุรการในด้านการสื่อสารต่างๆ …” จำนวนคำโดยเฉลี่ยในคำอธิบายหนึ่งๆ อยู่ที่ประมาณ 192.2
- ความต้องการ – ตัวอย่างเช่น “ความต้องการของงาน: 1. ใส่ใจในรายละเอียด; 2.ความสามารถในการทำงานในสภาพแวดล้อมที่รวดเร็ว 3.การออกใบแจ้งหนี้…”
- สถานะ: – ตัวอย่างเช่น CA, NY และอื่น ๆ
ประเภทโหนด เมือง เช่น Washington DC และ Orlando FL มีตัวระบุสำหรับแต่ละโหนดเท่านั้น ในส่วนต่อไปนี้ เราจะวิเคราะห์ลักษณะของคุณลักษณะข้อความต่างๆ และแสดงวิธีเลือกตัวเข้ารหัสข้อความที่เหมาะสมสำหรับคุณสมบัติข้อความต่างๆ
วิธีเลือกตัวเข้ารหัสข้อความที่แตกต่างกัน
ตัวอย่างเช่น สำคัญ และ ชื่อหนังสือ คุณสมบัติมีหลายภาษาและมีลำดับข้อความสั้น ๆ ดังนั้น text_sbert
ขอแนะนำ โค้ดตัวอย่างสำหรับ พารามิเตอร์การส่งออก เป็นดังนี้ สำหรับ text_sbert
ชนิด ไม่มีฟิลด์พารามิเตอร์อื่น ที่นี่เราเลือก text_sbert128
นอกเหนือจาก text_sbert512
เนื่องจากความยาวของข้อความค่อนข้างสั้นกว่า 128
พื้นที่ รายละเอียด และ ความต้องการ คุณสมบัติมักจะอยู่ในลำดับข้อความยาว ความยาวเฉลี่ยของคำอธิบายอยู่ที่ประมาณ 192 คำ ซึ่งยาวกว่าความยาวอินพุตสูงสุดของ text_sbert
(128). เราสามารถใช้ text_sbert512
แต่อาจส่งผลให้การอนุมานช้าลง นอกจากนี้ข้อความเป็นภาษาเดียว (อังกฤษ) เราจึงขอแนะนำ text_fasttext
กับ en ค่าภาษาเนื่องจากการอนุมานที่รวดเร็วและไม่จำกัดความยาวอินพุต โค้ดตัวอย่างสำหรับ พารามิเตอร์การส่งออก เป็นดังนี้ ดิ text_fasttext
การเข้ารหัสสามารถปรับแต่งได้โดยใช้ ภาษา และ สูงสุด_ความยาว. language
จำเป็นต้องมีค่า แต่ max_length
เป็นทางเลือก
รายละเอียดเพิ่มเติมของกรณีการใช้งานการแนะนำงานสามารถพบได้ใน กวดวิชาโน๊ตบุ๊คดาวเนปจูน.
เพื่อจุดประสงค์ในการสาธิต เราเลือกผู้ใช้หนึ่งราย กล่าวคือ ผู้ใช้ 443931 ซึ่งสำเร็จการศึกษาระดับปริญญาโทด้านการจัดการและทรัพยากรบุคคล ผู้ใช้ได้สมัครงาน 50 ตำแหน่ง ได้แก่ “ผู้จัดการทรัพยากรบุคคล (HR)”, “ผู้จัดการทั่วไปฝ่ายทรัพยากรบุคคล”, “ผู้จัดการฝ่ายทรัพยากรบุคคล”, “ผู้ดูแลทรัพยากรบุคคล” และ “ผู้เชี่ยวชาญด้านบัญชีเงินเดือนอาวุโส” เพื่อประเมินประสิทธิภาพของงานแนะนำ เราลบ 10% ของงานที่สมัคร (ขอบ) ของผู้ใช้ (ในที่นี้เราลบ “ผู้ดูแลทรัพยากรบุคคล” และ “ผู้จัดการฝ่ายทรัพยากรบุคคล (HR)) และพยายามคาดการณ์ด้านบน XNUMX งานที่ผู้ใช้รายนี้มีแนวโน้มว่าจะสมัครมากที่สุด
หลังจากเข้ารหัสคุณลักษณะงานและคุณลักษณะของผู้ใช้แล้ว เราจะดำเนินการคาดการณ์ลิงก์โดยการฝึกโมเดลเครือข่ายแบบกราฟเชิงสัมพันธ์ (RGCN) การฝึกโมเดล Neptune ML ต้องการสามขั้นตอน: การประมวลผลข้อมูล การฝึกโมเดล และการสร้างปลายทาง หลังจากสร้างจุดสิ้นสุดการอนุมานแล้ว เราสามารถให้คำแนะนำสำหรับผู้ใช้ 443931 จากงาน 10 อันดับแรกที่คาดการณ์ไว้สำหรับผู้ใช้ 443931 (เช่น “HR Generalist”, “Human Resources (HR) Manager”, “Senior Payroll Specialist”, “Human Resources Administrator”, “HR Analyst”, et al.) เราสังเกตว่างานที่ถูกลบสองงานนั้นเป็นหนึ่งใน 10 การคาดการณ์
สรุป
ในโพสต์นี้ เราแสดงการใช้ตัวเข้ารหัสข้อความที่รองรับใหม่ใน Neptune ML ตัวเข้ารหัสข้อความเหล่านี้ใช้งานง่ายและสามารถรองรับความต้องการได้หลากหลาย สรุป,
- แนะนำให้ใช้ text_fasttext สำหรับคุณลักษณะที่ใช้ภาษาเดียวจากห้าภาษาที่ text_fasttext รองรับ
- แนะนำให้ใช้ text_sbert สำหรับข้อความที่ text_fasttext ไม่รองรับ
- text_word2vec รองรับเฉพาะภาษาอังกฤษ และสามารถแทนที่ด้วย text_fasttext ในทุกสถานการณ์
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการแก้ปัญหา โปรดดูที่ repo GitHub. เราขอแนะนำให้ใช้ตัวเข้ารหัสข้อความในข้อมูลกราฟของคุณเพื่อให้ตรงกับความต้องการของคุณ คุณสามารถเลือกชื่อตัวเข้ารหัสและตั้งค่าแอตทริบิวต์ของตัวเข้ารหัสได้ในขณะที่ยังคงรูปแบบ GNN ไว้ไม่เปลี่ยนแปลง
เกี่ยวกับผู้แต่ง
เจียนี่ จาง เป็นนักวิทยาศาสตร์ประยุกต์ของ AWS AI Research and Education (AIRE) เธอทำงานเกี่ยวกับการแก้ปัญหาการใช้งานจริงโดยใช้อัลกอริธึมการเรียนรู้ของเครื่อง โดยเฉพาะภาษาธรรมชาติและปัญหาที่เกี่ยวข้องกับกราฟ
- ขั้นสูง (300)
- AI
- ไอ อาร์ต
- เครื่องกำเนิดไออาร์ท
- หุ่นยนต์ไอ
- อเมซอนเนปจูน
- ปัญญาประดิษฐ์
- ใบรับรองปัญญาประดิษฐ์
- ปัญญาประดิษฐ์ในการธนาคาร
- หุ่นยนต์ปัญญาประดิษฐ์
- หุ่นยนต์ปัญญาประดิษฐ์
- ซอฟต์แวร์ปัญญาประดิษฐ์
- AWS Machine Learning AWS
- blockchain
- การประชุม blockchain ai
- เหรียญอัจฉริยะ
- ปัญญาประดิษฐ์สนทนา
- การประชุม crypto ai
- ดัล-อี
- การเรียนรู้ลึก ๆ
- google ai
- เรียนรู้เครื่อง
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- เกมเพลโต
- เพลโตดาต้า
- เพลโตเกม
- ขนาดไอ
- วากยสัมพันธ์
- ลมทะเล