ไวยากรณ์ข้อจำกัด
ไวยากรณ์แบบมีข้อจำกัด (Constraint GrammarหรือCG ) เป็นกระบวนทัศน์เชิงวิธีการสำหรับการประมวลผลภาษาธรรมชาติ (Natural Language Processing หรือ NLP) กฎที่เขียนโดยนักภาษาศาสตร์ และขึ้นอยู่กับ บริบทจะถูกรวบรวมเป็นไวยากรณ์ที่กำหนดแท็กทางไวยากรณ์ ("การอ่าน") ให้กับคำหรือโทเค็นอื่นๆ ในข้อความ แท็กทั่วไปจะกล่าวถึงการหา คำหลัก ( lexemeหรือรูปพื้นฐาน ), การผันคำ , การสร้างคำ , หน้าที่ ทางไวยากรณ์ , การพึ่งพา, วาเลนซี , บทบาทของกรณี , ประเภท ความหมายฯลฯ แต่ละกฎจะเพิ่ม ลบ เลือก หรือแทนที่แท็กหรือชุดของแท็กทางไวยากรณ์ในบริบทของประโยคที่กำหนด เงื่อนไขบริบทสามารถเชื่อมโยงกับแท็กหรือชุดของแท็กของคำใดๆ ก็ได้ในประโยค ไม่ว่าจะเป็นแบบเฉพาะที่ (ระยะทางที่กำหนด) หรือแบบโดยรวม (ระยะทางที่ไม่กำหนด) เงื่อนไขบริบทในกฎเดียวกันอาจเชื่อมโยงกัน กล่าวคือ มีเงื่อนไขซึ่งกันและกัน ปฏิเสธกัน หรือถูกปิดกั้นโดยคำหรือแท็กที่รบกวน โดยทั่วไปแล้ว CG ประกอบด้วยกฎหลายพันข้อ ซึ่งถูกนำมาใช้ทีละชุดในขั้นตอนที่ก้าวหน้าขึ้นเรื่อยๆ ครอบคลุมระดับการวิเคราะห์ที่ซับซ้อนขึ้น ในแต่ละระดับ จะใช้กฎที่ปลอดภัยก่อนกฎเชิงฮิวริสติก และไม่อนุญาตให้กฎใดๆ ลบค่าการอ่านสุดท้ายของประเภทที่กำหนด จึงทำให้มีความแข็งแกร่งสูง
แนวคิด CG เปิดตัวโดยFred Karlssonในปี 1990 (Karlsson 1990; Karlsson et al., eds, 1995) และตั้งแต่นั้นมาก็มีการเขียนแท็กเกอร์และตัวแยกวิเคราะห์ CG สำหรับภาษาต่างๆ มากมาย โดยได้คะแนน F-score ความแม่นยำสำหรับส่วนของคำพูด (ประเภทคำ) มากกว่า 99% เป็นประจำ [ 1 ]ระบบ CG ทางไวยากรณ์จำนวนหนึ่งรายงานคะแนน F-score ประมาณ 95% สำหรับป้ายกำกับหน้าที่ทางไวยากรณ์ ระบบ CG สามารถใช้สร้างแผนผังไวยากรณ์แบบเต็มในรูปแบบอื่นๆ ได้โดยการเพิ่มไวยากรณ์โครงสร้างวลีหรือไวยากรณ์การพึ่งพา ขนาดเล็กที่ไม่ใช่เทอร์มินัล และโครงการ Treebankจำนวนหนึ่งได้ใช้ CG สำหรับการระบุคำอธิบายประกอบอัตโนมัติ วิธีการ CG ยังถูกนำไปใช้ในแอปพลิเคชันเทคโนโลยีภาษาต่างๆ เช่นโปรแกรมตรวจสอบการสะกดคำและระบบการแปลด้วยเครื่อง
ไวยากรณ์และรูปแบบของกฎ
ตัวแยกวิเคราะห์ไวยากรณ์ข้อ จำกัด (Constraint Grammar parser) คาดหวังอินพุตเป็นกระแสของโทเค็นที่ผ่านการวิเคราะห์ทางสัณฐานวิทยา ซึ่งโดยทั่วไปสร้างขึ้นโดย ตัววิเคราะห์ที่ใช้ ตัวแปลงสถานะจำกัด (Finite-state transducer ) (ตัวอย่างที่พบบ่อย ได้แก่ เครื่องมือของ Xerox เช่น twolc/lexc/xfst, HFSTหรือlttoolbox ของApertium ) แต่ละโทเค็นอาจมีความกำกวมและมีหลาย ความหมายรูปแบบพื้นผิวพร้อมความหมายทั้งหมดเรียกว่า กลุ่มคำ (cohort ) ด้านล่างนี้คือตัวอย่างการวิเคราะห์ที่เป็นไปได้ของ ", และ X เหมือนกับ “" ในรูปแบบอินพุตที่ VISL CG-3 คาดหวัง:
"<,>" "," ซม. "<และ>" "และ" เชื่อม "<X>" "X" num pl "X" คำนาม "<เคยเป็น>" "be" กริยาอดีต p1 เอกพจน์ "be" กริยาอดีต p3 เอกพจน์ "<ชอบ>" "เหมือน" adj "ชอบ" หัวข้อ "ไลค์" pr "เหมือน" กริยา (ไม่เป็นทางการ) "เหมือน" กริยาปัจจุบัน "เหมือน" กริยา imp "<“>" "" lquot
ส่วนนี้แสดงกลุ่มคำ 5 กลุ่ม แต่ละกลุ่มมีการตีความอย่างน้อยหนึ่งอย่าง รูปแบบคำบนพื้นผิวอยู่ในรูปแบบปกติ ในขณะที่คำหลัก/รูปพื้นฐานอยู่ในรูปแบบปกติตามด้วยชุดแท็กที่ไม่ได้อยู่ในเครื่องหมายคำพูด และเราจะเห็นว่าบางกลุ่มมีการตีความหลายแบบ กล่าวคือมีความกำกวม (กำกวมระหว่างการตีความ 6 แบบ) หน้าที่ของตัวแยกวิเคราะห์ CG คือ 1) ลบการตีความที่ผิดออกให้มากที่สุดเท่าที่จะทำได้โดยคำนึงถึงบริบท 2) อาจใช้ป้ายกำกับหน้าที่ทางไวยากรณ์อย่างน้อยหนึ่งป้ายกับแต่ละกลุ่มคำ (หรือแม้แต่ความสัมพันธ์แบบพึ่งพา) และ 3) แก้ไขความกำกวมของป้ายกำกับ/ความสัมพันธ์ที่ใช้"<anglequotes>""quotes""<like>"
ด้านล่างนี้คือตัวอย่างกฎ (ในรูปแบบ VISL CG-3 อีกครั้ง) สำหรับการเลือกการอ่านแบบบุคคลที่สามของคำว่า "was" (โดยการตัดการอ่านแบบบุคคลที่หนึ่งออก) โดยที่ไม่มีคำสรรพนามบุคคลที่หนึ่งอยู่ทางด้านซ้าย:
ลบออก (กริยา หน้า 1) ถ้า (0C (กริยา)) (NEGATE *-1 (prn p1)) ;
ต่อไปนี้(verb p1)คือชุดแท็ก (ลำดับไม่สำคัญ) ที่ต้องตรงกับการอ่านที่เรากำลังลบออก หลังจากนั้นจะIFเป็นรายการข้อจำกัด ตั้งแต่ศูนย์ข้อขึ้นไป ข้อจำกัดแรกระบุว่าในกลุ่มนี้ (ตำแหน่ง 0) การอ่าน ทั้งหมด (คำคุณศัพท์Cสำหรับคำว่า ระวัง) ต้องมีแท็กverbข้อจำกัดที่สองระบุว่า หากมีกลุ่มที่อยู่ทางซ้ายอย่างน้อยหนึ่งคำ (ตำแหน่ง*-1ซึ่ง*หมายความว่าเราอาจไปไกลกว่านั้น-ทางซ้าย) และกลุ่มนั้นเป็นสรรพนามบุรุษที่หนึ่ง ข้อจำกัด *ไม่* ตรงกัน ( NEGATE)
ใน CG-3 กฎต่างๆ อาจได้รับการตั้งชื่อ เช่นSELECT:somename (…) IFซึ่งจะปรากฏในผลลัพธ์การติดตาม
นอกจากนี้ กฎยังสามารถเลือกค่าการอ่านเพียงค่าเดียวได้ หากเรามั่นใจว่าค่าการอ่านอื่นๆ ทั้งหมดจะต้องผิดภายใต้ข้อจำกัดที่กำหนด:
เลือก:อ้างอิง ("like" subj) ถ้า (-1 ("<เคยเป็น>")) (1 (lquot) หรือ (":")) ; ในกฎนี้ เราจะเห็นว่าเราสามารถอ้างอิงได้ทั้งรูปแบบคำและรูปแบบพื้นฐานในชุดแท็ก (โดยจะได้รับการปฏิบัติเช่นเดียวกับแท็กอื่นๆ และการอ่านจะตรงกับรูปแบบคำเสมอ) ข้อจำกัดข้อที่สองใช้ORเพื่อรวมชุดแท็กสองชุดเข้าด้วยกัน หากชุดนี้มีการใช้งานบ่อย เราสามารถตั้งชื่อให้กับมันและใช้ชื่อนั้นโดยไม่ต้องมีวงเล็บ ดังนี้:
LIST prequote = lquot ":" ; เลือก:อ้างอิง ("like" subj) ถ้า (-1 ("<เคยเป็น>")) (1 การอ้างอิงก่อนหน้า) ; นิยามที่เทียบเท่ากันคือ.SET prequote = (lquot) OR (":") ;
หลังจากดำเนินการตามกฎข้างต้นแล้ว เราจะได้ผลลัพธ์ดังนี้:
"<,>" "," ซม. "<และ>" "และ" เชื่อม "<X>" "X" num pl "X" คำนาม "<เคยเป็น>" "be" กริยาอดีต p3 เอกพจน์ "<ชอบ>" "ชอบ" หัวข้อ "<“>" "" lquot
ถ้าเราใช้--traceเราจะเห็นค่าที่ถูกลบออกโดยมีอักษรย่อ;และชื่อและหมายเลขบรรทัดของกฎนั้นๆ กำกับอยู่ ในทุกที่ที่กฎนั้นใช้กับค่าที่อ่านได้
ไวยากรณ์ของกฎสำหรับการเพิ่มป้ายกำกับฟังก์ชันทางไวยากรณ์เป็นไปตามรูปแบบที่คล้ายกันคือ "ทำสิ่งนี้ถ้า x, y และ z":
รายการคำนาม = คำนาม prn ; เพิ่ม (@SUBJ) ถ้า (ปฏิเสธ *-1 ตามนาม) (0C (prop)) (กริยาช่อง 1C) ;
สิ่งนี้เรียกว่า "กฎการแมป" และเราอาจมีแท็กการแมปดังกล่าวหลายแท็กต่อกลุ่ม ซึ่งในกรณีนี้เราสามารถแยกแยะความแตกต่างได้โดยใช้กฎ SELECT/REMOVE เดียวกัน
การนำไปใช้
ซีจี-1
การนำ CG ไปใช้ครั้งแรกคือ CGP โดย Fred Karlsson ในช่วงต้นทศวรรษ 1990 มัน ใช้ภาษา LISP ล้วนๆ และไวยากรณ์ก็อิงตามนิพจน์ s ของ LISP (Karlsson 1990)
ซีจี-2
การใช้งาน CG-2 ของ Pasi Tapanainen mdis [ 2 ]ได้ลบวงเล็บบางส่วนในรูปแบบไวยากรณ์และถูกนำไปใช้ใน C++ โดยตีความไวยากรณ์เป็นFinite State Transducerเพื่อความเร็ว
ต่อมา CG-2 ได้รับการพัฒนาใหม่ (โดยใช้วิธีที่ไม่ใช้ FST) โดยกลุ่ม VISL ที่มหาวิทยาลัย Syddanskในรูปแบบโอเพนซอร์สชื่อ VISL CGโดยคงรูปแบบเดียวกับไฟล์ mdis แบบปิดแหล่งที่ มา ของ Tapanainen ไว้
ซีจี-3


