วิธีการวัด 'ความเหมือน' ระหว่างไวยากรณ์ FSA หรือไม่


10

ฉันกำลังทำงานกับอัลกอริธึมการจับคู่รูปแบบที่สร้างออโตเมติกสถานะ จำกัด แบบวนรอบซึ่งยอมรับสตริงข้อความที่กำหนดและสตริงย่อยทั้งหมด อัลกอริทึม FSA กำลังทำงานบนการแสดงสัญลักษณ์ของสตรีมเพลง (เช่นข้อมูล MIDI) สตรีมเพลงได้รับการประมวลผลล่วงหน้าเพื่อแบ่งแต่ละเพลงออกเป็น 'ส่วน' ที่ไม่มีป้ายกำกับ FSA ถูกสร้างขึ้นสำหรับแต่ละกลุ่มในแต่ละเพลงถ้าฉันมีเพลงแต่ละแบ่งออกเป็นปีส่วนฉันจะมีn Y FSAs แยกต่างหากnYnY

ฉันต้องการเปรียบเทียบ FSA ของแต่ละกลุ่มกับ FSA อื่น ๆ ในคลังข้อมูลของฉัน เป้าหมายสูงสุดคือการทำคลัสเตอร์ในพื้นที่ที่คล้ายคลึงกันและเกิดขึ้นกับ 'คลาส' ของเซ็กเมนต์ตามเมตริกการก่อสร้างที่คล้ายคลึงกัน ดังนั้นสิ่งที่น่าสนใจเป็นพิเศษคือไวยากรณ์ที่ FSA แต่ละรายการกำหนด (ที่สอดคล้องกันอย่างคร่าว ๆ ส่วนประกอบบางส่วนของเนื้อหาดนตรีในเซ็กเมนต์) มีเทคนิคที่อาจดีสำหรับการเปรียบเทียบสิ่งนี้ KL-divergence อยู่ในใจ (เช่นใช้เปรียบเทียบการกระจายข้ามสตริงที่เกี่ยวข้องกับ FSA ที่กำหนด) แม้ว่าอาจมีเทคนิคที่ดีกว่า / มีประสิทธิภาพมากกว่านี้หรือไม่?

นอกจากนี้ยังต้องขออภัยหากคำถามนี้เป็นเพียง (1) ง่ายเล็กน้อยหรือ (2) บ่งบอกถึงความเข้าใจผิดที่ลึกซึ้งขึ้นหรือ (3) ตอบคำถามอื่น ฉันเป็นคนจริงๆคน!


3
คุณจะต้องบอกให้เราทราบว่าคุณหมายถึงอะไร "คล้ายกัน" คุณต้องเลือกการวัด ไม่มีตัวชี้วัดที่ถูกต้องที่เหมาะสมสำหรับวัตถุประสงค์ทั้งหมด หากไม่มีข้อมูลเพิ่มเติมเราไม่สามารถบอกคุณได้ว่าจะใช้เมตริกใด ฉันขอแนะนำให้แก้ไขคำถามเพื่ออธิบายสาเหตุที่คุณต้องการวัดความคล้ายคลึงกันสิ่งที่คุณจะทำกับผลลัพธ์ของการวัดความคล้ายคลึงกันและสิ่งที่คุณทำวิจัย คุณอาจเริ่มต้นด้วยการดูการวัดความคล้ายคลึงกันระหว่างสตริงพื้นฐานแทนที่จะวัดความคล้ายคลึงกันของ FSAs ที่ได้จากสตริงเหล่านั้น แก้ไขระยะทางได้ในใจ
DW

มีตัวชี้วัดสตริงหลาย ; ซึ่งเหมาะกับคุณขึ้นอยู่กับ (หมายเหตุ: สตริง "metrics" บางส่วนที่ปรากฏในบทความนั้นไม่ใช่ตัวชี้วัดจริง ๆ ในแง่คณิตศาสตร์)
Raphael

