เข้ารหัสคุณสมบัติข้อความหลายภาษาใน Amazon Neptune เพื่อฝึกโมเดลการทำนาย PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เข้ารหัสคุณสมบัติข้อความหลายภาษาใน Amazon Neptune เพื่อฝึกโมเดลการคาดการณ์

อเมซอน ดาวเนปจูน 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 ซึ่งระบุจำนวนสูงสุดของโทเค็นในค่าคุณสมบัติข้อความที่จะถูกเข้ารหัส หลังจากนั้นสตริงจะถูกตัดทอน คุณสามารถถือว่าโทเค็นเป็นคำได้ สิ่งนี้สามารถปรับปรุงประสิทธิภาพได้เมื่อค่าคุณสมบัติข้อความมีสตริงที่ยาว เนื่องจาก if max_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 or text_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

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

พื้นที่ รายละเอียด และ ความต้องการ คุณสมบัติมักจะอยู่ในลำดับข้อความยาว ความยาวเฉลี่ยของคำอธิบายอยู่ที่ประมาณ 192 คำ ซึ่งยาวกว่าความยาวอินพุตสูงสุดของ text_sbert (128). เราสามารถใช้ text_sbert512แต่อาจส่งผลให้การอนุมานช้าลง นอกจากนี้ข้อความเป็นภาษาเดียว (อังกฤษ) เราจึงขอแนะนำ text_fasttext กับ en ค่าภาษาเนื่องจากการอนุมานที่รวดเร็วและไม่จำกัดความยาวอินพุต โค้ดตัวอย่างสำหรับ พารามิเตอร์การส่งออก เป็นดังนี้ ดิ text_fasttext การเข้ารหัสสามารถปรับแต่งได้โดยใช้ ภาษา และ สูงสุด_ความยาว. language จำเป็นต้องมีค่า แต่ max_length เป็นทางเลือก

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

รายละเอียดเพิ่มเติมของกรณีการใช้งานการแนะนำงานสามารถพบได้ใน กวดวิชาโน๊ตบุ๊คดาวเนปจูน.

เพื่อจุดประสงค์ในการสาธิต เราเลือกผู้ใช้หนึ่งราย กล่าวคือ ผู้ใช้ 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 ไว้ไม่เปลี่ยนแปลง


เกี่ยวกับผู้แต่ง

เข้ารหัสคุณสมบัติข้อความหลายภาษาใน Amazon Neptune เพื่อฝึกโมเดลการทำนาย PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.เจียนี่ จาง เป็นนักวิทยาศาสตร์ประยุกต์ของ AWS AI Research and Education (AIRE) เธอทำงานเกี่ยวกับการแก้ปัญหาการใช้งานจริงโดยใช้อัลกอริธึมการเรียนรู้ของเครื่อง โดยเฉพาะภาษาธรรมชาติและปัญหาที่เกี่ยวข้องกับกราฟ

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS

สร้าง แชร์ ปรับใช้: วิธีที่นักวิเคราะห์ธุรกิจและนักวิทยาศาสตร์ข้อมูลบรรลุเวลาสู่ตลาดได้เร็วขึ้นโดยใช้ ML แบบไม่มีโค้ดและ Amazon SageMaker Canvas

โหนดต้นทาง: 1210859
ประทับเวลา: Mar 10, 2022