เทคนิคการเรียนรู้ของเครื่องสำหรับการเรียนรู้รูปแบบสตริง


11

ฉันมีรายการคำที่เป็นของหมวดหมู่ที่กำหนดเองที่แตกต่างกัน แต่ละหมวดหมู่มีรูปแบบของตัวเอง (ตัวอย่างเช่นหมวดหนึ่งมีความยาวคงที่พร้อมด้วยอักขระพิเศษอีกประเภทหนึ่งมีตัวอักษรอยู่ซึ่งเกิดขึ้นเฉพาะในหมวดหมู่ "คำ", ... )

ตัวอย่างเช่น:

"ABC" -> type1
"ACC" -> type1
"a8 219" -> type2
"c 827" -> type2
"ASDF 123" -> type2
"123123" -> type3
...

ฉันกำลังค้นหาเทคนิคการเรียนรู้ของเครื่องเพื่อเรียนรู้รูปแบบเหล่านี้ด้วยตนเองตามข้อมูลการฝึกอบรม ฉันได้พยายามกำหนดตัวแปรตัวทำนายบางตัว (เช่นความยาวจำนวนตัวอักษรพิเศษ ... ) ด้วยตัวเองแล้วใช้โครงข่ายประสาทเทียมเพื่อเรียนรู้และทำนายหมวดหมู่ แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการเทคนิคเพื่อเรียนรู้รูปแบบสำหรับแต่ละหมวดหมู่ด้วยตัวเอง - แม้กระทั่งเรียนรู้รูปแบบที่ฉันไม่เคยคิด

ดังนั้นฉันจึงให้ข้อมูลการเรียนรู้อัลกอริทึม (ประกอบด้วยตัวอย่างหมวดคำ) และต้องการให้เรียนรู้รูปแบบสำหรับแต่ละหมวดหมู่เพื่อทำนายหมวดหมู่ในภายหลังจากคำที่คล้ายกันหรือเท่ากัน

มีวิธีการที่ทันสมัยในการทำมันได้หรือไม่

ขอบคุณสำหรับความช่วยเหลือของคุณ


จากมุมมองของฉันคุณสามารถทำsmthเช่นcistrome.org/cr/images/Figure4.pngนี้แต่แทนที่จะใช้ ACGT คุณสามารถใช้รูปแบบเช่น "number, uppercase, lowercase, space" ฯลฯ
German Demidov

@GermanDemidov ขอบคุณสำหรับความคิดเห็นของคุณ ฉันคิดเกี่ยวกับสิ่งนี้แล้ว แต่จริง ๆ แล้วฉันต้องการให้อัลกอริทึมการเรียนรู้ทำด้วยตัวเองและตรวจสอบรูปแบบ (ฉันไม่รู้ว่าเป็นไปได้สำหรับ ML)
chresse

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

@chresse คุณอาจต้องการเพิ่มแท็กการเรียนรู้ที่ไม่มีผู้ดูแลในคำถามของคุณ สำหรับการทำเช่นนี้กับโครงข่ายประสาทเทียมกระดาษ LeCun นี้อาจเป็นที่สนใจ เนื่องจากฉันไม่มีประสบการณ์มากในการทำเหมืองข้อความหรือเครือข่ายประสาทฉันไม่สามารถบอกได้ว่าวิธีการนี้จะดีแค่ไหน
GeoMatt22

1
ดังนั้นแปลงเวกเตอร์ของคุณด้วยคุณสมบัติที่คุณใช้ตามธรรมชาติ (u - uppercase, l - lowercase, n - number, s - space) ดังนั้นเวกเตอร์ของคุณจะเป็น "ABC" - "uuu", "a8 219" - "lnsnnn" บน. จากนั้นคุณต้องแนะนำการวัดระยะทางตัวอย่างเช่นการใช้อัลกอริทึมนี้: en.wikipedia.org/wiki/Smith –Waterman_algorithm หลังจากนี้คุณจะสามารถทำการจำแนก / การจัดกลุ่ม / การแสดงข้อมูลของคุณ
German Demidov

คำตอบ:


6

ปัญหาของคุณอาจได้รับการปรับปรุงใหม่ตามที่ต้องการค้นหานิพจน์ทั่วไปที่จะจับคู่สตริงในแต่ละหมวดหมู่หรือไม่ นี่เป็นปัญหา "การสร้าง regex" ซึ่งเป็นส่วนย่อยของปัญหาการเหนี่ยวนำไวยากรณ์ (ดูที่เว็บไซต์ของ Alexander Clark )

ปัญหาการแสดงออกปกติง่ายขึ้น ฉันจะชี้ให้คุณรหัสFrakและRegexGenerator RegexGenerator ออนไลน์ ++มีการอ้างอิงถึงเอกสารทางวิชาการของพวกเขาในการแก้ปัญหา


5

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

อย่างไรก็ตามสำหรับวิธีนี้ในการทำงานจริงคุณจะต้องมีชุดข้อมูลการฝึกอบรมที่ค่อนข้างใหญ่

คุณสามารถอ้างถึงการติดฉลากลำดับภายใต้การดูแลด้วยเครือข่ายประสาทกำเริบโดย Alex Graves ตอนที่ 2 สำหรับรายละเอียดเพิ่มเติม

นี่คือลิงค์ไปยังสิ่งพิมพ์


1
คุณสามารถเพิ่มการอ้างอิงแบบเต็มสำหรับการอ้างอิงขั้นสุดท้ายของคุณได้หรือไม่ในกรณีที่ลิงก์ "preprint.pdf" แตกหักในอนาคต (ฉันเชื่อว่านี่เป็นบทที่เกี่ยวข้องหรือไม่)
GeoMatt22
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.