การวัดสตริงเป็นสิ่งที่ดี แต่ไม่ใช่สิ่งที่ฉันต้องการ แทนที่จะเปรียบเทียบสตริงเฉพาะกับอีกอันหนึ่งฉันต้องการเปรียบเทียบระบบของกฎ (ไวยากรณ์อย่างเป็นทางการ / FSAs) ที่สามารถสร้างสตริงเหล่านั้นได้ ฉันจำได้ว่ามีไวยากรณ์จำนวนมากที่สามารถสร้างสตริงเฉพาะได้ดังนั้นฉันจึง จำกัด การค้นหาของฉันไปยังไวยากรณ์ (FSA) ที่สร้างขึ้นโดยใช้กฎชุดหนึ่ง ฉันคิดว่าอาจมีบางกรณีที่สองสายแต่ละตัวมีความคล้ายคลึงกันอย่างเป็นทางการตามตัวชี้วัดสตริงที่กำหนด แต่ไวยากรณ์ที่จำเป็นในการสร้างมันแตกต่างกันมาก
พลิก

จากคำสั่งของปัญหาแต่ละ FSA ยอมรับหนึ่งสตริงและสตริงย่อยทั้งหมด โดยพื้นฐานแล้ว FSA นี้มีเอกลักษณ์เฉพาะด้วยสตริงที่ยาวที่สุดที่ยอมรับได้ โครงสร้างทั้งหมดมาจากมัน ดังนั้นจึงมีจุดเล็กน้อยในการเปรียบเทียบ FSA แทนที่จะเปรียบเทียบสตริงที่สร้างโดยตรง อาจเป็นได้ว่าเทคนิคการก่อสร้าง FSA ของคุณให้ความสำคัญกับคุณลักษณะบางอย่างซึ่งคุณคิดว่าสำคัญ จากนั้นเราจำเป็นต้องรู้ว่าพวกเขาอาจมีหน้าตาอย่างไรเพื่อที่จะเข้าใจสิ่งที่สำคัญ มันกลับมาที่: อะไรที่คล้ายกัน ตามที่เป็นอยู่คำถามนี้ไม่สมเหตุสมผล
Babou

คำตอบ:


1

คุณอาจมีโชคมากขึ้นจากอีกมุมมอง & การวิจัยเกี่ยวกับความคล้ายคลึงกันของชิ้นดนตรีมีนักวิจัยศึกษาว่าและในขณะที่วิธีการของคุณสามารถทำงานได้มีวิธีอื่น ๆ มีฐานข้อมูลขนาดใหญ่ที่มีลักษณะที่หลายองค์ประกอบ / เกณฑ์เช่นเนื้อเพลง, ประเภทอื่น ๆ เช่นโครงการจีโนมเพลง

บางครั้งเมื่อมีอัลกอริทึมที่หลากหลายการสำรวจสามารถช่วยได้ นี่คือแบบสำรวจสองข้อเกี่ยวกับการจับคู่กราฟ


0

เนื่องจาก FSAs เป็นกราฟโดยตรงคำถามของคุณจึงสามารถเป็นแบบทั่วไปได้ "อัลกอริทึมสำหรับการวัดความคล้ายคลึงกันระหว่างกราฟกำกับ" การค้นหาของ Google สำหรับ "อัลกอริทึมความคล้ายคลึงกันของกราฟ" ให้หน้าและหน้าของการเข้าชมบางทีหนึ่งในนั้นจะเหมาะสำหรับวัตถุประสงค์ของคุณ?

เมื่อความแตกต่างระหว่าง FSAs และ digraphs ทั่วไปคือเลเบลขอบหรือสัญลักษณ์การเปลี่ยนแปลงใน FSAs ดังนั้นคุณจะต้องแก้ไขอัลกอริทึมเหล่านี้เพื่อนำมาพิจารณา


วิธีการเช่นนี้จะพลาดคุณสมบัติที่สำคัญบางอย่าง ตัวอย่างเช่นคุณอาจต้องการให้การแสดงต่าง ๆ ของภาษาเดียวกันมีความคล้ายคลึงกันอย่างสมบูรณ์ แต่การเปรียบเทียบกราฟสามารถรายงานออโตมาตาสองตัวสำหรับภาษาเดียวกันที่ต่างกัน
jmite
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.