ต่อมาโครงการ VISL ได้พัฒนาเป็น VISL CG-3 ซึ่งนำมาซึ่งการเปลี่ยนแปลงและเพิ่มเติมรูปแบบไวยากรณ์เพิ่มเติม เช่น:
- รองรับUnicodeอย่างเต็มรูปแบบ ผ่าน International Components for Unicode
- การตีความการปฏิเสธที่แตกต่างกัน (NOT)
- ความสัมพันธ์ที่มีชื่อ นอกเหนือจากความสัมพันธ์การพึ่งพาแบบธรรมดา
- การตั้งค่าตัวแปร
- การจับคู่ regex เต็มรูปแบบ
- การรวมแท็ก/ชุด –
LIST gen = m f; SELECT (det) + $$gen IF (1 noun) (1 $$gen);จะเลือกคำนำหน้าคำนามที่มีเพศเดียวกับคำนามที่ตามมา - ตัวห่อสำหรับการอ่าน/เขียนไฟล์ApertiumและHFST
- รองรับการอ่านย่อย (ซึ่งการอ่านหนึ่งครั้งมีหลาย "ส่วน" ใช้สำหรับสำนวนและคำประสมที่มีหลายคำ)
- การสแกนผ่านจุดเริ่มต้นหรือแม้แต่ขอบเขตของหน้าต่าง
- ใช้เป็นคลังข้อมูลและสนับสนุนการบูรณาการกับกระบวนการภายนอก
นอกจากนี้ยังมี IDE แบบง่ายสำหรับ CG-3 ที่พัฒนาโดย VISL อีกด้วยซึ่งมีฟังก์ชันเน้นไวยากรณ์และช่วยให้คุณเห็นข้อมูลนำเข้าและข้อมูลส่งออก รวมถึงข้อผิดพลาดที่อาจเกิดขึ้นขณะที่คุณเขียนไวยากรณ์ นอกจากนี้ยังมีโหมดEmacs อีกด้วยcg.elมีคุณสมบัติคล้ายคลึงกันและการนำทางโค้ดที่ง่าย
แตกต่างจากการใช้งาน Tapanainen การใช้งาน VISL ไม่ได้ใช้ทรานสดิวเซอร์สถานะจำกัด กฎต่างๆ จะถูกจัดเรียงภายในส่วนต่างๆ ซึ่งทำให้การเขียนไวยากรณ์คาดเดาได้ง่ายขึ้น แต่ก็แลกมาด้วยการประมวลผลที่ช้าลงและความเป็นไปได้ที่จะเกิดลูปไม่สิ้นสุด
มีการนำ CG-2 ที่ใช้ FST แบบโอเพนซอร์สมาใช้งานใหม่ ซึ่งสำหรับไวยากรณ์ขนาดเล็กจะสามารถทำความเร็วได้เทียบเท่ากับ VISL CG-3 หรือแม้กระทั่งmdis [ 3 ]
รายชื่อระบบ
- ซอฟต์แวร์ฟรี
- คอมไพเลอร์/ตัวแยกวิเคราะห์ไวยากรณ์ VISL CG-3 CGrammar
- ภาษาซา มิเหนือและลูเล , ภาษาฟาโรอีส , ภาษาโคมีและภาษากรีนแลนด์จากมหาวิทยาลัยทรอมโซ ( ข้อมูลเพิ่มเติม เอกสารเกี่ยว กับภาษาซามิเหนือ )
- FinCG ฉบับภาษาฟินแลนด์ดั้งเดิมของ Fred Karlsson ก็มีให้ดาวน์โหลดจากมหาวิทยาลัย Tromsø ในรูปแบบ GPL ทั้งในรูปแบบ CG1 ดั้งเดิม และในเวอร์ชันCG3 ที่แปลงแล้ว
- เอสโตเนีย
- Norwegian Nynorsk และ Bokmål ออนไลน์ , Oslo-Bergen tagger ( ซอร์สโค้ด )
- ภาษาเบรอตง , เวลส์ , ไอริชเกลิกและนอร์เวย์ (แปลงจากภาษาข้างต้น) ในApertium (ดูCG ใน Apertium )
- ซอฟต์แวร์ที่ไม่ใช่ซอฟต์แวร์เสรี
- บาสก์
- คาตาลันCATCG
- เดนมาร์กแดนแกรม
- ENGCGภาษาอังกฤษ, ENGCG-2 , VISL-ENGCG
- เอสเปรันโต เอสพีแกรม
- เฟรนช์แฟรก
- เจอร์แกรมเยอรมัน
- ชาวไอริชออนไลน์
- อิตาแกรมอิตาเลียน
- ฮิสปาลภาษาสเปน
- SWECG ของสวีเดนถูกเก็บถาวรเมื่อวันที่ 5 กุมภาพันธ์ 2007 ที่Wayback Machine
- สวาฮิลี
- ปาลาฟราสโปรตุเกส
ลิงก์ภายนอก
- บทเรียน CGโดย เควิน ดอนเนลลี่
- VISL CG-3คือตัวคอมไพล์/ตัวแยกวิเคราะห์ไวยากรณ์
- รายชื่อหนังสือที่ตีพิมพ์เกี่ยวกับไวยากรณ์ข้อจำกัด (อย่างน้อยจนถึงปี 2010)