From 6bdf896dd6fd3a1d4fd50ebd5d83275dcd1d5da3 Mon Sep 17 00:00:00 2001 From: Purinda Gunasekara Date: Fri, 2 Oct 2026 19:42:10 +1000 Subject: [PATCH 1/2] Keep a correction's meaning in Deep's check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deep's check (SelfRepair, in Swift and Rust) accepted answers that resolve a self-correction the wrong way while keeping every word in its place: "book the blue room sorry the green room for friday" → "Book the blue room for Friday." or "Book the blue green room for Friday." It now reads what a correction says: - The phrase's key word, the first word that says something new ("green"), stays, as itself or a word like it ("busses" → "buses"), never as another word ("trains"). - The corrected words that key word takes back ("blue") are never written again. - A phrase that says the corrected words again after a new word corrects the word before them too ("The billing service goes live. Sorry, I mean the login service." → "The login service goes live."). - A fact or a name never leaves the one of its sort just before the words it corrects: "three servers, sorry, four" corrects "three", and "Invite Sam to the launch. Sorry, Priya." is never "Invite Sam and Priya to the launch." - Misheard cues ("know" for "no") and misheard small words ("thee") say nothing a correction says. - "a.m." and "p.m." end a sentence only before a capital. It also fixes a crash. When a second correction took a cue out of a phrase an earlier one had moved ("I'll call no one now. Scratch that. I'll email no one instead."), the phrase kept its old length and the alignment read past the end of the words. A moved phrase now ends where its words stop following each other. Guard fixtures: three verdicts change, each to rejecting a wrong answer ("cars, sorry, busses" → "trains"; "say sorry to Jo" → "say it to Jo"; "Invite Sam and Priya to the launch"). Through the Rust check, no right one of 19,826 training and test targets is newly rejected; six wrong ones are (a second cue dropped, a date correction that keeps the day it retracts). The crash fix changes no verdict on those targets or on 3,566 recorded answers of two Deep adapters. The Swift CleanupTests (190) and lt-cleanup's 200 tests pass; clippy and rustfmt are clean. Co-Authored-By: Claude Opus 5.5 --- Fixtures/cleanup/guard.jsonl | 30 +- .../Sources/Cleanup/SelfRepair.swift | 74 +++-- .../Sources/Cleanup/SelfRepairAlignment.swift | 49 ++- .../Cleanup/SelfRepairCorrections.swift | 251 +++++++++++++-- .../Tests/CleanupTests/SelfRepairTests.swift | 104 ++++++ .../crates/cleanup/src/self_repair.rs | 21 +- .../cleanup/src/self_repair/alignment.rs | 67 +++- .../cleanup/src/self_repair/corrections.rs | 297 +++++++++++++++++- .../crates/cleanup/src/self_repair/tests.rs | 167 ++++++++++ linux-windows/crates/cleanup/src/words.rs | 4 + 10 files changed, 983 insertions(+), 81 deletions(-) diff --git a/Fixtures/cleanup/guard.jsonl b/Fixtures/cleanup/guard.jsonl index 85c8195..f447070 100644 --- a/Fixtures/cleanup/guard.jsonl +++ b/Fixtures/cleanup/guard.jsonl @@ -29,7 +29,7 @@ {"deepMultiline":{"accepted":"Send it to Jane before Friday."},"outcome":{"completed":"Send it to Jane before Friday."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","jane","before","friday"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["send","it","to","john","i","mean","jane","before","friday"],"similarity":"0.7073170731707317","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"send it to john i mean jane before friday","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"word":"john"},{"word":"before"},{"endsSentence":true,"word":"friday"}],[{"opensPhrase":2,"spare":["send"],"word":"jane"},{"word":"before"},{"word":"it"},{"word":"to"},{"word":"john"},{"endsSentence":true,"word":"friday"}]],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"john"},{"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"word":"jane"},{"word":"before"},{"endsSentence":true,"word":"friday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jane"},{"word":"before"},{"isCapitalised":true,"word":"friday"}]},"verdicts":{"deep":{"accepted":"Send it to Jane before Friday."},"high":{"accepted":"Send it to Jane before Friday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Send it to Jane before Friday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"We need four more servers for the launch."},"outcome":{"completed":"We need four more servers for the launch."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four","more","servers","for","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[2,3],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,2,3,4,5,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","sorry","four","more","servers","for","the","launch"],"similarity":"0.7692307692307692","wordRatio":"0.8"},"placeholders":[],"raw":"we need three sorry four more servers for the launch","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"isCue":true,"word":"sorry"},{"word":"four"},{"word":"more"},{"word":"servers"},{"word":"for"},{"word":"the"},{"endsSentence":true,"word":"launch"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"},{"word":"more"},{"word":"servers"},{"word":"for"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"We need four more servers for the launch."},"high":{"accepted":"We need four more servers for the launch."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"We need four more servers for the launch."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"It's the auth service that times out."},"outcome":{"completed":"It's the auth service that times out."},"parts":{"cleanedCues":0,"cleanedWords":["it's","the","auth","service","that","times","out"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[2,3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,null,2,3,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["it's","the","login","service","or","rather","the","auth","service","that","times","out"],"similarity":"0.5625","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"it's the login service or rather the auth service that times out","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"it's"},{"word":"the"},{"opensPhrase":2,"spare":["login"],"word":"the"},{"word":"auth"},{"word":"service"},{"word":"service"},{"word":"that"},{"word":"times"},{"endsSentence":true,"word":"out"}]],"said":[{"startsSentence":true,"word":"it's"},{"word":"the"},{"word":"login"},{"word":"service"},{"isCue":true,"word":"or"},{"isCue":true,"word":"rather"},{"word":"the"},{"word":"auth"},{"word":"service"},{"word":"that"},{"word":"times"},{"endsSentence":true,"word":"out"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"it's"},{"word":"the"},{"word":"auth"},{"word":"service"},{"word":"that"},{"word":"times"},{"word":"out"}]},"verdicts":{"deep":{"accepted":"It's the auth service that times out."},"high":{"accepted":"It's the auth service that times out."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"It's the auth service that times out."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"The meeting is at three p.m."},"outcome":{"completed":"The meeting is at three p.m."},"parts":{"cleanedCues":0,"cleanedWords":["the","meeting","is","at","three","pm"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["the","meeting","is","at","two","pm","actually","make","that","three","pm"],"similarity":"0.5","wordRatio":"0.5454545454545454"},"placeholders":[],"raw":"the meeting is at two pm actually make that three pm","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"isCue":true,"opensPhrase":3,"spare":["two"],"word":"make"},{"isCue":true,"word":"that"},{"word":"three"},{"word":"pm"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"isCue":true,"opensPhrase":4,"spare":["two"],"word":"make"},{"isCue":true,"word":"that"},{"word":"three"},{"word":"pm"},{"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"pm"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":2,"spare":["two"],"word":"three"},{"word":"pm"},{"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"pm"},{"isCue":true,"word":"actually"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two","pm"],"word":"three"},{"isCue":true,"word":"actually"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"word":"two"},{"opensPhrase":1,"spare":["pm"],"word":"three"},{"isCue":true,"word":"actually"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":2,"spare":["two"],"word":"three"},{"word":"pm"},{"word":"pm"},{"isCue":true,"word":"actually"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":2,"spare":["two","pm"],"word":"three"},{"word":"pm"},{"isCue":true,"word":"actually"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"word":"two"},{"opensPhrase":2,"spare":["pm"],"word":"three"},{"word":"pm"},{"isCue":true,"word":"actually"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two"],"word":"pm"},{"opensPhrase":1,"spare":["pm"],"word":"three"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"word":"two"},{"word":"pm"},{"isCue":true,"word":"actually"},{"isCue":true,"word":"make"},{"isCue":true,"word":"that"},{"word":"three"},{"endsSentence":true,"word":"pm"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"word":"three"},{"word":"pm"}]},"verdicts":{"deep":{"accepted":"The meeting is at three p.m."},"high":{"accepted":"The meeting is at three p.m."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The meeting is at three p.m."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The meeting is at three p.m."},"outcome":{"completed":"The meeting is at three p.m."},"parts":{"cleanedCues":0,"cleanedWords":["the","meeting","is","at","three","pm"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["the","meeting","is","at","two","pm","actually","make","that","three","pm"],"similarity":"0.5","wordRatio":"0.5454545454545454"},"placeholders":[],"raw":"the meeting is at two pm actually make that three pm","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"isCue":true,"opensPhrase":3,"spare":["two"],"word":"make"},{"isCue":true,"word":"that"},{"word":"three"},{"word":"pm"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"isCue":true,"opensPhrase":4,"spare":["two"],"word":"make"},{"isCue":true,"word":"that"},{"word":"three"},{"word":"pm"},{"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"pm"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":2,"spare":["two"],"word":"three"},{"word":"pm"},{"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"pm"},{"isCue":true,"word":"actually"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":1,"spare":["two","pm"],"word":"three"},{"isCue":true,"word":"actually"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":2,"spare":["two"],"word":"three"},{"word":"pm"},{"word":"pm"},{"isCue":true,"word":"actually"}],[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"opensPhrase":2,"spare":["two","pm"],"word":"three"},{"word":"pm"},{"isCue":true,"word":"actually"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"word":"two"},{"word":"pm"},{"isCue":true,"word":"actually"},{"isCue":true,"word":"make"},{"isCue":true,"word":"that"},{"word":"three"},{"endsSentence":true,"word":"pm"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"meeting"},{"word":"is"},{"word":"at"},{"word":"three"},{"word":"pm"}]},"verdicts":{"deep":{"accepted":"The meeting is at three p.m."},"high":{"accepted":"The meeting is at three p.m."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The meeting is at three p.m."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Open the preferences window."},"outcome":{"completed":"Open the preferences window."},"parts":{"cleanedCues":0,"cleanedWords":["open","the","preferences","window"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[2,3,4],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,2,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["open","the","settings","sorry","the","preferences","window"],"similarity":"0.5869565217391304","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"open the settings sorry the preferences window","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["open"],"word":"the"},{"word":"preferences"},{"word":"the"},{"word":"settings"},{"endsSentence":true,"word":"window"}]],"said":[{"startsSentence":true,"word":"open"},{"word":"the"},{"word":"settings"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"preferences"},{"endsSentence":true,"word":"window"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"open"},{"word":"the"},{"word":"preferences"},{"word":"window"}]},"verdicts":{"deep":{"accepted":"Open the preferences window."},"high":{"accepted":"Open the preferences window."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Open the preferences window."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Let's wait until Tuesday."},"outcome":{"completed":"Let's wait until Tuesday."},"parts":{"cleanedCues":1,"cleanedWords":["let's","wait","until","tuesday"],"droppedContent":3,"droppedRun":7,"gaps":[{"deleted":[0,1,2,3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,null,null,null,null,null,null,0,1,2,3],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["we","should","deploy","on","monday","scratch","that","let's","wait","until","tuesday"],"similarity":"0.375","wordRatio":"0.36363636363636365"},"placeholders":[],"raw":"we should deploy on monday scratch that let's wait until tuesday","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"should"},{"word":"deploy"},{"word":"on"},{"opensPhrase":1,"spare":["monday"],"word":"until"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"let's"},{"endsSentence":true,"word":"tuesday"}],[{"startsSentence":true,"word":"we"},{"word":"should"},{"word":"deploy"},{"word":"on"},{"opensPhrase":2,"spare":["monday"],"word":"until"},{"word":"tuesday"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"let's"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"should"},{"word":"deploy"},{"word":"on"},{"word":"monday"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"let's"},{"isCue":true,"word":"wait"},{"word":"until"},{"endsSentence":true,"word":"tuesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"let's"},{"word":"wait"},{"word":"until"},{"isCapitalised":true,"word":"tuesday"}]},"verdicts":{"deep":{"accepted":"Let's wait until Tuesday."},"high":{"accepted":"Let's wait until Tuesday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Let's wait until Tuesday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"So we need to fix the login page."},"outcome":{"completed":"So we need to fix the login page."},"parts":{"cleanedCues":0,"cleanedWords":["so","we","need","to","fix","the","login","page"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[]},{"deleted":[7,8,9],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,1,2,3,4,5,null,null,null,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["so","um","we","need","to","fix","the","the","signup","sorry","login","page"],"similarity":"0.6153846153846154","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"so um we need to fix the the signup sorry login page","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"so"},{"word":"um"},{"word":"we"},{"opensPhrase":1,"spare":["need"],"word":"login"},{"word":"to"},{"word":"fix"},{"word":"the"},{"word":"the"},{"word":"signup"},{"endsSentence":true,"word":"page"}],[{"startsSentence":true,"word":"so"},{"word":"um"},{"word":"we"},{"word":"need"},{"word":"to"},{"opensPhrase":1,"spare":["fix"],"word":"login"},{"word":"the"},{"word":"the"},{"word":"signup"},{"endsSentence":true,"word":"page"}]],"said":[{"startsSentence":true,"word":"so"},{"word":"um"},{"word":"we"},{"word":"need"},{"word":"to"},{"word":"fix"},{"word":"the"},{"word":"the"},{"word":"signup"},{"isCue":true,"word":"sorry"},{"word":"login"},{"endsSentence":true,"word":"page"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"so"},{"word":"we"},{"word":"need"},{"word":"to"},{"word":"fix"},{"word":"the"},{"word":"login"},{"word":"page"}]},"verdicts":{"deep":{"accepted":"So we need to fix the login page."},"high":{"accepted":"So we need to fix the login page."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"So we need to fix the login page."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} @@ -44,10 +44,10 @@ {"deepMultiline":{"accepted":"I returned the jacket to the shop in the centre."},"outcome":{"completed":"I returned the jacket to the shop in the centre."},"parts":{"cleanedCues":0,"cleanedWords":["i","returned","the","jacket","to","the","shop","in","the","centre"],"droppedContent":6,"droppedRun":8,"gaps":[{"deleted":[6],"inserted":[]},{"deleted":[8,9,10,11,12,13,14,15],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,null,6,null,null,null,null,null,null,null,null,7,8,9],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["i","returned","the","jacket","to","the","big","shop","on","high","street","wait","no","to","the","shop","in","the","centre"],"similarity":"0.5465116279069768","wordRatio":"0.5263157894736842"},"placeholders":[],"raw":"i returned the jacket to the big shop on high street wait no to the shop in the centre","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"i"},{"opensPhrase":3,"spare":["returned"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"opensPhrase":3,"spare":["jacket"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"opensPhrase":3,"spare":["big"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"opensPhrase":3,"spare":["shop"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"opensPhrase":3,"spare":["high"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"street"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"opensPhrase":4,"spare":["returned"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"opensPhrase":4,"spare":["jacket"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"opensPhrase":4,"spare":["big"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"opensPhrase":4,"spare":["shop"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"on"},{"word":"high"},{"word":"street"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"opensPhrase":4,"spare":["high"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"street"},{"word":"the"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"opensPhrase":5,"spare":["returned"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"opensPhrase":5,"spare":["jacket"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"opensPhrase":5,"spare":["big"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"opensPhrase":5,"spare":["shop"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"on"},{"word":"high"},{"word":"street"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"opensPhrase":5,"spare":["high"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"street"},{"endsSentence":true,"word":"centre"}],[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"opensPhrase":6,"spare":["shop"],"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"centre"},{"word":"on"},{"word":"high"},{"word":"street"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"big"},{"word":"shop"},{"word":"on"},{"word":"high"},{"word":"street"},{"isCue":true,"word":"wait"},{"isCue":true,"word":"no"},{"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"centre"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"returned"},{"word":"the"},{"word":"jacket"},{"word":"to"},{"word":"the"},{"word":"shop"},{"word":"in"},{"word":"the"},{"word":"centre"}]},"verdicts":{"deep":{"accepted":"I returned the jacket to the shop in the centre."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Buses."},"parts":{"cleanedCues":0,"cleanedWords":["buses"],"droppedContent":6,"gaps":[{"deleted":[0,1,2,3,4,5,6,7,8,9,10],"inserted":[0]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,null,null,null,null,null,null,null,null,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i","want","to","talk","about","fuel","efficiency","in","cars","sorry","busses"],"similarity":"0.08771929824561409","wordRatio":"0.09090909090909091"},"placeholders":[],"raw":"I want to talk about fuel efficiency in cars sorry busses","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i"},{"opensPhrase":1,"spare":["want"],"word":"busses"},{"word":"to"},{"word":"talk"},{"word":"about"},{"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"i"},{"word":"want"},{"word":"to"},{"opensPhrase":1,"spare":["talk"],"word":"busses"},{"word":"about"},{"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"i"},{"word":"want"},{"word":"to"},{"word":"talk"},{"word":"about"},{"opensPhrase":1,"spare":["fuel"],"word":"busses"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"i"},{"word":"want"},{"word":"to"},{"word":"talk"},{"word":"about"},{"word":"fuel"},{"opensPhrase":1,"spare":["efficiency"],"word":"busses"},{"word":"in"},{"word":"cars"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"want"},{"word":"to"},{"word":"talk"},{"word":"about"},{"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"busses"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"buses"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Send it to Jane in accounts."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","jane","in","accounts"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]},{"deleted":[],"inserted":[4,5]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["send","it","to","john","i","mean","jane"],"similarity":"0.5555555555555556","wordRatio":"0.8571428571428571"},"placeholders":[],"raw":"send it to john i mean jane","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"word":"john"}]],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"john"},{"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"endsSentence":true,"word":"jane"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jane"},{"word":"in"},{"word":"accounts"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"Fuel efficiency in trains."},"outcome":{"completed":"Fuel efficiency in trains."},"parts":{"cleanedCues":0,"cleanedWords":["fuel","efficiency","in","trains"],"droppedContent":2,"gaps":[{"deleted":[3,4,5],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["fuel","efficiency","in","cars","sorry","busses"],"similarity":"0.5833333333333333","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"fuel efficiency in cars sorry busses","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["fuel"],"word":"busses"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"fuel"},{"opensPhrase":1,"spare":["efficiency"],"word":"busses"},{"word":"in"},{"word":"cars"}]],"said":[{"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"busses"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"trains"}]},"verdicts":{"deep":{"accepted":"Fuel efficiency in trains."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Fuel efficiency in trains."},"parts":{"cleanedCues":0,"cleanedWords":["fuel","efficiency","in","trains"],"droppedContent":2,"gaps":[{"deleted":[3,4,5],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["fuel","efficiency","in","cars","sorry","busses"],"similarity":"0.5833333333333333","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"fuel efficiency in cars sorry busses","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["fuel"],"word":"busses"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"fuel"},{"opensPhrase":1,"spare":["efficiency"],"word":"busses"},{"word":"in"},{"word":"cars"}]],"said":[{"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"busses"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"trains"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Sorry to interrupt, but can I ask a question?"},"outcome":{"completed":"Sorry to interrupt, but can I ask a question?"},"parts":{"cleanedCues":1,"cleanedWords":["sorry","to","interrupt","but","can","i","ask","a","question"],"droppedContent":0,"gaps":[],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,5,6,7,8],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["sorry","to","interrupt","but","can","i","ask","a","question"],"similarity":"1.0","wordRatio":"1.0"},"placeholders":[],"raw":"sorry to interrupt but can i ask a question","repair":{"accepts":true,"rewrites":[],"said":[{"isCue":true,"startsSentence":true,"word":"sorry"},{"word":"to"},{"word":"interrupt"},{"word":"but"},{"word":"can"},{"word":"i"},{"word":"ask"},{"word":"a"},{"endsSentence":true,"word":"question"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"sorry"},{"word":"to"},{"word":"interrupt"},{"word":"but"},{"word":"can"},{"isCapitalised":true,"word":"i"},{"word":"ask"},{"word":"a"},{"word":"question"}]},"verdicts":{"deep":{"accepted":"Sorry to interrupt, but can I ask a question?"},"high":{"accepted":"Sorry to interrupt, but can I ask a question?"},"light":{"accepted":"Sorry to interrupt, but can I ask a question?"},"medium":{"accepted":"Sorry to interrupt, but can I ask a question?"},"none":{"accepted":"Sorry to interrupt, but can I ask a question?"}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Sorry, a question?"},"parts":{"cleanedCues":1,"cleanedWords":["sorry","a","question"],"droppedContent":2,"droppedRun":6,"gaps":[{"deleted":[1,2,3,4,5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,null,null,null,null,null,1,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["sorry","to","interrupt","but","can","i","ask","a","question"],"similarity":"0.37209302325581395","wordRatio":"0.3333333333333333"},"placeholders":[],"raw":"sorry to interrupt but can i ask a question","repair":{"accepts":false,"rewrites":[],"said":[{"isCue":true,"startsSentence":true,"word":"sorry"},{"word":"to"},{"word":"interrupt"},{"word":"but"},{"word":"can"},{"word":"i"},{"word":"ask"},{"word":"a"},{"endsSentence":true,"word":"question"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"sorry"},{"word":"a"},{"word":"question"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"count":2,"description":"dropped 2 words that carry meaning","reason":"droppedContent"}},"light":{"rejected":{"count":6,"description":"dropped 6 spoken words","reason":"droppedWords"}},"medium":{"rejected":{"count":6,"description":"dropped 6 spoken words","reason":"droppedWords"}},"none":{"rejected":{"count":6,"description":"dropped 6 spoken words","reason":"droppedWords"}}}} -{"deepMultiline":{"accepted":"Send it to Jill."},"outcome":{"completed":"Send it to Jill."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","jill"],"droppedContent":5,"droppedRun":6,"gaps":[{"deleted":[3,4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,null,null,null,3],"movesOrDropsName":true,"names":[3,6,9],"rawCues":3,"rawWords":["send","it","to","john","i","mean","jane","no","wait","jill"],"similarity":"0.375","wordRatio":"0.4"},"placeholders":[],"raw":"Send it to John, I mean Jane, no wait, Jill.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":2,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":3,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":4,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send","it","to","john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["mean"],"word":"jill"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send","it","to","john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john","i","mean","jane"],"word":"jill"},{"isCue":true,"word":"no"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["jane"],"word":"jill"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":2,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":2,"spare":["send"],"word":"jill"},{"isCue":true,"word":"no"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jill"}]},"verdicts":{"deep":{"accepted":"Send it to Jill."},"high":{"accepted":"Send it to Jill."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Send it to Jill."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Send it to Jill."},"outcome":{"completed":"Send it to Jill."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","jill"],"droppedContent":5,"droppedRun":6,"gaps":[{"deleted":[3,4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,null,null,null,3],"movesOrDropsName":true,"names":[3,6,9],"rawCues":3,"rawWords":["send","it","to","john","i","mean","jane","no","wait","jill"],"similarity":"0.375","wordRatio":"0.4"},"placeholders":[],"raw":"Send it to John, I mean Jane, no wait, Jill.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":2,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":3,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":4,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send","it","to","john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send","it","to","john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john","i","mean","jane"],"word":"jill"},{"isCue":true,"word":"no"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["jane"],"word":"jill"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jane"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":2,"spare":["send"],"word":"jane"},{"isCue":true,"word":"no"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["john"],"word":"jill"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"jill"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCue":true,"word":"no"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":2,"spare":["send"],"word":"jill"},{"isCue":true,"word":"no"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"john"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jane"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"jill"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jill"}]},"verdicts":{"deep":{"accepted":"Send it to Jill."},"high":{"accepted":"Send it to Jill."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Send it to Jill."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"The build is green."},"outcome":{"completed":"The build is green."},"parts":{"cleanedCues":0,"cleanedWords":["the","build","is","green"],"droppedContent":0,"gaps":[],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["the","build","is","green"],"similarity":"1.0","wordRatio":"1.0"},"placeholders":[],"raw":"The build is green.","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"the"},{"word":"build"},{"word":"is"},{"endsSentence":true,"word":"green"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"build"},{"word":"is"},{"word":"green"}]},"verdicts":{"deep":{"accepted":"The build is green."},"high":{"accepted":"The build is green."},"light":{"accepted":"The build is green."},"medium":{"accepted":"The build is green."},"none":{"accepted":"The build is green."}}} {"deepMultiline":{"accepted":"Buses."},"outcome":{"completed":"Buses."},"parts":{"cleanedCues":0,"cleanedWords":["buses"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[0,1],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,null,0],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["cars","sorry","buses"],"similarity":"0.3125","wordRatio":"0.3333333333333333"},"placeholders":[],"raw":"cars sorry buses","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"cars"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"buses"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"buses"}]},"verdicts":{"deep":{"accepted":"Buses."},"high":{"accepted":"Buses."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Buses."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Sorry, I'm late."},"outcome":{"completed":"Sorry, I'm late."},"parts":{"cleanedCues":1,"cleanedWords":["sorry","i'm","late"],"droppedContent":0,"gaps":[],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["sorry","i'm","late"],"similarity":"1.0","wordRatio":"1.0"},"placeholders":[],"raw":"sorry I'm late","repair":{"accepts":true,"rewrites":[],"said":[{"isCue":true,"startsSentence":true,"word":"sorry"},{"isCapitalised":true,"word":"i'm"},{"endsSentence":true,"word":"late"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"sorry"},{"isCapitalised":true,"word":"i'm"},{"word":"late"}]},"verdicts":{"deep":{"accepted":"Sorry, I'm late."},"high":{"accepted":"Sorry, I'm late."},"light":{"accepted":"Sorry, I'm late."},"medium":{"accepted":"Sorry, I'm late."},"none":{"accepted":"Sorry, I'm late."}}} @@ -234,7 +234,7 @@ {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Send it to Jane."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","jane"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[3,4],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["send","it","to","john","sorry","jane"],"similarity":"0.5769230769230769","wordRatio":"0.6666666666666666"},"placeholders":[],"policy":{"correctionCues":[]},"raw":"send it to john sorry jane","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"john"},{"word":"sorry"},{"endsSentence":true,"word":"jane"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jane"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"count":2,"description":"dropped 2 words that carry meaning","reason":"droppedContent"}},"light":{"rejected":{"count":2,"description":"dropped 2 spoken words","reason":"droppedWords"}},"medium":{"rejected":{"count":2,"description":"dropped 2 spoken words","reason":"droppedWords"}},"none":{"rejected":{"count":2,"description":"dropped 2 spoken words","reason":"droppedWords"}}}} {"deepMultiline":{"accepted":"The large dog."},"outcome":{"completed":"The large dog."},"parts":{"cleanedCues":0,"cleanedWords":["the","large","dog"],"droppedContent":1,"gaps":[{"deleted":[1],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,1,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","rather","large","dog"],"similarity":"0.65","wordRatio":"0.75"},"placeholders":[],"raw":"the rather large dog","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"the"},{"isCue":true,"word":"rather"},{"word":"large"},{"endsSentence":true,"word":"dog"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"large"},{"word":"dog"}]},"verdicts":{"deep":{"accepted":"The large dog."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Nowhere where."},"parts":{"cleanedCues":0,"cleanedWords":["nowhere","where"],"droppedContent":1,"gaps":[{"deleted":[1],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,1],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["nowhere","no","where"],"similarity":"0.8125","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"nowhere no where","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"nowhere"},{"isCue":true,"word":"no"},{"endsSentence":true,"word":"where"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"nowhere"},{"word":"where"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"I wanted to say it to Jo."},"outcome":{"completed":"I wanted to say it to Jo."},"parts":{"cleanedCues":0,"cleanedWords":["i","wanted","to","say","it","to","jo"],"droppedContent":0,"gaps":[{"deleted":[4],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i","wanted","to","say","sorry","to","jo"],"similarity":"0.8148148148148149","wordRatio":"1.0"},"placeholders":[],"raw":"i wanted to say sorry to jo","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"i"},{"opensPhrase":2,"spare":["wanted"],"word":"to"},{"word":"jo"},{"word":"to"},{"word":"say"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"wanted"},{"word":"to"},{"word":"say"},{"isCue":true,"word":"sorry"},{"word":"to"},{"endsSentence":true,"word":"jo"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"wanted"},{"word":"to"},{"word":"say"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jo"}]},"verdicts":{"deep":{"accepted":"I wanted to say it to Jo."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I wanted to say it to Jo."},"parts":{"cleanedCues":0,"cleanedWords":["i","wanted","to","say","it","to","jo"],"droppedContent":0,"gaps":[{"deleted":[4],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i","wanted","to","say","sorry","to","jo"],"similarity":"0.8148148148148149","wordRatio":"1.0"},"placeholders":[],"raw":"i wanted to say sorry to jo","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i"},{"opensPhrase":2,"spare":["wanted"],"word":"to"},{"word":"jo"},{"word":"to"},{"word":"say"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"wanted"},{"word":"to"},{"word":"say"},{"isCue":true,"word":"sorry"},{"word":"to"},{"endsSentence":true,"word":"jo"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"wanted"},{"word":"to"},{"word":"say"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jo"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"outcome":{"completed":"Send ⟦S1⟧."},"parts":{"cleanedCues":0,"cleanedWords":["send","s1"],"droppedContent":0,"gaps":[],"isCorrection":true,"keepsPlaceholders":false,"losesNegation":false,"matches":[0,1],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["send","s1"],"similarity":"1.0","wordRatio":"1.0"},"placeholders":["⟦S1⟧",""],"raw":"send ⟦S1⟧","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"send"},{"endsSentence":true,"isCapitalised":true,"word":"s1"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"isCapitalised":true,"word":"s1"}]},"verdicts":{"deep":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"high":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"light":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"medium":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"none":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}}}} {"deepMultiline":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"outcome":{"completed":"Send ⟦S1⟧⟦S1⟧."},"parts":{"cleanedCues":0,"cleanedWords":["send","s1s1"],"droppedContent":0,"gaps":[{"deleted":[1],"inserted":[1]}],"isCorrection":false,"keepsPlaceholders":false,"losesNegation":false,"matches":[0,null],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["send","s1"],"similarity":"0.7777777777777778","wordRatio":"1.0"},"placeholders":["⟦S1⟧"],"raw":"send ⟦S1⟧","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"send"},{"endsSentence":true,"isCapitalised":true,"word":"s1"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"isCapitalised":true,"word":"s1s1"}]},"verdicts":{"deep":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"high":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"light":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"medium":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}},"none":{"rejected":{"description":"changed a placeholder","reason":"placeholderChanged"}}}} {"deepMultiline":{"accepted":"Send ⟦S1⟧ and ⟦S12⟧."},"outcome":{"completed":"Send ⟦S1⟧ and ⟦S12⟧."},"parts":{"cleanedCues":0,"cleanedWords":["send","s1","and","s12"],"droppedContent":0,"gaps":[],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["send","s1","and","s12"],"similarity":"1.0","wordRatio":"1.0"},"placeholders":["⟦S1⟧","⟦S12⟧"],"raw":"send ⟦S1⟧ and ⟦S12⟧","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"send"},{"isCapitalised":true,"word":"s1"},{"word":"and"},{"endsSentence":true,"isCapitalised":true,"word":"s12"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"isCapitalised":true,"word":"s1"},{"word":"and"},{"isCapitalised":true,"word":"s12"}]},"verdicts":{"deep":{"accepted":"Send ⟦S1⟧ and ⟦S12⟧."},"high":{"accepted":"Send ⟦S1⟧ and ⟦S12⟧."},"light":{"accepted":"Send ⟦S1⟧ and ⟦S12⟧."},"medium":{"accepted":"Send ⟦S1⟧ and ⟦S12⟧."},"none":{"accepted":"Send ⟦S1⟧ and ⟦S12⟧."}}} @@ -495,23 +495,23 @@ {"deepMultiline":{"accepted":"Send the invoice to Priya."},"outcome":{"completed":"Send the invoice to Priya."},"parts":{"cleanedCues":0,"cleanedWords":["send","the","invoice","to","priya"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,null,null,null,4],"movesOrDropsName":true,"names":[4,7],"rawCues":2,"rawWords":["send","the","invoice","to","sarah","no","wait","priya"],"similarity":"0.641025641025641","wordRatio":"0.625"},"placeholders":[],"raw":"Send the invoice to Sarah. No wait, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send"],"word":"priya"},{"word":"the"},{"word":"invoice"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sarah"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["send","the","invoice","to","sarah"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invoice"],"word":"priya"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sarah"}],[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"the"},{"word":"invoice"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sarah"],"word":"priya"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"send"},{"word":"the"},{"word":"invoice"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sarah"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"the"},{"word":"invoice"},{"word":"to"},{"isCapitalised":true,"word":"priya"}]},"verdicts":{"deep":{"accepted":"Send the invoice to Priya."},"high":{"accepted":"Send the invoice to Priya."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Send the invoice to Priya."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"We need four servers."},"outcome":{"completed":"We need four servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four","servers"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[2,3,4,5,6],"inserted":[]},{"deleted":[],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,null,2],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["we","need","three","servers","sorry","i","mean","four"],"similarity":"0.41025641025641024","wordRatio":"0.5"},"placeholders":[],"raw":"We need three servers. Sorry, I mean four.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["need"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"three"},{"endsSentence":true,"word":"servers"},{"endsSentence":true,"word":"four"}],[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["servers"],"word":"i"},{"endsSentence":true,"isCue":true,"word":"mean"},{"endsSentence":true,"word":"four"}],[{"startsSentence":true,"word":"we"},{"word":"need"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["three"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"four"},{"endsSentence":true,"word":"servers"}],[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"endsSentence":true,"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"endsSentence":true,"word":"servers"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"},{"word":"servers"}]},"verdicts":{"deep":{"accepted":"We need four servers."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Peter will cover my shift."},"outcome":{"completed":"Peter will cover my shift."},"parts":{"cleanedCues":0,"cleanedWords":["peter","will","cover","my","shift"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[0],"inserted":[0]},{"deleted":[5,6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,1,2,3,4,null,null,null],"movesOrDropsName":true,"names":[7],"rawCues":1,"rawWords":["chloe","will","cover","my","shift","i","mean","peter"],"similarity":"0.5263157894736843","wordRatio":"0.625"},"placeholders":[],"raw":"Chloe will cover my shift. I mean, Peter.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["chloe"],"word":"peter"},{"word":"will"},{"word":"cover"},{"word":"my"},{"endsSentence":true,"word":"shift"}],[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"will"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["cover"],"word":"peter"},{"word":"my"},{"endsSentence":true,"word":"shift"}],[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"will"},{"word":"cover"},{"word":"my"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["shift"],"word":"peter"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"will"},{"word":"cover"},{"word":"my"},{"endsSentence":true,"word":"shift"},{"isCue":true,"startsSentence":true,"word":"i"},{"isCue":true,"word":"mean"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"peter"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"peter"},{"word":"will"},{"word":"cover"},{"word":"my"},{"word":"shift"}]},"verdicts":{"deep":{"accepted":"Peter will cover my shift."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"Can you call me back at quarter past nine?"},"outcome":{"completed":"Can you call me back at quarter past nine?"},"parts":{"cleanedCues":0,"cleanedWords":["can","you","call","me","back","at","quarter","past","nine"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[6,7,8,9,10],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,null,null,null,null,null,6,7,8],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["can","you","call","me","back","at","eleven","am","no","sorry","at","quarter","past","nine"],"similarity":"0.6507936507936508","wordRatio":"0.6428571428571429"},"placeholders":[],"raw":"Can you call me back at eleven am? No, sorry, at quarter past nine.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":2,"spare":["eleven"],"word":"at"},{"word":"quarter"},{"endsQuestion":true,"endsSentence":true,"word":"am"},{"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":2,"spare":["eleven","am"],"word":"at"},{"endsQuestion":true,"endsSentence":true,"word":"quarter"},{"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"eleven"},{"opensPhrase":2,"spare":["am"],"word":"at"},{"endsQuestion":true,"endsSentence":true,"word":"quarter"},{"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":3,"spare":["eleven"],"word":"at"},{"word":"quarter"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"am"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":3,"spare":["eleven","am"],"word":"at"},{"word":"quarter"},{"endsQuestion":true,"endsSentence":true,"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"eleven"},{"opensPhrase":3,"spare":["am"],"word":"at"},{"word":"quarter"},{"endsQuestion":true,"endsSentence":true,"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":4,"spare":["eleven"],"word":"at"},{"word":"quarter"},{"word":"past"},{"word":"nine"},{"endsQuestion":true,"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":4,"spare":["eleven","am"],"word":"at"},{"word":"quarter"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"eleven"},{"opensPhrase":4,"spare":["am"],"word":"at"},{"word":"quarter"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"nine"}]],"said":[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"eleven"},{"endsQuestion":true,"endsSentence":true,"word":"am"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"word":"at"},{"word":"quarter"},{"word":"past"},{"endsSentence":true,"word":"nine"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"quarter"},{"word":"past"},{"word":"nine"}]},"verdicts":{"deep":{"accepted":"Can you call me back at quarter past nine?"},"high":{"accepted":"Can you call me back at quarter past nine?"},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Can you call me back at quarter past nine?"},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Can you call me back at quarter past nine?"},"outcome":{"completed":"Can you call me back at quarter past nine?"},"parts":{"cleanedCues":0,"cleanedWords":["can","you","call","me","back","at","quarter","past","nine"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[6,7,8,9,10],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,null,null,null,null,null,6,7,8],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["can","you","call","me","back","at","eleven","am","no","sorry","at","quarter","past","nine"],"similarity":"0.6507936507936508","wordRatio":"0.6428571428571429"},"placeholders":[],"raw":"Can you call me back at eleven am? No, sorry, at quarter past nine.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":2,"spare":["eleven"],"word":"at"},{"word":"quarter"},{"endsQuestion":true,"endsSentence":true,"word":"am"},{"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":2,"spare":["eleven","am"],"word":"at"},{"endsQuestion":true,"endsSentence":true,"word":"quarter"},{"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":3,"spare":["eleven"],"word":"at"},{"word":"quarter"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"am"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":3,"spare":["eleven","am"],"word":"at"},{"word":"quarter"},{"endsQuestion":true,"endsSentence":true,"word":"past"},{"endsSentence":true,"word":"nine"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":4,"spare":["eleven"],"word":"at"},{"word":"quarter"},{"word":"past"},{"word":"nine"},{"endsQuestion":true,"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":4,"spare":["eleven","am"],"word":"at"},{"word":"quarter"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"nine"}]],"said":[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"eleven"},{"endsQuestion":true,"endsSentence":true,"word":"am"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"word":"at"},{"word":"quarter"},{"word":"past"},{"endsSentence":true,"word":"nine"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"quarter"},{"word":"past"},{"word":"nine"}]},"verdicts":{"deep":{"accepted":"Can you call me back at quarter past nine?"},"high":{"accepted":"Can you call me back at quarter past nine?"},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Can you call me back at quarter past nine?"},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Our lease renews in March."},"outcome":{"completed":"Our lease renews in March."},"parts":{"cleanedCues":0,"cleanedWords":["our","lease","renews","in","march"],"droppedContent":1,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4],"movesOrDropsName":false,"names":[8],"rawCues":1,"rawWords":["our","lease","renews","in","may","or","rather","in","march"],"similarity":"0.5952380952380952","wordRatio":"0.5555555555555556"},"placeholders":[],"raw":"Our lease renews in May. Or rather, in March.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"our"},{"word":"lease"},{"word":"renews"},{"word":"in"},{"opensPhrase":2,"spare":["may"],"word":"in"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"march"}]],"said":[{"startsSentence":true,"word":"our"},{"word":"lease"},{"word":"renews"},{"word":"in"},{"endsSentence":true,"isCapitalised":true,"word":"may"},{"isCue":true,"startsSentence":true,"word":"or"},{"isCue":true,"word":"rather"},{"word":"in"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"march"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"our"},{"word":"lease"},{"word":"renews"},{"word":"in"},{"isCapitalised":true,"word":"march"}]},"verdicts":{"deep":{"accepted":"Our lease renews in March."},"high":{"accepted":"Our lease renews in March."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Our lease renews in March."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Can you call me back at four pm?"},"outcome":{"completed":"Can you call me back at four pm?"},"parts":{"cleanedCues":0,"cleanedWords":["can","you","call","me","back","at","four","pm"],"droppedContent":4,"droppedRun":4,"gaps":[{"deleted":[6,7,8,9],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,5,null,null,null,null,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["can","you","call","me","back","at","half","past","two","sorry","four","pm"],"similarity":"0.607843137254902","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Can you call me back at half past two? Sorry, four pm.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":1,"spare":["half"],"word":"four"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"two"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"endsQuestion":true,"endsSentence":true,"opensPhrase":1,"spare":["half","past","two"],"word":"four"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"half"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"opensPhrase":1,"spare":["two"],"word":"four"},{"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":2,"spare":["half"],"word":"four"},{"word":"pm"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"two"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"opensPhrase":2,"spare":["half","past","two"],"word":"four"},{"endsQuestion":true,"endsSentence":true,"word":"pm"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"half"},{"word":"past"},{"opensPhrase":2,"spare":["two"],"word":"four"},{"endsQuestion":true,"endsSentence":true,"word":"pm"}]],"said":[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"half"},{"word":"past"},{"endsQuestion":true,"endsSentence":true,"word":"two"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"four"},{"endsSentence":true,"word":"pm"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"can"},{"word":"you"},{"word":"call"},{"word":"me"},{"word":"back"},{"word":"at"},{"word":"four"},{"word":"pm"}]},"verdicts":{"deep":{"accepted":"Can you call me back at four pm?"},"high":{"accepted":"Can you call me back at four pm?"},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Can you call me back at four pm?"},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Let's meet at the cafe on Tuesday."},"outcome":{"completed":"Let's meet at the cafe on Tuesday."},"parts":{"cleanedCues":0,"cleanedWords":["let's","meet","at","the","cafe","on","tuesday"],"droppedContent":4,"droppedRun":7,"gaps":[{"deleted":[6,7,8,9,10,11,12],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,null,null,null,null,null,null,null,6],"movesOrDropsName":true,"names":[6,13],"rawCues":3,"rawWords":["let's","meet","at","the","cafe","on","monday","no","sorry","i","mean","the","on","tuesday"],"similarity":"0.5238095238095238","wordRatio":"0.5"},"placeholders":[],"raw":"Let's meet at the cafe on Monday. No, sorry, I mean the on Tuesday.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"let's"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["meet"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"the"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["cafe"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"the"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["meet"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["cafe"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["meet"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"on"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["cafe"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"on"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["monday"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"opensPhrase":3,"spare":["monday"],"word":"the"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}]],"said":[{"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"let's"},{"word":"meet"},{"word":"at"},{"word":"the"},{"word":"cafe"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"}]},"verdicts":{"deep":{"accepted":"Let's meet at the cafe on Tuesday."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"The deadline is the sixth of June."},"outcome":{"completed":"The deadline is the sixth of June."},"parts":{"cleanedCues":0,"cleanedWords":["the","deadline","is","the","sixth","of","june"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[4],"inserted":[4]},{"deleted":[7,8,9],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6,null,null,null],"movesOrDropsName":false,"names":[6],"rawCues":1,"rawWords":["the","deadline","is","the","fifth","of","june","actually","the","sixth"],"similarity":"0.5961538461538461","wordRatio":"0.7"},"placeholders":[],"raw":"The deadline is the fifth of June. Actually, the sixth.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"opensPhrase":2,"spare":["fifth"],"word":"the"},{"word":"sixth"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"june"}],[{"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"word":"fifth"},{"word":"of"},{"opensPhrase":2,"spare":["june"],"word":"the"},{"endsSentence":true,"word":"sixth"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"word":"fifth"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"june"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"word":"the"},{"endsSentence":true,"word":"sixth"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"word":"sixth"},{"word":"of"},{"isCapitalised":true,"word":"june"}]},"verdicts":{"deep":{"accepted":"The deadline is the sixth of June."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The deadline is the sixth of June."},"outcome":{"completed":"The deadline is the sixth of June."},"parts":{"cleanedCues":0,"cleanedWords":["the","deadline","is","the","sixth","of","june"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[4],"inserted":[4]},{"deleted":[7,8,9],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6,null,null,null],"movesOrDropsName":false,"names":[6],"rawCues":1,"rawWords":["the","deadline","is","the","fifth","of","june","actually","the","sixth"],"similarity":"0.5961538461538461","wordRatio":"0.7"},"placeholders":[],"raw":"The deadline is the fifth of June. Actually, the sixth.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"opensPhrase":2,"spare":["fifth"],"word":"the"},{"word":"sixth"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"june"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"word":"fifth"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"june"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"word":"the"},{"endsSentence":true,"word":"sixth"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"deadline"},{"word":"is"},{"word":"the"},{"word":"sixth"},{"word":"of"},{"isCapitalised":true,"word":"june"}]},"verdicts":{"deep":{"accepted":"The deadline is the sixth of June."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Can you pick up the kids at four?"},"outcome":{"completed":"Can you pick up the kids at four?"},"parts":{"cleanedCues":0,"cleanedWords":["can","you","pick","up","the","kids","at","four"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[7,8,9],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,5,6,null,null,null,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["can","you","pick","up","the","kids","at","three","sorry","at","four"],"similarity":"0.6808510638297872","wordRatio":"0.7272727272727273"},"placeholders":[],"raw":"Can you pick up the kids at three? Sorry, at four.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"pick"},{"word":"up"},{"word":"the"},{"word":"kids"},{"word":"at"},{"opensPhrase":2,"spare":["three"],"word":"at"},{"endsQuestion":true,"endsSentence":true,"word":"four"}]],"said":[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"pick"},{"word":"up"},{"word":"the"},{"word":"kids"},{"word":"at"},{"endsQuestion":true,"endsSentence":true,"word":"three"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"at"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"can"},{"word":"you"},{"word":"pick"},{"word":"up"},{"word":"the"},{"word":"kids"},{"word":"at"},{"word":"four"}]},"verdicts":{"deep":{"accepted":"Can you pick up the kids at four?"},"high":{"accepted":"Can you pick up the kids at four?"},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Can you pick up the kids at four?"},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"The budget is sixty thousand dollars."},"outcome":{"completed":"The budget is sixty thousand dollars."},"parts":{"cleanedCues":0,"cleanedWords":["the","budget","is","sixty","thousand","dollars"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[3,4,5,6,7],"inserted":[]},{"deleted":[],"inserted":[5]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,null,null,3,4],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["the","budget","is","fifty","thousand","dollars","no","sorry","sixty","thousand"],"similarity":"0.5666666666666667","wordRatio":"0.6"},"placeholders":[],"raw":"The budget is fifty thousand dollars. No, sorry, sixty thousand.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":1,"spare":["fifty"],"word":"sixty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"},{"endsSentence":true,"word":"thousand"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":1,"spare":["fifty","thousand"],"word":"sixty"},{"endsSentence":true,"word":"dollars"},{"endsSentence":true,"word":"thousand"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"fifty"},{"opensPhrase":1,"spare":["thousand"],"word":"sixty"},{"endsSentence":true,"word":"dollars"},{"endsSentence":true,"word":"thousand"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":2,"spare":["fifty"],"word":"sixty"},{"word":"thousand"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":2,"spare":["fifty","thousand"],"word":"sixty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"fifty"},{"opensPhrase":2,"spare":["thousand"],"word":"sixty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"fifty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"word":"sixty"},{"endsSentence":true,"word":"thousand"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"sixty"},{"word":"thousand"},{"word":"dollars"}]},"verdicts":{"deep":{"accepted":"The budget is sixty thousand dollars."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The budget is sixty thousand dollars."},"outcome":{"completed":"The budget is sixty thousand dollars."},"parts":{"cleanedCues":0,"cleanedWords":["the","budget","is","sixty","thousand","dollars"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[3,4,5,6,7],"inserted":[]},{"deleted":[],"inserted":[5]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,null,null,3,4],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["the","budget","is","fifty","thousand","dollars","no","sorry","sixty","thousand"],"similarity":"0.5666666666666667","wordRatio":"0.6"},"placeholders":[],"raw":"The budget is fifty thousand dollars. No, sorry, sixty thousand.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":1,"spare":["fifty"],"word":"sixty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"},{"endsSentence":true,"word":"thousand"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":1,"spare":["fifty","thousand"],"word":"sixty"},{"endsSentence":true,"word":"dollars"},{"endsSentence":true,"word":"thousand"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"fifty"},{"opensPhrase":1,"spare":["thousand"],"word":"sixty"},{"endsSentence":true,"word":"dollars"},{"endsSentence":true,"word":"thousand"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":2,"spare":["fifty"],"word":"sixty"},{"word":"thousand"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"opensPhrase":2,"spare":["fifty","thousand"],"word":"sixty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"fifty"},{"word":"thousand"},{"endsSentence":true,"word":"dollars"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"word":"sixty"},{"endsSentence":true,"word":"thousand"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"budget"},{"word":"is"},{"word":"sixty"},{"word":"thousand"},{"word":"dollars"}]},"verdicts":{"deep":{"accepted":"The budget is sixty thousand dollars."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"We're flying out the week after next."},"outcome":{"completed":"We're flying out the week after next."},"parts":{"cleanedCues":0,"cleanedWords":["we're","flying","out","the","week","after","next"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]},{"deleted":[],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,null,3,5,6],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["we're","flying","out","next","week","sorry","no","the","after","next"],"similarity":"0.6599999999999999","wordRatio":"0.7"},"placeholders":[],"raw":"We're flying out next week. Sorry, no, the after next.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"opensPhrase":2,"spare":["next"],"word":"the"},{"word":"after"},{"endsSentence":true,"word":"week"},{"endsSentence":true,"word":"next"}],[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"opensPhrase":2,"spare":["next","week"],"word":"the"},{"endsSentence":true,"word":"after"},{"endsSentence":true,"word":"next"}],[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"word":"next"},{"opensPhrase":2,"spare":["week"],"word":"the"},{"endsSentence":true,"word":"after"},{"endsSentence":true,"word":"next"}],[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"opensPhrase":3,"spare":["next"],"word":"the"},{"word":"after"},{"word":"next"},{"endsSentence":true,"word":"week"}],[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"opensPhrase":3,"spare":["next","week"],"word":"the"},{"word":"after"},{"endsSentence":true,"word":"next"}],[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"word":"next"},{"opensPhrase":3,"spare":["week"],"word":"the"},{"word":"after"},{"endsSentence":true,"word":"next"}]],"said":[{"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"word":"next"},{"endsSentence":true,"word":"week"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCue":true,"word":"no"},{"word":"the"},{"word":"after"},{"endsSentence":true,"word":"next"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we're"},{"word":"flying"},{"word":"out"},{"word":"the"},{"word":"week"},{"word":"after"},{"word":"next"}]},"verdicts":{"deep":{"accepted":"We're flying out the week after next."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"The demo is on Wednesday at noon."},"outcome":{"completed":"The demo is on Wednesday at noon."},"parts":{"cleanedCues":0,"cleanedWords":["the","demo","is","on","wednesday","at","noon"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[4],"inserted":[4]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6,null,null],"movesOrDropsName":true,"names":[4,8],"rawCues":1,"rawWords":["the","demo","is","on","tuesday","at","noon","sorry","wednesday"],"similarity":"0.5652173913043479","wordRatio":"0.7777777777777778"},"placeholders":[],"raw":"The demo is on Tuesday at noon. Sorry, Wednesday.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"wednesday"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"},{"word":"at"},{"word":"noon"}]},"verdicts":{"deep":{"accepted":"The demo is on Wednesday at noon."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The demo is on Wednesday."},"parts":{"cleanedCues":0,"cleanedWords":["the","demo","is","on","wednesday"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4],"movesOrDropsName":true,"names":[4,8],"rawCues":1,"rawWords":["the","demo","is","on","tuesday","at","noon","sorry","wednesday"],"similarity":"0.5217391304347826","wordRatio":"0.5555555555555556"},"placeholders":[],"raw":"The demo is on Tuesday at noon. Sorry, Wednesday.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"wednesday"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"The demo is on Wednesday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The demo is on Wednesday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The demo is on Wednesday at noon."},"outcome":{"completed":"The demo is on Wednesday at noon."},"parts":{"cleanedCues":0,"cleanedWords":["the","demo","is","on","wednesday","at","noon"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[4],"inserted":[4]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6,null,null],"movesOrDropsName":true,"names":[4,8],"rawCues":1,"rawWords":["the","demo","is","on","tuesday","at","noon","sorry","wednesday"],"similarity":"0.5652173913043479","wordRatio":"0.7777777777777778"},"placeholders":[],"raw":"The demo is on Tuesday at noon. Sorry, Wednesday.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"},{"word":"at"},{"endsSentence":true,"word":"noon"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"},{"word":"at"},{"word":"noon"}]},"verdicts":{"deep":{"accepted":"The demo is on Wednesday at noon."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The demo is on Wednesday."},"parts":{"cleanedCues":0,"cleanedWords":["the","demo","is","on","wednesday"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4],"movesOrDropsName":true,"names":[4,8],"rawCues":1,"rawWords":["the","demo","is","on","tuesday","at","noon","sorry","wednesday"],"similarity":"0.5217391304347826","wordRatio":"0.5555555555555556"},"placeholders":[],"raw":"The demo is on Tuesday at noon. Sorry, Wednesday.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"},{"word":"at"},{"endsSentence":true,"word":"noon"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"The demo is on Wednesday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The demo is on Wednesday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"We need four servers for the launch."},"outcome":{"completed":"We need four servers for the launch."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four","servers","for","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[2],"inserted":[2]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,3,4,5,6,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","for","the","launch","sorry","four"],"similarity":"0.6595744680851063","wordRatio":"0.7777777777777778"},"placeholders":[],"raw":"We need three servers for the launch. Sorry, four.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"},{"word":"for"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"word":"for"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"},{"word":"servers"},{"word":"for"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"We need four servers for the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We need four."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four"],"droppedContent":4,"droppedRun":6,"gaps":[{"deleted":[2,3,4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,null,null,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","for","the","launch","sorry","four"],"similarity":"0.25531914893617025","wordRatio":"0.3333333333333333"},"placeholders":[],"raw":"We need three servers for the launch. Sorry, four.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"},{"word":"for"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"word":"for"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"We need four."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"We need four."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Karen is presenting at the all hands."},"outcome":{"completed":"Karen is presenting at the all hands."},"parts":{"cleanedCues":0,"cleanedWords":["karen","is","presenting","at","the","all","hands"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[0],"inserted":[0]},{"deleted":[7,8,9],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[null,1,2,3,4,5,6,null,null,null],"movesOrDropsName":true,"names":[9],"rawCues":2,"rawWords":["chloe","is","presenting","at","the","all","hands","sorry","no","karen"],"similarity":"0.607843137254902","wordRatio":"0.7"},"placeholders":[],"raw":"Chloe is presenting at the all hands. Sorry, no, Karen.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["chloe"],"word":"karen"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"word":"hands"}],[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"is"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["presenting"],"word":"karen"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"word":"hands"}],[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["hands"],"word":"karen"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"word":"hands"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCue":true,"word":"no"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"karen"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"karen"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"word":"hands"}]},"verdicts":{"deep":{"accepted":"Karen is presenting at the all hands."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Karen is presenting."},"parts":{"cleanedCues":0,"cleanedWords":["karen","is","presenting"],"droppedContent":4,"droppedRun":7,"gaps":[{"deleted":[0],"inserted":[0]},{"deleted":[3,4,5,6,7,8,9],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[null,1,2,null,null,null,null,null,null,null],"movesOrDropsName":true,"names":[9],"rawCues":2,"rawWords":["chloe","is","presenting","at","the","all","hands","sorry","no","karen"],"similarity":"0.27450980392156865","wordRatio":"0.3"},"placeholders":[],"raw":"Chloe is presenting at the all hands. Sorry, no, Karen.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["chloe"],"word":"karen"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"word":"hands"}],[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"is"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["presenting"],"word":"karen"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"word":"hands"}],[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["hands"],"word":"karen"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"chloe"},{"word":"is"},{"word":"presenting"},{"word":"at"},{"word":"the"},{"word":"all"},{"endsSentence":true,"word":"hands"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCue":true,"word":"no"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"karen"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"karen"},{"word":"is"},{"word":"presenting"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Meet me at the Town Hall."},"outcome":{"completed":"Meet me at the Town Hall."},"parts":{"cleanedCues":0,"cleanedWords":["meet","me","at","the","town","hall"],"droppedContent":5,"droppedRun":5,"gaps":[{"deleted":[4],"inserted":[]},{"deleted":[7,8,9,10,11],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,null,4,5,null,null,null,null,null],"movesOrDropsName":true,"names":[4,5,6,10,11],"rawCues":2,"rawWords":["meet","me","at","the","old","town","hall","actually","no","the","town","hall"],"similarity":"0.4444444444444444","wordRatio":"0.5"},"placeholders":[],"raw":"Meet me at the Old Town Hall. Actually no, the Town Hall.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["meet"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":2,"spare":["meet","me","at","the","old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":2,"spare":["meet","me","at","the","old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["old","town","hall"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":2,"spare":["town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":2,"spare":["town","hall"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"opensPhrase":2,"spare":["hall"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":3,"spare":["meet"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":3,"spare":["meet","me","at","the","old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":3,"spare":["meet","me","at","the","old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["old","town","hall"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":3,"spare":["town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":3,"spare":["town","hall"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"opensPhrase":3,"spare":["hall"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"isCue":true,"word":"no"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"word":"town"},{"isCapitalised":true,"word":"hall"}]},"verdicts":{"deep":{"accepted":"Meet me at the Town Hall."},"high":{"accepted":"Meet me at the Town Hall."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Meet me at the Town Hall."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Meet me at the Old Town Hall."},"parts":{"cleanedCues":0,"cleanedWords":["meet","me","at","the","old","town","hall"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[7,8,9,10,11],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,6,null,null,null,null,null],"movesOrDropsName":true,"names":[4,5,6,10,11],"rawCues":2,"rawWords":["meet","me","at","the","old","town","hall","actually","no","the","town","hall"],"similarity":"0.5185185185185186","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"Meet me at the Old Town Hall. Actually no, the Town Hall.","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["meet"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":2,"spare":["meet","me","at","the","old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":2,"spare":["meet","me","at","the","old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["old","town","hall"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":2,"spare":["town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":2,"spare":["town","hall"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"opensPhrase":2,"spare":["hall"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":3,"spare":["meet"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":3,"spare":["meet","me","at","the","old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"opensPhrase":3,"spare":["meet","me","at","the","old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["old"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["old","town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["old","town","hall"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":3,"spare":["town"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"opensPhrase":3,"spare":["town","hall"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"opensPhrase":3,"spare":["hall"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"old"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"isCue":true,"word":"no"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"town"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"hall"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"isCapitalised":true,"word":"old"},{"isCapitalised":true,"word":"town"},{"isCapitalised":true,"word":"hall"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The parcel goes to the Melbourne office."},"parts":{"cleanedCues":0,"cleanedWords":["the","parcel","goes","to","the","melbourne","office"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[7,8,9,10,11],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,6,null,null,null,null,null],"movesOrDropsName":true,"names":[5,10],"rawCues":2,"rawWords":["the","parcel","goes","to","the","melbourne","office","sorry","no","the","sydney","office"],"similarity":"0.5909090909090908","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"The parcel goes to the Melbourne office. Sorry, no, the Sydney office.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["parcel"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"endsSentence":true,"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"opensPhrase":2,"spare":["goes"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"endsSentence":true,"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"opensPhrase":2,"spare":["melbourne"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"opensPhrase":2,"spare":["office"],"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"opensPhrase":3,"spare":["melbourne"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"opensPhrase":3,"spare":["melbourne","office"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"opensPhrase":3,"spare":["office"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"endsSentence":true,"word":"office"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCue":true,"word":"no"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"word":"melbourne"},{"word":"office"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The parcel goes to the Melbourne office."},"parts":{"cleanedCues":0,"cleanedWords":["the","parcel","goes","to","the","melbourne","office"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[7,8,9,10,11],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,6,null,null,null,null,null],"movesOrDropsName":true,"names":[5,10],"rawCues":2,"rawWords":["the","parcel","goes","to","the","melbourne","office","sorry","no","the","sydney","office"],"similarity":"0.5909090909090908","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"The parcel goes to the Melbourne office. Sorry, no, the Sydney office.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["parcel"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"endsSentence":true,"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"opensPhrase":2,"spare":["goes"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"endsSentence":true,"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"opensPhrase":2,"spare":["melbourne"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"opensPhrase":3,"spare":["melbourne"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"word":"office"},{"endsSentence":true,"word":"office"}],[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"opensPhrase":3,"spare":["melbourne","office"],"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"melbourne"},{"endsSentence":true,"word":"office"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCue":true,"word":"no"},{"word":"the"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sydney"},{"endsSentence":true,"word":"office"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"parcel"},{"word":"goes"},{"word":"to"},{"word":"the"},{"isCapitalised":true,"word":"melbourne"},{"word":"office"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"I'm not free on Wednesday."},"outcome":{"completed":"I'm not free on Wednesday."},"parts":{"cleanedCues":0,"cleanedWords":["i'm","not","free","on","wednesday"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,4],"movesOrDropsName":true,"names":[4,6],"rawCues":1,"rawWords":["i'm","not","free","on","tuesday","sorry","wednesday"],"similarity":"0.641025641025641","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"I'm not free on Tuesday. Sorry, Wednesday.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"}]],"said":[{"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"}]},"verdicts":{"deep":{"accepted":"I'm not free on Wednesday."},"high":{"accepted":"I'm not free on Wednesday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"I'm not free on Wednesday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I'm free on Wednesday."},"parts":{"cleanedCues":0,"cleanedWords":["i'm","free","on","wednesday"],"droppedContent":3,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[]},{"deleted":[4,5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,1,2,null,null,3],"movesOrDropsName":true,"names":[4,6],"rawCues":1,"rawWords":["i'm","not","free","on","tuesday","sorry","wednesday"],"similarity":"0.5384615384615384","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"I'm not free on Tuesday. Sorry, Wednesday.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"}]],"said":[{"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'm"},{"word":"free"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We need four."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[2,3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,null,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","at","noon","sorry","four"],"similarity":"0.30000000000000004","wordRatio":"0.375"},"placeholders":[],"raw":"we need three servers at noon sorry four","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"},{"word":"at"},{"word":"noon"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"word":"at"},{"word":"noon"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"We need four."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"We need four."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} @@ -544,7 +544,7 @@ {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Words like Docker, not Kubernetes, never come out right."},"parts":{"cleanedCues":0,"cleanedWords":["words","like","docker","not","kubernetes","never","come","out","right"],"droppedContent":2,"gaps":[{"deleted":[3],"inserted":[]},{"deleted":[5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,3,null,4,5,6,7,8],"movesOrDropsName":true,"names":[2,5,6],"rawCues":1,"rawWords":["words","like","docker","sorry","not","docker","kubernetes","never","come","out","right"],"similarity":"0.803030303030303","wordRatio":"0.8181818181818182"},"placeholders":[],"raw":"Words like Docker, sorry, not Docker, Kubernetes never come out right.","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["words"],"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"word":"like"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"kubernetes"},{"word":"never"},{"word":"come"},{"word":"out"},{"endsSentence":true,"word":"right"}],[{"opensPhrase":3,"spare":["words"],"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"kubernetes"},{"word":"like"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"word":"never"},{"word":"come"},{"word":"out"},{"endsSentence":true,"word":"right"}],[{"opensPhrase":4,"spare":["words"],"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"kubernetes"},{"word":"never"},{"word":"like"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"word":"come"},{"word":"out"},{"endsSentence":true,"word":"right"}],[{"opensPhrase":5,"spare":["words"],"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"kubernetes"},{"word":"never"},{"word":"come"},{"word":"like"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"word":"out"},{"endsSentence":true,"word":"right"}],[{"opensPhrase":6,"spare":["words"],"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"kubernetes"},{"word":"never"},{"word":"come"},{"word":"out"},{"word":"like"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"endsSentence":true,"word":"right"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"words"},{"word":"like"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCue":true,"word":"sorry"},{"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"docker"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"kubernetes"},{"word":"never"},{"word":"come"},{"word":"out"},{"endsSentence":true,"word":"right"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"words"},{"word":"like"},{"isCapitalised":true,"word":"docker"},{"word":"not"},{"isCapitalised":true,"word":"kubernetes"},{"word":"never"},{"word":"come"},{"word":"out"},{"word":"right"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Is the demo on Thursday?"},"parts":{"cleanedCues":0,"cleanedWords":["is","the","demo","on","thursday"],"droppedContent":4,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,null,null,null,null,4],"movesOrDropsName":true,"names":[4,7,8],"rawCues":1,"rawWords":["is","the","demo","on","tuesday","no","not","tuesday","thursday"],"similarity":"0.5","wordRatio":"0.5555555555555556"},"placeholders":[],"raw":"Is the demo on Tuesday? No, not Tuesday, Thursday.","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"is"},{"word":"the"},{"word":"demo"},{"word":"on"},{"endsQuestion":true,"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"word":"not"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"is"},{"word":"the"},{"word":"demo"},{"word":"on"},{"isCapitalised":true,"word":"thursday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Is the demo on Thursday?"},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Is the demo on Thursday?"},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"I'll fix the tap myself this weekend."},"outcome":{"completed":"I'll fix the tap myself this weekend."},"parts":{"cleanedCues":0,"cleanedWords":["i'll","fix","the","tap","myself","this","weekend"],"droppedContent":4,"droppedRun":7,"gaps":[{"deleted":[1,2,3,4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,null,null,null,null,null,null,1,2,3,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i'll","call","the","plumber","tomorrow","scratch","that","i'll","fix","the","tap","myself","this","weekend"],"similarity":"0.44999999999999996","wordRatio":"0.5"},"placeholders":[],"raw":"I'll call the plumber tomorrow. Scratch that, I'll fix the tap myself this weekend.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"i'll"},{"isCapitalised":true,"opensPhrase":2,"spare":["call"],"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"plumber"},{"endsSentence":true,"word":"tomorrow"},{"word":"the"},{"word":"tap"},{"word":"myself"},{"word":"this"},{"endsSentence":true,"word":"weekend"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"isCapitalised":true,"opensPhrase":2,"spare":["plumber"],"word":"i'll"},{"word":"fix"},{"endsSentence":true,"word":"tomorrow"},{"word":"the"},{"word":"tap"},{"word":"myself"},{"word":"this"},{"endsSentence":true,"word":"weekend"}],[{"startsSentence":true,"word":"i'll"},{"isCapitalised":true,"opensPhrase":3,"spare":["call"],"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"the"},{"word":"plumber"},{"endsSentence":true,"word":"tomorrow"},{"word":"tap"},{"word":"myself"},{"word":"this"},{"endsSentence":true,"word":"weekend"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"isCapitalised":true,"opensPhrase":3,"spare":["plumber"],"word":"i'll"},{"word":"fix"},{"word":"the"},{"endsSentence":true,"word":"tomorrow"},{"word":"tap"},{"word":"myself"},{"word":"this"},{"endsSentence":true,"word":"weekend"}]],"said":[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"word":"plumber"},{"endsSentence":true,"word":"tomorrow"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"isCue":true,"word":"that"},{"isCapitalised":true,"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"tap"},{"word":"myself"},{"word":"this"},{"endsSentence":true,"word":"weekend"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"tap"},{"word":"myself"},{"word":"this"},{"word":"weekend"}]},"verdicts":{"deep":{"accepted":"I'll fix the tap myself this weekend."},"high":{"accepted":"I'll fix the tap myself this weekend."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"I'll fix the tap myself this weekend."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"Okay, build the emergency fund first."},"outcome":{"completed":"Okay, build the emergency fund first."},"parts":{"cleanedCues":0,"cleanedWords":["okay","build","the","emergency","fund","first"],"droppedContent":5,"droppedRun":8,"gaps":[{"deleted":[1,2,3,4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,null,null,null,null,null,null,null,1,2,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["okay","pay","off","the","credit","card","first","scratch","that","build","the","emergency","fund","first"],"similarity":"0.4487179487179487","wordRatio":"0.42857142857142855"},"placeholders":[],"raw":"Okay, pay off the credit card first. Scratch that, build the emergency fund first.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"okay"},{"opensPhrase":1,"spare":["pay"],"word":"build"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"opensPhrase":1,"spare":["credit"],"word":"build"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"opensPhrase":1,"spare":["card"],"word":"build"},{"endsSentence":true,"word":"first"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"opensPhrase":2,"spare":["pay"],"word":"build"},{"word":"the"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"opensPhrase":2,"spare":["credit"],"word":"build"},{"word":"the"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"opensPhrase":2,"spare":["card"],"word":"build"},{"word":"the"},{"endsSentence":true,"word":"first"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"opensPhrase":5,"spare":["first"],"word":"build"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}]],"said":[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"endsSentence":true,"word":"first"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"build"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"okay"},{"word":"build"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"word":"first"}]},"verdicts":{"deep":{"accepted":"Okay, build the emergency fund first."},"high":{"accepted":"Okay, build the emergency fund first."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Okay, build the emergency fund first."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Okay, build the emergency fund first."},"outcome":{"completed":"Okay, build the emergency fund first."},"parts":{"cleanedCues":0,"cleanedWords":["okay","build","the","emergency","fund","first"],"droppedContent":5,"droppedRun":8,"gaps":[{"deleted":[1,2,3,4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,null,null,null,null,null,null,null,1,2,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["okay","pay","off","the","credit","card","first","scratch","that","build","the","emergency","fund","first"],"similarity":"0.4487179487179487","wordRatio":"0.42857142857142855"},"placeholders":[],"raw":"Okay, pay off the credit card first. Scratch that, build the emergency fund first.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"okay"},{"opensPhrase":1,"spare":["pay"],"word":"build"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"opensPhrase":1,"spare":["credit"],"word":"build"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"opensPhrase":1,"spare":["card"],"word":"build"},{"endsSentence":true,"word":"first"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"opensPhrase":2,"spare":["pay"],"word":"build"},{"word":"the"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"opensPhrase":2,"spare":["credit"],"word":"build"},{"word":"the"},{"word":"card"},{"endsSentence":true,"word":"first"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"opensPhrase":2,"spare":["card"],"word":"build"},{"word":"the"},{"endsSentence":true,"word":"first"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"opensPhrase":5,"spare":["card","first"],"word":"build"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}]],"said":[{"startsSentence":true,"word":"okay"},{"word":"pay"},{"word":"off"},{"word":"the"},{"word":"credit"},{"word":"card"},{"endsSentence":true,"word":"first"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"build"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"endsSentence":true,"word":"first"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"okay"},{"word":"build"},{"word":"the"},{"word":"emergency"},{"word":"fund"},{"word":"first"}]},"verdicts":{"deep":{"accepted":"Okay, build the emergency fund first."},"high":{"accepted":"Okay, build the emergency fund first."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Okay, build the emergency fund first."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Ship it to Prague. Hold it until June."},"parts":{"cleanedCues":0,"cleanedWords":["ship","it","to","prague","hold","it","until","june"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[4,5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,4,5,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["ship","it","to","prague","scratch","that","hold","it","until","june"],"similarity":"0.7346938775510203","wordRatio":"0.8"},"placeholders":[],"raw":"ship it to prague scratch that hold it until june","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"it"},{"word":"until"},{"endsSentence":true,"word":"june"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"until"},{"endsSentence":true,"word":"june"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"word":"prague"},{"endsSentence":true,"word":"june"}]],"said":[{"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"word":"prague"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"word":"june"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"prague"},{"isCapitalised":true,"startsSentence":true,"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"june"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Ship it to Prague. Parcel stays here."},"parts":{"cleanedCues":0,"cleanedWords":["ship","it","to","prague","parcel","stays","here"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[4,5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["ship","it","to","prague","sorry","the","parcel","stays","here"],"similarity":"0.7777777777777778","wordRatio":"0.7777777777777778"},"placeholders":[],"raw":"ship it to prague sorry the parcel stays here","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["ship"],"word":"the"},{"word":"parcel"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"stays"},{"endsSentence":true,"word":"here"}]],"said":[{"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"word":"prague"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"parcel"},{"word":"stays"},{"endsSentence":true,"word":"here"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"prague"},{"isCapitalised":true,"startsSentence":true,"word":"parcel"},{"word":"stays"},{"word":"here"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I'll call the plumber tomorrow. I'll fix the tap myself."},"parts":{"cleanedCues":0,"cleanedWords":["i'll","call","the","plumber","tomorrow","i'll","fix","the","tap","myself"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,null,null,5,6,7,8,9],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i'll","call","the","plumber","tomorrow","scratch","that","i'll","fix","the","tap","myself"],"similarity":"0.8059701492537313","wordRatio":"0.8333333333333334"},"placeholders":[],"raw":"I'll call the plumber tomorrow. Scratch that, I'll fix the tap myself.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i'll"},{"isCapitalised":true,"opensPhrase":2,"spare":["call"],"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"plumber"},{"endsSentence":true,"word":"tomorrow"},{"word":"the"},{"word":"tap"},{"endsSentence":true,"word":"myself"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"isCapitalised":true,"opensPhrase":2,"spare":["plumber"],"word":"i'll"},{"word":"fix"},{"endsSentence":true,"word":"tomorrow"},{"word":"the"},{"word":"tap"},{"endsSentence":true,"word":"myself"}],[{"startsSentence":true,"word":"i'll"},{"isCapitalised":true,"opensPhrase":3,"spare":["call"],"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"the"},{"word":"plumber"},{"endsSentence":true,"word":"tomorrow"},{"word":"tap"},{"endsSentence":true,"word":"myself"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"isCapitalised":true,"opensPhrase":3,"spare":["plumber"],"word":"i'll"},{"word":"fix"},{"word":"the"},{"endsSentence":true,"word":"tomorrow"},{"word":"tap"},{"endsSentence":true,"word":"myself"}]],"said":[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"word":"plumber"},{"endsSentence":true,"word":"tomorrow"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"isCue":true,"word":"that"},{"isCapitalised":true,"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"tap"},{"endsSentence":true,"word":"myself"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'll"},{"word":"call"},{"word":"the"},{"word":"plumber"},{"word":"tomorrow"},{"isCapitalised":true,"startsSentence":true,"word":"i'll"},{"word":"fix"},{"word":"the"},{"word":"tap"},{"word":"myself"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} @@ -788,13 +788,13 @@ {"deepMultiline":{"accepted":"It starts at three."},"outcome":{"completed":"It starts at three."},"parts":{"cleanedCues":0,"cleanedWords":["it","starts","at","three"],"droppedContent":4,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["it","starts","at","half","past","two","sorry","three"],"similarity":"0.4736842105263158","wordRatio":"0.5"},"placeholders":[],"raw":"It starts at half past two. Sorry, three.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"opensPhrase":1,"spare":["half"],"word":"three"},{"word":"past"},{"endsSentence":true,"word":"two"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["half","past","two"],"word":"three"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"half"},{"word":"past"},{"endsSentence":true,"opensPhrase":1,"spare":["two"],"word":"three"}]],"said":[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"half"},{"word":"past"},{"endsSentence":true,"word":"two"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"three"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"three"}]},"verdicts":{"deep":{"accepted":"It starts at three."},"high":{"accepted":"It starts at three."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"It starts at three."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"It starts at ten past five."},"outcome":{"completed":"It starts at ten past five."},"parts":{"cleanedCues":0,"cleanedWords":["it","starts","at","ten","past","five"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["it","starts","at","ten","to","five","sorry","ten","past","five"],"similarity":"0.5909090909090908","wordRatio":"0.6"},"placeholders":[],"raw":"It starts at ten to five. Sorry, ten past five.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"opensPhrase":1,"spare":["ten"],"word":"ten"},{"word":"to"},{"endsSentence":true,"word":"five"},{"word":"past"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["ten","to","five"],"word":"ten"},{"word":"past"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"ten"},{"word":"to"},{"endsSentence":true,"opensPhrase":1,"spare":["five"],"word":"ten"},{"word":"past"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"opensPhrase":2,"spare":["ten"],"word":"ten"},{"word":"past"},{"word":"to"},{"endsSentence":true,"word":"five"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"opensPhrase":2,"spare":["ten","to","five"],"word":"ten"},{"endsSentence":true,"word":"past"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"ten"},{"word":"to"},{"opensPhrase":2,"spare":["five"],"word":"ten"},{"endsSentence":true,"word":"past"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"opensPhrase":3,"spare":["ten"],"word":"ten"},{"word":"past"},{"word":"five"},{"word":"to"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"opensPhrase":3,"spare":["ten","to","five"],"word":"ten"},{"word":"past"},{"endsSentence":true,"word":"five"}],[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"ten"},{"word":"to"},{"opensPhrase":3,"spare":["five"],"word":"ten"},{"word":"past"},{"endsSentence":true,"word":"five"}]],"said":[{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"ten"},{"word":"to"},{"endsSentence":true,"word":"five"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"ten"},{"word":"past"},{"endsSentence":true,"word":"five"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"ten"},{"word":"past"},{"word":"five"}]},"verdicts":{"deep":{"accepted":"It starts at ten past five."},"high":{"accepted":"It starts at ten past five."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"It starts at ten past five."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"It costs three dollars."},"outcome":{"completed":"It costs three dollars."},"parts":{"cleanedCues":0,"cleanedWords":["it","costs","three","dollars"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[2,3,4,5,6],"inserted":[]},{"deleted":[],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,null,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["it","costs","two","point","five","dollars","sorry","three"],"similarity":"0.4418604651162791","wordRatio":"0.5"},"placeholders":[],"raw":"It costs two point five dollars. Sorry, three.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"it"},{"word":"costs"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"point"},{"word":"five"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"it"},{"word":"costs"},{"opensPhrase":1,"spare":["two","point"],"word":"three"},{"word":"five"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"it"},{"word":"costs"},{"opensPhrase":1,"spare":["two","point","five"],"word":"three"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"it"},{"word":"costs"},{"word":"two"},{"opensPhrase":1,"spare":["point"],"word":"three"},{"word":"five"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"it"},{"word":"costs"},{"word":"two"},{"opensPhrase":1,"spare":["point","five"],"word":"three"},{"endsSentence":true,"word":"dollars"}],[{"startsSentence":true,"word":"it"},{"word":"costs"},{"word":"two"},{"word":"point"},{"opensPhrase":1,"spare":["five"],"word":"three"},{"endsSentence":true,"word":"dollars"}]],"said":[{"startsSentence":true,"word":"it"},{"word":"costs"},{"word":"two"},{"word":"point"},{"word":"five"},{"endsSentence":true,"word":"dollars"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"three"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"it"},{"word":"costs"},{"word":"three"},{"word":"dollars"}]},"verdicts":{"deep":{"accepted":"It costs three dollars."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"Invite Priya to the launch."},"outcome":{"completed":"Invite Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","priya","to","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.5277777777777778","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["launch"],"word":"priya"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"Invite Priya to the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"Invite Sam and Priya to the launch."},"outcome":{"completed":"Invite Sam and Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","sam","and","priya","to","the","launch"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[2,3]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,4,5,6,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.38888888888888884","wordRatio":"1.0"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["launch"],"word":"priya"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"sam"},{"word":"and"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"Invite Sam and Priya to the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Invite Priya to the launch."},"outcome":{"completed":"Invite Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","priya","to","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.5277777777777778","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"Invite Priya to the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Invite Sam and Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","sam","and","priya","to","the","launch"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[2,3]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,4,5,6,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.38888888888888884","wordRatio":"1.0"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"sam"},{"word":"and"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Invite Priya to the launch."},"outcome":{"completed":"Invite Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","priya","to","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.5277777777777778","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Invite sam to the launch. Sorry, priya.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["invite"],"word":"priya"},{"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"opensPhrase":1,"spare":["launch"],"word":"priya"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"Invite Priya to the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Paint the door blue."},"outcome":{"completed":"Paint the door blue."},"parts":{"cleanedCues":0,"cleanedWords":["paint","the","door","blue"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[3,4],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["paint","the","door","red","sorry","blue"],"similarity":"0.6551724137931034","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Paint the door red. Sorry, blue.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["paint"],"word":"blue"},{"word":"the"},{"word":"door"},{"endsSentence":true,"word":"red"}],[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"opensPhrase":1,"spare":["door"],"word":"blue"},{"endsSentence":true,"word":"red"}],[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"endsSentence":true,"opensPhrase":1,"spare":["red"],"word":"blue"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"endsSentence":true,"word":"red"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"blue"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"word":"blue"}]},"verdicts":{"deep":{"accepted":"Paint the door blue."},"high":{"accepted":"Paint the door blue."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Paint the door blue."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Paint the door blue."},"outcome":{"completed":"Paint the door blue."},"parts":{"cleanedCues":0,"cleanedWords":["paint","the","door","blue"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[3,4],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["paint","the","door","red","actually","blue"],"similarity":"0.59375","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Paint the door red. Actually, blue.","repair":{"accepts":true,"rewrites":[],"said":[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"endsSentence":true,"word":"red"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"endsSentence":true,"word":"blue"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"word":"blue"}]},"verdicts":{"deep":{"accepted":"Paint the door blue."},"high":{"accepted":"Paint the door blue."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Paint the door blue."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Paint the window red."},"outcome":{"completed":"Paint the window red."},"parts":{"cleanedCues":0,"cleanedWords":["paint","the","window","red"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[2,3,4,5],"inserted":[]},{"deleted":[],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["paint","the","door","red","sorry","the","window"],"similarity":"0.4285714285714286","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"Paint the door red. Sorry, the window.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["paint"],"word":"the"},{"word":"window"},{"word":"the"},{"word":"door"},{"endsSentence":true,"word":"red"}],[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"opensPhrase":2,"spare":["door"],"word":"the"},{"word":"window"},{"endsSentence":true,"word":"red"}],[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"opensPhrase":2,"spare":["red"],"word":"the"},{"endsSentence":true,"word":"window"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"door"},{"endsSentence":true,"word":"red"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"the"},{"endsSentence":true,"word":"window"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"window"},{"word":"red"}]},"verdicts":{"deep":{"accepted":"Paint the window red."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"accepted":"Book the room for three hours."},"outcome":{"completed":"Book the room for three hours."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","room","for","three","hours"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","room","for","two","hours","sorry","three","hours"],"similarity":"0.6444444444444444","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Book the room for two hours. Sorry, three hours.","repair":{"accepts":true,"rewrites":[[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"hours"},{"endsSentence":true,"word":"hours"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":2,"spare":["two"],"word":"three"},{"word":"hours"},{"endsSentence":true,"word":"hours"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":2,"spare":["two","hours"],"word":"three"},{"endsSentence":true,"word":"hours"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"two"},{"opensPhrase":2,"spare":["hours"],"word":"three"},{"endsSentence":true,"word":"hours"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"two"},{"endsSentence":true,"word":"hours"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"three"},{"endsSentence":true,"word":"hours"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"three"},{"word":"hours"}]},"verdicts":{"deep":{"accepted":"Book the room for three hours."},"high":{"accepted":"Book the room for three hours."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Book the room for three hours."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Book the room for three hours."},"outcome":{"completed":"Book the room for three hours."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","room","for","three","hours"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","room","for","two","hours","sorry","three","hours"],"similarity":"0.6444444444444444","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Book the room for two hours. Sorry, three hours.","repair":{"accepts":true,"rewrites":[[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"hours"},{"endsSentence":true,"word":"hours"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":2,"spare":["two"],"word":"three"},{"word":"hours"},{"endsSentence":true,"word":"hours"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":2,"spare":["two","hours"],"word":"three"},{"endsSentence":true,"word":"hours"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"two"},{"endsSentence":true,"word":"hours"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"three"},{"endsSentence":true,"word":"hours"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"three"},{"word":"hours"}]},"verdicts":{"deep":{"accepted":"Book the room for three hours."},"high":{"accepted":"Book the room for three hours."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Book the room for three hours."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Book the room for three hours."},"outcome":{"completed":"Book the room for three hours."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","room","for","three","hours"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[4,5,6],"inserted":[]},{"deleted":[],"inserted":[5]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,4],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","room","for","two","hours","sorry","three"],"similarity":"0.5897435897435898","wordRatio":"0.75"},"placeholders":[],"raw":"Book the room for two hours. Sorry, three.","repair":{"accepts":true,"rewrites":[[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"hours"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"two"},{"endsSentence":true,"word":"hours"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"three"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"word":"three"},{"word":"hours"}]},"verdicts":{"deep":{"accepted":"Book the room for three hours."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The party is on Saturday. The venue is the hall."},"parts":{"cleanedCues":0,"cleanedWords":["the","party","is","on","saturday","the","venue","is","the","hall"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[4],"inserted":[4]},{"deleted":[10,11],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6,7,8,9,null,null],"movesOrDropsName":true,"names":[4,11],"rawCues":1,"rawWords":["the","party","is","on","friday","the","venue","is","the","hall","sorry","saturday"],"similarity":"0.6610169491525424","wordRatio":"0.8333333333333334"},"placeholders":[],"raw":"The party is on Friday. The venue is the hall. Sorry, Saturday.","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"the"},{"word":"party"},{"word":"is"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"friday"},{"startsSentence":true,"word":"the"},{"word":"venue"},{"word":"is"},{"word":"the"},{"endsSentence":true,"word":"hall"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"saturday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"party"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"saturday"},{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"venue"},{"word":"is"},{"word":"the"},{"word":"hall"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Meet me at the airport at six."},"parts":{"cleanedCues":0,"cleanedWords":["meet","me","at","the","airport","at","six"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,null,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["meet","me","at","the","station","at","five","sorry","the","airport","at","six"],"similarity":"0.5272727272727273","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"Meet me at the station at five. Sorry, the airport at six.","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["meet"],"word":"the"},{"word":"airport"},{"word":"me"},{"word":"at"},{"word":"the"},{"word":"station"},{"word":"at"},{"endsSentence":true,"word":"five"},{"word":"at"},{"endsSentence":true,"word":"six"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":2,"spare":["station"],"word":"the"},{"word":"airport"},{"word":"at"},{"endsSentence":true,"word":"five"},{"word":"at"},{"endsSentence":true,"word":"six"}],[{"opensPhrase":3,"spare":["meet"],"word":"the"},{"word":"airport"},{"word":"at"},{"word":"me"},{"word":"at"},{"word":"the"},{"word":"station"},{"word":"at"},{"endsSentence":true,"word":"five"},{"endsSentence":true,"word":"six"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"opensPhrase":3,"spare":["station"],"word":"the"},{"word":"airport"},{"word":"at"},{"word":"at"},{"endsSentence":true,"word":"five"},{"endsSentence":true,"word":"six"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"word":"station"},{"word":"at"},{"opensPhrase":4,"spare":["five"],"word":"the"},{"word":"airport"},{"word":"at"},{"endsSentence":true,"word":"six"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"word":"station"},{"word":"at"},{"endsSentence":true,"word":"five"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"the"},{"word":"airport"},{"word":"at"},{"endsSentence":true,"word":"six"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"word":"airport"},{"word":"at"},{"word":"six"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Meet me at the airport at six."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Meet me at the airport at six."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} @@ -802,7 +802,7 @@ {"deepMultiline":{"accepted":"Call Ana on Tuesday. And email Ben on Thursday."},"outcome":{"completed":"Call Ana on Tuesday. And email Ben on Thursday."},"parts":{"cleanedCues":0,"cleanedWords":["call","ana","on","tuesday","and","email","ben","on","thursday"],"droppedContent":5,"droppedRun":3,"gaps":[{"deleted":[3,4],"inserted":[]},{"deleted":[10,11,12],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,3,4,5,6,7,null,null,null,8],"movesOrDropsName":true,"names":[1,3,5,8,10,13],"rawCues":3,"rawWords":["call","ana","on","monday","sorry","tuesday","and","email","ben","on","wednesday","no","sorry","thursday"],"similarity":"0.5844155844155844","wordRatio":"0.6428571428571429"},"placeholders":[],"raw":"Call Ana on Monday. Sorry, Tuesday. And email Ben on Wednesday. No, sorry, Thursday.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call"],"word":"tuesday"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call"],"word":"tuesday"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call"],"word":"tuesday"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call"],"word":"tuesday"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call","ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ana","on","monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben"],"word":"thursday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ben","on","wednesday"],"word":"thursday"}],[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["wednesday"],"word":"thursday"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ben"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"thursday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"call"},{"isCapitalised":true,"word":"ana"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"isCapitalised":true,"startsSentence":true,"word":"and"},{"word":"email"},{"isCapitalised":true,"word":"ben"},{"word":"on"},{"isCapitalised":true,"word":"thursday"}]},"verdicts":{"deep":{"accepted":"Call Ana on Tuesday. And email Ben on Thursday."},"high":{"accepted":"Call Ana on Tuesday. And email Ben on Thursday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Call Ana on Tuesday. And email Ben on Thursday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Meet on Tuesday. Bring three chairs. Invite Priya. Book room two. It starts at ten."},"outcome":{"completed":"Meet on Tuesday. Bring three chairs. Invite Priya. Book room two. It starts at ten."},"parts":{"cleanedCues":0,"cleanedWords":["meet","on","tuesday","bring","three","chairs","invite","priya","book","room","two","it","starts","at","ten"],"droppedContent":11,"droppedRun":3,"gaps":[{"deleted":[2,3],"inserted":[]},{"deleted":[6,7,8],"inserted":[]},{"deleted":[],"inserted":[5]},{"deleted":[11,12],"inserted":[]},{"deleted":[16,17,18],"inserted":[]},{"deleted":[23,24],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,null,null,2,3,null,null,null,4,6,null,null,7,8,9,null,null,null,10,11,12,13,null,null,14],"movesOrDropsName":true,"names":[2,4,11,13],"rawCues":5,"rawWords":["meet","on","monday","sorry","tuesday","bring","two","chairs","no","three","invite","sam","sorry","priya","book","room","one","sorry","room","two","it","starts","at","nine","sorry","ten"],"similarity":"0.5373134328358209","wordRatio":"0.5769230769230769"},"placeholders":[],"raw":"Meet on Monday. Sorry, Tuesday. Bring two chairs. No, three. Invite Sam. Sorry, Priya. Book room one. Sorry, room two. It starts at nine. Sorry, ten.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"opensPhrase":1,"spare":["book"],"word":"room"},{"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":1,"spare":["room"],"word":"room"},{"endsSentence":true,"word":"one"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room"],"word":"room"},{"word":"two"},{"endsSentence":true,"word":"one"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"opensPhrase":2,"spare":["room","one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"opensPhrase":2,"spare":["one"],"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"opensPhrase":1,"spare":["nine"],"word":"ten"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"room"},{"endsSentence":true,"word":"one"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"room"},{"endsSentence":true,"word":"two"},{"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"endsSentence":true,"word":"nine"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"ten"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"isCapitalised":true,"startsSentence":true,"word":"bring"},{"word":"three"},{"word":"chairs"},{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"room"},{"word":"two"},{"isCapitalised":true,"startsSentence":true,"word":"it"},{"word":"starts"},{"word":"at"},{"word":"ten"}]},"verdicts":{"deep":{"accepted":"Meet on Tuesday. Bring three chairs. Invite Priya. Book room two. It starts at ten."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"Meet on Tuesday. Bring three chairs. Invite Priya."},"outcome":{"completed":"Meet on Tuesday. Bring three chairs. Invite Priya."},"parts":{"cleanedCues":0,"cleanedWords":["meet","on","tuesday","bring","three","chairs","invite","priya"],"droppedContent":6,"droppedRun":3,"gaps":[{"deleted":[2,3],"inserted":[]},{"deleted":[6,7,8],"inserted":[]},{"deleted":[],"inserted":[5]},{"deleted":[11,12],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,null,null,2,3,null,null,null,4,6,null,null,7],"movesOrDropsName":true,"names":[2,4,11,13],"rawCues":3,"rawWords":["meet","on","monday","sorry","tuesday","bring","two","chairs","no","three","invite","sam","sorry","priya"],"similarity":"0.5324675324675325","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"Meet on Monday. Sorry, Tuesday. Bring two chairs. No, three. Invite Sam. Sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"}],[{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"isCapitalised":true,"startsSentence":true,"word":"bring"},{"word":"three"},{"word":"chairs"},{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"}]},"verdicts":{"deep":{"accepted":"Meet on Tuesday. Bring three chairs. Invite Priya."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} -{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Meet on Tuesday at noon. Bring three chairs. Invite Priya to lunch."},"parts":{"cleanedCues":0,"cleanedWords":["meet","on","tuesday","at","noon","bring","three","chairs","invite","priya","to","lunch"],"droppedContent":6,"droppedRun":3,"gaps":[{"deleted":[2],"inserted":[2]},{"deleted":[5,6],"inserted":[]},{"deleted":[8,9,10],"inserted":[]},{"deleted":[],"inserted":[7]},{"deleted":[13],"inserted":[9]},{"deleted":[16,17],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,null,3,4,null,null,5,null,null,null,6,8,null,10,11,null,null],"movesOrDropsName":true,"names":[2,6,13,17],"rawCues":3,"rawWords":["meet","on","monday","at","noon","sorry","tuesday","bring","two","chairs","no","three","invite","sam","to","lunch","sorry","priya"],"similarity":"0.4893617021276596","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Meet on Monday at noon. Sorry, Tuesday. Bring two chairs. No, three. Invite Sam to lunch. Sorry, Priya.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["lunch"],"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["lunch"],"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["lunch"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["lunch"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["noon"],"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["lunch"],"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["lunch"],"word":"priya"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"word":"at"},{"word":"noon"},{"isCapitalised":true,"startsSentence":true,"word":"bring"},{"word":"three"},{"word":"chairs"},{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"lunch"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Meet on Tuesday at noon. Bring three chairs. Invite Priya to lunch."},"parts":{"cleanedCues":0,"cleanedWords":["meet","on","tuesday","at","noon","bring","three","chairs","invite","priya","to","lunch"],"droppedContent":6,"droppedRun":3,"gaps":[{"deleted":[2],"inserted":[2]},{"deleted":[5,6],"inserted":[]},{"deleted":[8,9,10],"inserted":[]},{"deleted":[],"inserted":[7]},{"deleted":[13],"inserted":[9]},{"deleted":[16,17],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,null,3,4,null,null,5,null,null,null,6,8,null,10,11,null,null],"movesOrDropsName":true,"names":[2,6,13,17],"rawCues":3,"rawWords":["meet","on","monday","at","noon","sorry","tuesday","bring","two","chairs","no","three","invite","sam","to","lunch","sorry","priya"],"similarity":"0.4893617021276596","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Meet on Monday at noon. Sorry, Tuesday. Bring two chairs. No, three. Invite Sam to lunch. Sorry, Priya.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet"],"word":"tuesday"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["meet","on","monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["monday"],"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}],[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"endsSentence":true,"word":"chairs"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"endsSentence":true,"word":"lunch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"monday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"mayBeName":true,"startsSentence":true,"word":"bring"},{"word":"two"},{"endsSentence":true,"word":"chairs"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"endsSentence":true,"word":"three"},{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"endsSentence":true,"word":"lunch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"word":"at"},{"word":"noon"},{"isCapitalised":true,"startsSentence":true,"word":"bring"},{"word":"three"},{"word":"chairs"},{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"lunch"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"I left my charger in the lobby."},"outcome":{"completed":"I left my charger in the lobby."},"parts":{"cleanedCues":0,"cleanedWords":["i","left","my","charger","in","the","lobby"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,5,null,null,null,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i","left","my","charger","in","the","garage","actually","the","lobby"],"similarity":"0.6","wordRatio":"0.7"},"placeholders":[],"raw":"I left my charger in the garage. Actually, the lobby.","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"i"},{"word":"left"},{"word":"my"},{"word":"charger"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"garage"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"word":"the"},{"endsSentence":true,"word":"lobby"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"left"},{"word":"my"},{"word":"charger"},{"word":"in"},{"word":"the"},{"word":"lobby"}]},"verdicts":{"deep":{"accepted":"I left my charger in the lobby."},"high":{"accepted":"I left my charger in the lobby."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"I left my charger in the lobby."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"The alert came from the database."},"outcome":{"completed":"The alert came from the database."},"parts":{"cleanedCues":0,"cleanedWords":["the","alert","came","from","the","database"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,null,null,null,null,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","alert","came","from","the","billing","service","sorry","the","database"],"similarity":"0.5517241379310345","wordRatio":"0.6"},"placeholders":[],"raw":"The alert came from the billing service. Sorry, the database.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["alert"],"word":"the"},{"word":"database"},{"word":"came"},{"word":"from"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"alert"},{"opensPhrase":2,"spare":["came"],"word":"the"},{"word":"database"},{"word":"from"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"alert"},{"word":"came"},{"word":"from"},{"word":"the"},{"opensPhrase":2,"spare":["billing"],"word":"the"},{"word":"database"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"alert"},{"word":"came"},{"word":"from"},{"word":"the"},{"word":"billing"},{"opensPhrase":2,"spare":["service"],"word":"the"},{"endsSentence":true,"word":"database"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"alert"},{"word":"came"},{"word":"from"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"word":"the"},{"endsSentence":true,"word":"database"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"alert"},{"word":"came"},{"word":"from"},{"word":"the"},{"word":"database"}]},"verdicts":{"deep":{"accepted":"The alert came from the database."},"high":{"accepted":"The alert came from the database."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The alert came from the database."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"accepted":"The team is replacing the printer next week."},"outcome":{"completed":"The team is replacing the printer next week."},"parts":{"cleanedCues":0,"cleanedWords":["the","team","is","replacing","the","printer","next","week"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,null,null,null,5,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","team","is","replacing","the","laptop","no","the","printer","next","week"],"similarity":"0.7543859649122807","wordRatio":"0.7272727272727273"},"placeholders":[],"raw":"The team is replacing the laptop. No, the printer next week.","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"the"},{"word":"team"},{"word":"is"},{"word":"replacing"},{"word":"the"},{"endsSentence":true,"word":"laptop"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"word":"the"},{"word":"printer"},{"word":"next"},{"endsSentence":true,"word":"week"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"team"},{"word":"is"},{"word":"replacing"},{"word":"the"},{"word":"printer"},{"word":"next"},{"word":"week"}]},"verdicts":{"deep":{"accepted":"The team is replacing the printer next week."},"high":{"accepted":"The team is replacing the printer next week."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The team is replacing the printer next week."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} diff --git a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepair.swift b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepair.swift index 033119a..7560fcf 100644 --- a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepair.swift +++ b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepair.swift @@ -26,7 +26,10 @@ import Shared /// of the earlier sentence kept. One may not answer a question: "Is it tomorrow? No, the day after." /// keeps its "No". A cue's words are taken out only with the correction they make, and never /// changed ("make that" is not "made that"). Nor may a correction that opens a later sentence -/// be dropped whole, leaving what it corrects as said; +/// be dropped whole, leaving what it corrects as said. Whichever way, the correction keeps its +/// meaning: the word that says what it says instead stays, and what it takes back is not +/// written again ("the blue room, sorry, the green room" is never "the blue room" or "the blue +/// green room"); /// - inside a correction phrase, up to ``maxRepairWords`` new words or changed words, and the words /// it corrects, which is how a garbled phrase is read as meant ("tomorrow. No, sorry, the after /// tomorrow" → "the day after tomorrow"); @@ -142,34 +145,36 @@ struct SelfRepair: Sendable { for line in text.split(whereSeparator: \.isNewline) { var startsSentence = true let lineStart = words.count - for token in line.split(whereSeparator: \.isWhitespace) { - for part in token.split(whereSeparator: hyphens.contains) { - let trailing = part.reversed().prefix { !$0.isLetter && !$0.isNumber } - let ends = trailing.contains(where: sentenceEnders.contains) - let asks = trailing.contains("?") - let normalized = EditDistance.words(in: EditDistance.normalize(String(part))) - if normalized.isEmpty { - if ends, let last = words.indices.last, last >= lineStart { - words[last].endsSentence = true - words[last].endsQuestion = asks - } - } - for (offset, word) in normalized.enumerated() { - let isLastOfPart = offset == normalized.count - 1 - let upper = offset == 0 && (part.first(where: \.isLetter)?.isUppercase ?? false) - let couldBeName = upper && !functionWords.contains(word) && !placeholders.contains(word) - words.append(SaidWord( - word: word, - endsSentence: isLastOfPart && ends, - endsQuestion: isLastOfPart && asks, - isName: couldBeName && !startsSentence, - isCapitalised: upper && !startsSentence, - mayBeName: couldBeName, - startsSentence: startsSentence && offset == 0 - )) + let parts = line.split(whereSeparator: \.isWhitespace).flatMap { $0.split(whereSeparator: hyphens.contains) } + for (index, part) in parts.enumerated() { + let trailing = part.reversed().prefix { !$0.isLetter && !$0.isNumber } + // An abbreviation's own full stop ("at 3 p.m. today") ends a sentence only before a + // capital. + let abbreviation = isDottedAbbreviation(part) && index + 1 < parts.count && !startsWithUppercase(parts[index + 1]) + let ends = !abbreviation && trailing.contains(where: sentenceEnders.contains) + let asks = trailing.contains("?") + let normalized = EditDistance.words(in: EditDistance.normalize(String(part))) + if normalized.isEmpty { + if ends, let last = words.indices.last, last >= lineStart { + words[last].endsSentence = true + words[last].endsQuestion = asks } - if !normalized.isEmpty { startsSentence = ends } } + for (offset, word) in normalized.enumerated() { + let isLastOfPart = offset == normalized.count - 1 + let upper = offset == 0 && startsWithUppercase(part) + let couldBeName = upper && !functionWords.contains(word) && !placeholders.contains(word) + words.append(SaidWord( + word: word, + endsSentence: isLastOfPart && ends, + endsQuestion: isLastOfPart && asks, + isName: couldBeName && !startsSentence, + isCapitalised: upper && !startsSentence, + mayBeName: couldBeName, + startsSentence: startsSentence && offset == 0 + )) + } + if !normalized.isEmpty { startsSentence = ends } } if let last = words.indices.last, last >= lineStart, !words[last].endsSentence { words[last].endsSentence = true @@ -179,6 +184,18 @@ struct SelfRepair: Sendable { return words } + /// Whether `part` is only letters each followed by a full stop ("p.m.", "e.g.", "U.S."). + private static func isDottedAbbreviation(_ part: Substring) -> Bool { + let characters = Array(part) + guard characters.count >= 4, characters.count.isMultiple(of: 2) else { return false } + return stride(from: 0, to: characters.count, by: 2).allSatisfy { characters[$0].isLetter && characters[$0 + 1] == "." } + } + + /// Whether the first letter of `part` is a capital. + private static func startsWithUppercase(_ part: Substring) -> Bool { + part.first(where: \.isLetter)?.isUppercase ?? false + } + /// The words of `text`, with the numbers and bullets that start its list items taken off. static func writtenWords(in text: String) -> [WrittenWord] { var words: [WrittenWord] = [] @@ -193,7 +210,7 @@ struct SelfRepair: Sendable { words.append(WrittenWord( word: word, original: String(part), - isCapitalised: offset == 0 && (part.first(where: \.isLetter)?.isUppercase ?? false), + isCapitalised: offset == 0 && startsWithUppercase(part), startsSentence: startsSentence, startsListItem: isListItem && firstOfLine )) @@ -320,6 +337,7 @@ struct SelfRepair: Sendable { words.prefix(2).map(\.word) == ["scratch", "that"] } func isFunctionWord(_ word: String) -> Bool { functionWords.contains(word) } + var allFunctionWords: Set { functionWords } var respellingSimilarity: Double { minRespellingSimilarity } var retractionLimit: Int { maxRetractedWords } var correctionCues: [[String]] { cues } diff --git a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairAlignment.swift b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairAlignment.swift index 84c23af..8796a84 100644 --- a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairAlignment.swift +++ b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairAlignment.swift @@ -14,7 +14,9 @@ extension SelfRepair { /// a word of a phrase has been written, the words it corrected may be written too ("three /// servers, sorry, four" → "four servers"; "next week, sorry, the after next" → "the week /// after next"), until the word after the phrase is read; never before, which would keep what - /// was taken back and drop only the cue. + /// was taken back and drop only the cue. The words its key word takes back are never written + /// again, and the key word itself is changed only into a word like it + /// (``SelfRepair/keyWord(of:correcting:)``). struct Alignment { let repair: SelfRepair let said: [SaidWord] @@ -30,6 +32,12 @@ extension SelfRepair { /// For each said index, the words corrected by the phrase that covers it, which a repair /// may not add there as new words. private let corrected: [Set] + /// For each said index, the corrected words the key word of the phrase that covers it + /// takes back, which a repair may not write there either. + private let taken: [Set] + /// Whether each said word is the key word of a correction phrase, which a repair may not + /// change. + private let key: [Bool] /// The words of the cues said, whose forms a repair may not add ("make that" → "made that"). private let cueWords: Set @@ -57,12 +65,35 @@ extension SelfRepair { corrected[index].formUnion(words) } } + var taken = Array(repeating: Set(), count: said.count + 1) + for (start, words) in corrections.taken { + for index in start...min(start + min(Self.phraseLength(from: start, in: said), Self.phrase), said.count) { + taken[index].formUnion(words) + } + } + var keys = corrections.keys for (start, word) in said.enumerated() where word.opensPhrase > 0 { cover(from: start, length: word.opensPhrase, with: Set(word.spare)) for index in start...min(start + word.opensPhrase, said.count) { corrected[index].formUnion(word.spare) } + let phrase = said[start.. 0, repairsLeft > 0, new { steps.append((0, 1, Self.encode(left: left, repairs: repairsLeft - 1, begun: begun))) } - if left > 0, repairsLeft > 0, i < n, isReplaceable(said[i]), new { + if left > 0, repairsLeft > 0, i < n, mayStandIn(written[j].word, at: i), isReplaceable(said[i]), new { let after = consuming(1, from: i, in: Self.encode(left: left, repairs: repairsLeft - 1, begun: begun), writing: true) steps.append((1, 1, after)) } @@ -255,6 +287,17 @@ extension SelfRepair { && !cueWords.contains { $0 == word.word || WordForms.areForms($0, word.word) } } + /// Whether a repair may put `word` in place of said word `i`: any word, unless that is a + /// correction's key word, which only a word like it may stand in for. + private func mayStandIn(_ word: String, at i: Int) -> Bool { + !key[i] || EditDistance.normalizedSimilarity(said[i].word, word) >= Self.minKeyWordSimilarity + } + + /// How alike a correction's key word and a word a repair puts in its place must be: a + /// garbled key word may be read as meant ("busses" → "buses"), never as another word + /// ("busses" → "trains"). + static let minKeyWordSimilarity = 0.5 + private func isReplaceable(_ word: SaidWord) -> Bool { !repair.isProtected(word.word, placeholders: placeholders) && !word.isName && !word.isCue } diff --git a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift index fe4c125..5f66572 100644 --- a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift +++ b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift @@ -25,18 +25,41 @@ extension SelfRepair { /// inside the phrase, a repair may re-use only the words it corrects ("the Monday after" → "the /// Monday after next"). The cues may be followed by "not" and corrected words said again, which /// go with them ("room four, no, not four, five"; ``restates(_:_:)``). + /// + /// A correction must also keep its meaning: the word that says what it says instead, its + /// phrase's key word (``keyWord(of:correcting:)``), stays, as itself or a word like it + /// ("busses" → "buses"), and the corrected words it takes back are never written again + /// (``takenBack(by:from:)``, ``stoodInFor(phrase:key:corrected:)``), so "the blue room, sorry, + /// the green room" is "the green room", and neither "the blue room" nor "the blue green room". + /// Nor does a phrase that says the corrected words again after a new word leave the word before + /// them, which the new word takes back (``leavesTakenBack(_:corrected:phrase:)``); it corrects + /// that word too ("The billing service goes live. Sorry, I mean the login service." → "The + /// login service goes live."). Nor does a fact or a name leave the one of its sort just before + /// the words it corrects ("three servers, sorry, four" corrects "three", never only "servers"). enum Corrections { - /// Medium's corrections: for each start, the ends of the corrected words and cues that may - /// be taken out from there; and for each phrase that follows, the words it may correct and, - /// of those, the ones its repair may re-use (none after "scratch that"). - static func spans( - in words: [SaidWord], - repair: SelfRepair, - placeholders: Set - ) -> (ends: [Int: [Int]], corrected: [Int: Set], spare: [Int: Set]) { + /// Medium's corrections in the words said, by said index. + struct Spans { + /// For each start, the ends of the corrected words and cues that may be taken out from + /// there. var ends: [Int: [Int]] = [:] - var correctedWords: [Int: Set] = [:] + /// For each phrase that follows, by where it starts, the words it may correct. + var corrected: [Int: Set] = [:] + /// Of those, the ones its repair may re-use (none after "scratch that"). var spare: [Int: Set] = [:] + /// For each phrase, by where it starts, the corrected words its key word takes back, + /// which no repair may write again. + var taken: [Int: Set] = [:] + /// Where the key words of the phrases are, which no repair may change. + var keys: [Int] = [] + } + + /// Medium's corrections in `words`. + static func spans(in words: [SaidWord], repair: SelfRepair, placeholders: Set) -> Spans { + var spans = Spans() + // Every word each phrase may correct, by where it starts. Which of them a repair took + // back isn't known, so its key word and the words that takes back are found among them + // all. + var takenBack: [Int: Set] = [:] for (cueStart, runEnds) in cueRuns(in: words, repair: repair) { // Speech-to-text ends a sentence where the speaker paused, so a cue that opens one // may take back the end of the one before ("I left my charger in the garage. @@ -83,19 +106,31 @@ extension SelfRepair { || restated.map({ repair.restates(corrected, words[$0]) }) == true || standsIn(from: end)) { let length = min(Alignment.phraseLength(from: end, in: words), SelfRepair.correctionPhraseWords) + let phrase = words[end..<(end + length)] + guard !repair.leavesTakenBack(words, corrected: start.. 0 }), restated.map({ repair.restates(words[$0], words[corrected]) }) ?? true, repair.relates(words[start], to: words[phrase], weak: weak) - || (count == 1 && !weak && repair.replaces(words[start], with: words[phrase])), + || (count == 1 && !weak && repair.replaces(words[start], with: words[phrase])) + || repair.takesBackFirst(words[corrected], phrase: words[phrase]), repair.relates(words[corrected.upperBound - 1], to: words[phrase], weak: weak) || (count == 1 && !weak && repair.replaces(words[start], with: words[phrase])), - repair.phrase(words[phrase], takesBackFactsIn: words[corrected], placeholders: placeholders) + repair.phrase(words[phrase], takesBackFactsIn: words[corrected], placeholders: placeholders), + !repair.leavesTakenBack(words, corrected: corrected, phrase: words[phrase]) else { continue } results.append(rewrite(words, correcting: corrected, cues: cueStart.., cues: Range, phrase: Range) -> [SaidWord] { + /// a sentence when it replaced words that did. A phrase an earlier correction opened ends + /// where its words stop following each other, as when this one takes a cue out of it + /// ("email no one"). + private static func rewrite(_ said: [SaidWord], correcting corrected: Range, cues: Range, phrase: Range) -> [SaidWord] { + var words = said + for segment in [0.. 0 { + words[index].opensPhrase = min(words[index].opensPhrase, segment.upperBound - index) + } + } var moved = Array(words[phrase]) moved[0].opensPhrase = moved.count moved[0].spare = words[corrected].map(\.word) @@ -209,13 +254,21 @@ extension SelfRepair { return starts } - /// Where each run of cues can end, by where it starts. + /// Where each run of cues can end, by where it starts; a cue misheard as another word + /// (``cueSoundAlikes``) may end it. The ends of a run follow the order of the policy's cues, + /// which decides which rewrites ``maxRewrites`` keeps. private static func cueRuns(in words: [SaidWord], repair: SelfRepair) -> [Int: [Int]] { let texts = words.map(\.word) var cueEnds: [Int: [Int]] = [:] for cue in repair.correctionCues where texts.count >= cue.count { for start in 0...(texts.count - cue.count) where texts[start..<(start + cue.count)].elementsEqual(cue) { - cueEnds[start, default: []].append(start + cue.count) + let end = start + cue.count + cueEnds[start, default: []].append(end) + // A cue speech-to-text misheard, just after one it didn't, goes with it ("the + // monitor, wait, node, the router"). + if end < texts.count, cueSoundAlikes.contains(texts[end]) { + cueEnds[start, default: []].append(end + 1) + } } } func runEnds(from start: Int) -> [Int] { @@ -226,6 +279,9 @@ extension SelfRepair { /// Cue words that as often start a new point as correct the last one. static let weakCues: Set = ["no", "wait", "actually", "rather"] + /// Words speech-to-text writes for a cue ("know" for "no", "weight" for "wait", "made" for + /// "make"), which say nothing a correction says instead. + static let cueSoundAlikes: Set = ["know", "now", "note", "node", "weight", "weigh", "way", "made", "maid"] /// Words that start a new clause, which a correction of the sentence before doesn't. static let subjects: Set = [ "i", "we", "you", "he", "she", "it", "they", "i'm", "i'll", "i've", "i'd", "we're", "we'll", "we've", "we'd", @@ -340,4 +396,159 @@ extension SelfRepair { guard let verb = WordForms.expansions(of: negation).first?.first else { return false } return words.contains { $0 == verb || WordForms.areForms($0, verb) } } + + // MARK: - Meaning + + /// Whether `word` says something a correction can take back or say instead: it holds more than + /// the grammar together, and isn't a filler, a cue, or a cue as speech-to-text misheard it + /// ("know" for "no"). + private func carriesMeaning(_ word: SaidWord) -> Bool { + !isFunctionWord(word.word) && !isFiller(word.word) && !isCue(word.word) + && !Corrections.cueSoundAlikes.contains(word.word) + } + + /// Whether `word` is likely a word that holds the grammar together, misheard ("thee" for "the", + /// "theon" for "then"): no fact or name, and close to one. + private func isMisheardFunctionWord(_ word: SaidWord) -> Bool { + guard !word.mayBeName, factKind(word) == nil else { return false } + let length = word.word.count + return allFunctionWords.contains { functionWord in + let other = functionWord.count + // Words further apart in length can't be as alike. + return Double(abs(length - other)) <= (1 - Self.minMisheardSimilarity) * Double(max(length, other)) + && EditDistance.normalizedSimilarity(word.word, functionWord) >= Self.minMisheardSimilarity + } + } + + /// How far into a correction's `phrase` its key word is: the first word that carries meaning + /// and isn't among the `corrected` words or a misheard word that only holds the grammar + /// together, which says what the correction says instead ("green" in "the blue room, sorry, + /// the green room"). No repair may change it into another word, so an answer can't keep what + /// was corrected and lose the correction. + func keyWord(of phrase: ArraySlice, correcting corrected: ArraySlice) -> Int? { + phrase.firstIndex { carriesMeaning($0) && !Self.isSaid($0, in: corrected) && !isMisheardFunctionWord($0) } + .map { $0 - phrase.startIndex } + } + + /// What sort of thing a word says, finer than ``FactKind``, for what a key word takes back. + private enum Sort { + case number, day, month + /// Another word of time ("tomorrow", "noon", "week"). + case time + case unit, negation + /// A name, capitalised where no sentence starts. + case name + /// Any other word that carries meaning. + case word + } + + /// What sort of thing `word` says, which a key word takes back one of its own sort of. + private func sort(of word: SaidWord, mayIsMonth: Bool = false) -> Sort { + switch factKind(word, mayIsMonth: mayIsMonth) { + case nil: word.isName ? .name : .word + case .negation: .negation + case .unit: .unit + case .number where WordForms.isNumber(word.word): .number + case .number where Self.days.contains(word.word): .day + case .number where Self.isMonth(word) || word.word == "may": .month + case .number: .time + } + } + + /// The `corrected` words a correction whose `phrase` goes back takes back, which no repair may + /// write again once it has a key word: those that carry meaning and that the phrase doesn't say + /// again ("Tuesday" for "Wednesday", "billing" for "the login service"). + func takenBack(by phrase: ArraySlice, from corrected: ArraySlice) -> Set { + Set(corrected.filter { carriesMeaning($0) && !Self.isSaid($0, in: phrase) }.map(\.word)) + } + + /// Of the words a phrase of Medium's corrections may correct (`corrected`, all of them, since + /// which a repair took back isn't known), the ones the key word `key` words into the phrase + /// stands in for, which no repair may write again: the one where the phrase puts it, found by a + /// word the phrase says again after it ("blue" in "the blue room, sorry, the green room") or + /// else before it ("Sam" in "send it to Sam, sorry, to Priya"); without one, for a fact, the + /// corrected facts ("three" in "three servers, sorry, four"), and for a name, the one name + /// corrected. Other corrected words may be written again ("I'm meeting divya at the station, + /// actually nikhil" → "I'm meeting Nikhil at the station"). + func stoodInFor(phrase: ArraySlice, key: Int, corrected: ArraySlice) -> Set { + let mayIsMonth = corrected.contains(where: Self.isMonth) + let keySort = sort(of: phrase[phrase.startIndex + key], mayIsMonth: mayIsMonth) + func isTaken(_ word: SaidWord) -> Bool { + carriesMeaning(word) && sort(of: word, mayIsMonth: mayIsMonth) == keySort && !Self.isSaid(word, in: phrase) + } + let after = ((key + 1).., phrase: ArraySlice) -> Bool { + corrected.lowerBound > 0 && !words[corrected.lowerBound - 1].endsSentence + && (takesBackFirst(words[(corrected.lowerBound - 1).., phrase: ArraySlice) -> Bool { + let correctedWords = words[corrected] + guard let before = words[.., phrase: ArraySlice) -> Bool { + guard let first = corrected.first, carriesMeaning(first), !Self.isSaid(first, in: phrase) else { return false } + let rest = corrected.dropFirst() + guard !rest.contains(where: { carriesMeaning($0) && !Self.isSaid($0, in: phrase) }), + let saidAgain = phrase.firstIndex(where: { carriesMeaning($0) && Self.isSaid($0, in: rest) }), + let key = keyWord(of: phrase, correcting: corrected) + else { return false } + return key < saidAgain - phrase.startIndex && sort(of: first) == sort(of: phrase[phrase.startIndex + key]) + } + + /// Whether `word` is among `words`, as itself or another form of it. + private static func isSaid(_ word: SaidWord, in words: ArraySlice) -> Bool { + words.contains { $0.word == word.word || WordForms.areForms($0.word, word.word) } + } + + /// How alike a word and one that only holds the grammar together must be for the word to be + /// that one misheard ("thee" for "the", "theon" for "then"). + private static let minMisheardSimilarity = 0.75 + /// The days of the week, which a key word that is one takes back one of. + private static let days: Set = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"] } diff --git a/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift b/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift index 64ae6d0..d8fd53a 100644 --- a/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift +++ b/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift @@ -145,6 +145,110 @@ struct SelfRepairTests { #expect(review(raw, cleaned) == .accepted(cleaned)) } + /// A correction keeps its meaning: the word it says instead stays, as itself or a word like it, + /// and what it takes back isn't written again. + @Test("A correction is resolved with its meaning kept", arguments: [ + ("book the blue room sorry the green room for friday", "Book the green room for Friday."), + ("send it to the finance team make that the legal team today", "Send it to the legal team today."), + ("ask the designer i mean the developer to check it", "Ask the developer to check it."), + ("we're migrating the load balancer make that the scheduler next week", "We're migrating the scheduler next week."), + ("paint the fence red no wait blue", "Paint the fence blue."), + ("we need three servers sorry four", "We need four servers."), + ("send it to sam sorry to priya", "Send it to Priya."), + ("the demo is next week sorry the after next", "The demo is the week after next."), + ("i'm meeting divya at the station actually nikhil", "I'm meeting Nikhil at the station."), + ("The billing service goes live next Tuesday. Sorry, I mean the login service.", "The login service goes live next Tuesday."), + ("fuel efficiency in cars sorry busses", "Fuel efficiency in buses."), + ]) + func keepsTheMeaningOfACorrection(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .accepted(cleaned)) + } + + /// However a repair could otherwise line the words up, an answer may not lose what a correction + /// says instead or write what it takes back. + @Test("A correction whose meaning is lost is rejected", arguments: [ + ("book the blue room sorry the green room for friday", "Book the blue room for Friday."), + ("book the blue room sorry the green room for friday", "Book the room for Friday."), + ("book the blue room sorry the green room for friday", "Book the blue green room for Friday."), + ("Book the blue room, sorry, the green room for Friday.", "Book the blue room for Friday."), + ("send it to the finance team make that the legal team today", "Send it to the finance team today."), + ("ask the designer i mean the developer to check it", "Ask the designer to check it."), + ("we're migrating the load balancer make that the scheduler next week", "We're migrating the load balancer next week."), + ("paint the fence red no wait blue", "Paint the fence red."), + ("we need three servers sorry four", "We need four three servers."), + ("send it to sam sorry to priya", "Send it to Priya Sam."), + ("I left my charger in the garage. Actually, the lobby.", "I left my charger in the garage lobby."), + ("The demo is on Tuesday at noon. Sorry, Wednesday.", "The demo is on Tuesday Wednesday at noon."), + ("Invite Sam to the launch. Sorry, Priya.", "Invite Sam and Priya to the launch."), + ("fuel efficiency in cars sorry busses", "Fuel efficiency in trains."), + ("i wanted to say sorry to jo", "I wanted to say it to Jo."), + ]) + func rejectsLosingTheMeaningOfACorrection(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .rejected(.invalidRepair)) + } + + /// A fact or a name a correction says instead takes back one of its own sort, so no reading of + /// it keeps that one beside it: one that takes back only the words after it is no reading at + /// all. + @Test("A correction never keeps what it takes back beside it", arguments: [ + ("we need three servers sorry four", "We need three four servers."), + ("we need three servers sorry four", "We need three or four servers."), + ("we need three of the servers sorry four", "We need three of the four servers."), + ("Invite Sam to the launch. Sorry, Priya.", "Invite Sam and Priya to the launch."), + ("Invite Sam to the launch. Sorry, Priya.", "Invite Sam, Priya to the launch."), + ("Invite Sam to the launch, sorry, Priya.", "Invite Sam and Priya to the launch."), + ("I am meeting Divya at the station. Actually, Nikhil.", "I am meeting Divya and Nikhil at the station."), + ("I am meeting Divya at the station. Actually, Nikhil.", "I am meeting Divya Nikhil at the station."), + ("Call me on Tuesday, no, Wednesday.", "Call me on Tuesday or Wednesday."), + ("We have two weeks left. Sorry, three.", "We have two or three weeks left."), + ]) + func rejectsKeepingWhatACorrectionTakesBack(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .rejected(.invalidRepair)) + } + + @Test("A correction of a fact or a name is resolved however far back it reaches", arguments: [ + ("we need three servers sorry four", "We need four servers."), + ("two people said we need servers sorry four", "Two people said we need four servers."), + ("we need three of the servers sorry four", "We need four of the servers."), + ("Invite Sam to the launch. Sorry, Priya.", "Invite Priya to the launch."), + ("Invite Sam to the launch, sorry, Priya.", "Invite Priya to the launch."), + ("I am meeting Divya at the station. Actually, Nikhil.", "I am meeting Nikhil at the station."), + ("meet me at the station sorry at six", "Meet me at six."), + ("Ask Sam to email Ana, sorry, Priya.", "Ask Sam to email Priya."), + ("Ask Sam to email Ana, sorry, Priya.", "Ask Priya to email Ana."), + ("We have two weeks left. Sorry, three.", "We have three weeks left."), + ]) + func resolvesACorrectionOfAFactOrAName(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .accepted(cleaned)) + } + + /// A cue speech-to-text misheard just after one it heard goes with it, and a misheard word that + /// only holds the grammar together says nothing a correction says instead. + @Test("Misheard cues and small words say nothing a correction says", arguments: [ + ("Can you bring the monitor, wait node, the router to the meeting?", "Can you bring the router to the meeting?"), + ("The city is buying more electric buses, no weight vans.", "The city is buying more electric vans."), + ("Dinner is on Saturday. Sorry, no theon Tuesday.", "Dinner is on Tuesday."), + ("The product review is on the 12th of October. No sorry thee of November.", "The product review is on the 12th of November."), + ]) + func resolvesACorrectionWithMisheardWords(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .accepted(cleaned)) + } + + /// "No" in "no one" is a cue too, so one correction can take words out of the phrase another + /// moved back, and that phrase then ends where its words do. + @Test func aPhraseALaterCorrectionCutsEndsWhereItsWordsDo() { + let raw = "I'll call no one now. Scratch that. I'll email no one instead." + #expect(review(raw, "I'll email no one instead.") == .accepted("I'll email no one instead.")) + #expect(review(raw, "I'll email Noah instead.") == .rejected(.invalidRepair)) + } + + /// An abbreviation's full stop ends a sentence only before a capital, so "at 3 p.m. today" is + /// one sentence and its time can be corrected. + @Test func anAbbreviationEndsASentenceOnlyBeforeACapital() { + let cleaned = "The shop closes at 10 a.m. today." + #expect(review("The shop closes at 3 p.m. today. Sorry, I meant at 10 a.m.", cleaned) == .accepted(cleaned)) + } + @Test("A cue followed by \"not\" and the corrected words said again goes with them", arguments: [ ("The meeting is in room four, no, not four, five.", "The meeting is in room five."), ("Book the flight for Tuesday, sorry, not Tuesday, Thursday morning.", "Book the flight for Thursday morning."), diff --git a/linux-windows/crates/cleanup/src/self_repair.rs b/linux-windows/crates/cleanup/src/self_repair.rs index 2d0ce58..47244d6 100644 --- a/linux-windows/crates/cleanup/src/self_repair.rs +++ b/linux-windows/crates/cleanup/src/self_repair.rs @@ -47,7 +47,10 @@ pub(crate) const MIN_BULLETED_ITEMS: usize = 3; /// earlier sentence kept. One may not answer a question: "Is it tomorrow? No, the day after." /// keeps its "No". A cue's words are taken out only with the correction they make, and never /// changed ("make that" is not "made that"). Nor may a correction that opens a later sentence -/// be dropped whole, leaving what it corrects as said; +/// be dropped whole, leaving what it corrects as said. Whichever way, the correction keeps its +/// meaning: the word that says what it says instead stays, and what it takes back is not +/// written again ("the blue room, sorry, the green room" is never "the blue room" or "the blue +/// green room"); /// - inside a correction phrase, up to [`MAX_REPAIR_WORDS`] new words or changed words, and the /// words it corrects, which is how a garbled phrase is read as meant ("tomorrow. No, sorry, the /// after tomorrow" → "the day after tomorrow"); @@ -266,9 +269,14 @@ pub(crate) fn said_words(text: &str, function_words: &WordSet, placeholders: &Wo for line in s::split_where(text, usize::MAX, true, s::is_newline) { let mut starts_sentence = true; let line_start = words.len(); - for part in parts(line) { + let parts: Vec<&str> = parts(line).collect(); + for (index, &part) in parts.iter().enumerate() { let trailing = trailing_marks(part); - let ends = trailing.iter().any(|mark| s::is_one_of(mark, &SENTENCE_ENDERS)); + // An abbreviation's own full stop ("at 3 p.m. today") ends a sentence only before a + // capital. + let abbreviation = + is_dotted_abbreviation(part) && parts.get(index + 1).is_some_and(|next| !starts_with_uppercase(next)); + let ends = !abbreviation && trailing.iter().any(|mark| s::is_one_of(mark, &SENTENCE_ENDERS)); let asks = trailing.iter().any(|mark| s::canonically_equal(mark, "?")); let normalized = normalized_words(part); if normalized.is_empty() @@ -486,6 +494,13 @@ fn trailing_marks(part: &str) -> Vec<&str> { .collect() } +/// Whether `part` is only letters each followed by a full stop ("p.m.", "e.g.", "U.S."). +fn is_dotted_abbreviation(part: &str) -> bool { + let characters: Vec<&str> = s::characters(part).collect(); + let length = characters.len(); + length >= 4 && length.is_multiple_of(2) && characters.chunks(2).all(|pair| s::is_letter(pair[0]) && pair[1] == ".") +} + /// Whether the first letter of `part` is a capital. fn starts_with_uppercase(part: &str) -> bool { s::characters(part) diff --git a/linux-windows/crates/cleanup/src/self_repair/alignment.rs b/linux-windows/crates/cleanup/src/self_repair/alignment.rs index 11885e0..48e6919 100644 --- a/linux-windows/crates/cleanup/src/self_repair/alignment.rs +++ b/linux-windows/crates/cleanup/src/self_repair/alignment.rs @@ -24,6 +24,9 @@ type Step = (usize, usize, usize); /// Most letters spelled out that may be written as one word. const MAX_ACRONYM_LETTERS: usize = 6; +/// How alike a correction's key word and a word a repair puts in its place must be: a garbled key +/// word may be read as meant ("busses" → "buses"), never as another word ("busses" → "trains"). +const MIN_KEY_WORD_SIMILARITY: f64 = 0.5; /// Whether some sequence of a repair's edits turns the words said into the words written. /// @@ -35,7 +38,9 @@ const MAX_ACRONYM_LETTERS: usize = 6; /// ([`corrections`]). Once a word of a phrase has been written, the words it corrected may be /// written too ("three servers, sorry, four" → "four servers"; "next week, sorry, the after next" /// → "the week after next"), until the word after the phrase is read; never before, which would -/// keep what was taken back and drop only the cue. +/// keep what was taken back and drop only the cue. The words its key word takes back are never +/// written again, and the key word itself is changed only into a word like it +/// ([`SelfRepair::key_word`](super::SelfRepair::key_word)). pub(super) struct Alignment<'a> { repair: &'a SelfRepair, said: &'a [SaidWord], @@ -51,6 +56,12 @@ pub(super) struct Alignment<'a> { /// For each said index, the words corrected by the phrase that covers it, which a repair may /// not add there as new words. corrected: Vec, + /// For each said index, the corrected words the key word of the phrase that covers it takes + /// back, which a repair may not write there either. + taken: Vec, + /// Whether each said word is the key word of a correction phrase, which a repair may not + /// change. + key: Vec, /// The words of the cues said, whose forms a repair may not add ("make that" → "made that"). cue_words: Vec, } @@ -78,10 +89,42 @@ impl<'a> Alignment<'a> { for (start, words) in corrections.corrected.iter().enumerate() { cover(&mut corrected, start, phrase_length(start, said).min(PHRASE), words); } + let mut taken = vec![WordSet::default(); n + 1]; + for (start, words) in corrections.taken.iter().enumerate() { + cover(&mut taken, start, phrase_length(start, said).min(PHRASE), words); + } + let mut keys = corrections.keys; for (start, word) in said.iter().enumerate().filter(|(_, word)| word.opens_phrase > 0) { let words = WordSet::new(&word.spare); cover(&mut spare, start, word.opens_phrase, &words); cover(&mut corrected, start, word.opens_phrase, &words); + let phrase = &said[start..(start + word.opens_phrase).min(said.len())]; + let spare_words: Vec = word + .spare + .iter() + .map(|text| SaidWord { + word: text.clone(), + ..SaidWord::default() + }) + .collect(); + if let Some(key) = repair.key_word(phrase, &spare_words) { + keys.push(start + key); + cover( + &mut taken, + start, + word.opens_phrase, + &repair.taken_back(phrase, &spare_words), + ); + } + } + // The key word said again in a row is the key word too: either copy may be the one kept. + let mut key = vec![false; n]; + for index in keys { + let mut end = index; + while end + 1 < n && same(&said[end + 1].word, &said[index].word) { + end += 1; + } + key[index..=end].fill(true); } Self { repair, @@ -92,6 +135,8 @@ impl<'a> Alignment<'a> { spans: corrections.ends, spare, corrected, + taken, + key, cue_words: said .iter() .filter(|word| word.is_cue) @@ -152,12 +197,22 @@ impl<'a> Alignment<'a> { let (left, repairs_left, begun) = decode(state); let word = &self.written[j].word; let new = self.is_repair(&self.written[j]) && !self.corrected[i].contains(word); - if begun && self.spare[i].contains(word) && !self.placeholders.contains(word) { + if begun + && self.spare[i].contains(word) + && !self.taken[i].contains(word) + && !self.placeholders.contains(word) + { steps.push((0, 1, state)); } else if left > 0 && repairs_left > 0 && new { steps.push((0, 1, encode(left, repairs_left - 1, begun))); } - if left > 0 && repairs_left > 0 && i < n && self.is_replaceable(&self.said[i]) && new { + if left > 0 + && repairs_left > 0 + && i < n + && self.may_stand_in(word, i) + && self.is_replaceable(&self.said[i]) + && new + { let after = self.consuming(1, i, encode(left, repairs_left - 1, begun), true); steps.push((1, 1, after)); } @@ -319,6 +374,12 @@ impl<'a> Alignment<'a> { .any(|cue| same(cue, text) || word_forms::are_forms(cue, text)) } + /// Whether a repair may put `word` in place of said word `i`: any word, unless that is a + /// correction's key word, which only a word like it may stand in for. + fn may_stand_in(&self, word: &str, i: usize) -> bool { + !self.key[i] || edit_distance::normalized_similarity(&self.said[i].word, word) >= MIN_KEY_WORD_SIMILARITY + } + fn is_replaceable(&self, word: &SaidWord) -> bool { !self.repair.is_protected(&word.word, self.placeholders) && !word.is_name && !word.is_cue } diff --git a/linux-windows/crates/cleanup/src/self_repair/corrections.rs b/linux-windows/crates/cleanup/src/self_repair/corrections.rs index d5c3501..edde2f3 100644 --- a/linux-windows/crates/cleanup/src/self_repair/corrections.rs +++ b/linux-windows/crates/cleanup/src/self_repair/corrections.rs @@ -22,10 +22,24 @@ //! repair may re-use only the words it corrects ("the Monday after" → "the Monday after next"). //! The cues may be followed by "not" and corrected words said again, which go with them ("room //! four, no, not four, five"; [`SelfRepair::restates`]). +//! +//! A correction must also keep its meaning: the word that says what it says instead, its phrase's +//! key word ([`SelfRepair::key_word`]), stays, as itself or a word like it ("busses" → "buses"), +//! and the corrected words it takes back are never written again ([`SelfRepair::taken_back`], +//! [`SelfRepair::stood_in_for`]), so "the blue room, sorry, the green room" is "the green room", +//! and neither "the blue room" nor "the blue green room". Nor does a phrase that says the +//! corrected words again after a new word leave the word before them, which the new word takes +//! back ([`SelfRepair::leaves_taken_back`]); it corrects that word too ("The billing service goes +//! live. Sorry, I mean the login service." → "The login service goes live."). Nor does a fact or +//! a name leave the one of its sort just before the words it corrects ("three servers, sorry, +//! four" corrects "three", never only "servers"). -use std::collections::{BTreeMap, HashMap}; +use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::ops::Range; +use lt_shared::edit_distance; +use lt_shared::swift_string::{self as s}; + use super::{CORRECTION_PHRASE_WORDS, SaidWord, SelfRepair, occurrences, phrase_length}; use crate::self_correction::RESTATING_WORD; use crate::word_forms; @@ -45,6 +59,22 @@ const SUBJECTS: [&str; 30] = [ const WEAK_CUES: [&str; 4] = ["no", "wait", "actually", "rather"]; /// Words that join a number said in parts ("half past two", "ten to five", "two point five"). const NUMBER_JOINERS: [&str; 4] = ["past", "to", "and", "point"]; +/// Words speech-to-text writes for a cue ("know" for "no", "weight" for "wait", "made" for "make"), +/// which say nothing a correction says instead. +const CUE_SOUND_ALIKES: [&str; 9] = ["know", "now", "note", "node", "weight", "weigh", "way", "made", "maid"]; +/// How alike a word and one that only holds the grammar together must be for the word to be that +/// one misheard ("thee" for "the", "theon" for "then"). +const MIN_MISHEARD_SIMILARITY: f64 = 0.75; +/// The days of the week, which a key word that is one takes back one of. +const DAYS: [&str; 7] = [ + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + "sunday", +]; /// Medium's corrections in the words said, by said index. pub(super) struct Spans { @@ -54,6 +84,11 @@ pub(super) struct Spans { pub(super) corrected: Vec, /// Of those, the ones its repair may re-use (none after "scratch that"). pub(super) spare: Vec, + /// For each phrase, by where it starts, the corrected words its key word takes back, which no + /// repair may write again. + pub(super) taken: Vec, + /// Where the key words of the phrases are, which no repair may change. + pub(super) keys: Vec, } /// Medium's corrections in `words`. @@ -62,7 +97,12 @@ pub(super) fn spans(words: &[SaidWord], repair: &SelfRepair, placeholders: &Word ends: vec![Vec::new(); words.len() + 1], corrected: vec![WordSet::default(); words.len() + 1], spare: vec![WordSet::default(); words.len() + 1], + taken: vec![WordSet::default(); words.len() + 1], + keys: Vec::new(), }; + // Every word each phrase may correct, by where it starts. Which of them a repair took back + // isn't known, so its key word and the words that takes back are found among them all. + let mut taken_back: BTreeMap> = BTreeMap::new(); for (cue_start, run_ends) in cue_runs(words, repair) { // Speech-to-text ends a sentence where the speaker paused, so a cue that opens one may // take back the end of the one before ("I left my charger in the garage. Actually, the @@ -124,25 +164,35 @@ pub(super) fn spans(words: &[SaidWord], repair: &SelfRepair, placeholders: &Word .take(CORRECTION_PHRASE_WORDS) .find(|word| content(word)) .is_some_and(|word| repair.fact_kind(word, false).is_some())); + let phrase = &words[end..end + phrase_length(end, words).min(CORRECTION_PHRASE_WORDS)]; if (end < words.len() && repair.is_cue(&words[end].word)) || !among_corrected || (crosses && !retracts_statement && !all_corrected && !stands_in) + || repair.leaves_taken_back(words, start..cue_start, phrase) { continue; } if !retracts_statement { - let length = phrase_length(end, words).min(CORRECTION_PHRASE_WORDS); - if !repair.takes_back_facts(&words[end..end + length], corrected, placeholders) { + if !repair.takes_back_facts(phrase, corrected, placeholders) { continue; } spans.spare[end].form_union(&corrected_words); } + taken_back.entry(end).or_default().extend(start..cue_start); spans.ends[start].push(end); spans.corrected[end].form_union(&corrected_words); } } } } + for (end, indices) in taken_back { + let phrase = &words[end..end + phrase_length(end, words).min(CORRECTION_PHRASE_WORDS)]; + let corrected: Vec = indices.into_iter().map(|index| words[index].clone()).collect(); + if let Some(key) = repair.key_word(phrase, &corrected) { + spans.keys.push(end + key); + spans.taken[end] = repair.stood_in_for(phrase, key, &corrected); + } + } spans } @@ -235,9 +285,12 @@ fn once(words: &[SaidWord], repair: &SelfRepair, placeholders: &WordSet) -> Vec< || restated.as_ref().is_some_and(|restated| { !repair.restates(&words[restated.clone()], &words[corrected.clone()]) }) - || !(repair.relates(&words[start], phrase, weak) || replaces()) + || !(repair.relates(&words[start], phrase, weak) + || replaces() + || repair.takes_back_first(&words[corrected.clone()], phrase)) || !(repair.relates(&words[corrected.end - 1], phrase, weak) || replaces()) || !repair.takes_back_facts(phrase, &words[corrected.clone()], placeholders) + || repair.leaves_taken_back(words, corrected.clone(), phrase) { continue; } @@ -252,8 +305,21 @@ fn once(words: &[SaidWord], repair: &SelfRepair, placeholders: &WordSet) -> Vec< } /// `words` with `phrase` put in place of `corrected`, and `cues` taken out. The phrase ends a -/// sentence when it replaced words that did. -fn rewrite(words: &[SaidWord], corrected: Range, cues: Range, phrase: Range) -> Vec { +/// sentence when it replaced words that did. A phrase an earlier correction opened ends where its +/// words stop following each other, as when this one takes a cue out of it ("email no one"). +fn rewrite(said: &[SaidWord], corrected: Range, cues: Range, phrase: Range) -> Vec { + let mut words = said.to_vec(); + let count = words.len(); + for segment in [ + 0..corrected.start, + phrase.clone(), + corrected.end..cues.start, + phrase.end..count, + ] { + for index in segment.clone() { + words[index].opens_phrase = words[index].opens_phrase.min(segment.end - index); + } + } let mut moved = words[phrase.clone()].to_vec(); let length = moved.len(); moved[0].opens_phrase = length; @@ -291,13 +357,24 @@ fn phrase_starts(end: usize, words: &[SaidWord], repair: &SelfRepair) -> Vec<(us starts } -/// Where each run of cues can end, by where it starts, in order of start. The ends of a run -/// follow the order of the policy's cues, which decides which rewrites [`MAX_REWRITES`] keeps. +/// Where each run of cues can end, by where it starts, in order of start; a cue misheard as another +/// word ([`CUE_SOUND_ALIKES`]) may end it. The ends of a run follow the order of the policy's cues, +/// which decides which rewrites [`MAX_REWRITES`] keeps. fn cue_runs(words: &[SaidWord], repair: &SelfRepair) -> BTreeMap> { let mut cue_ends: BTreeMap> = BTreeMap::new(); for cue in &repair.cues { for start in occurrences(cue, words) { - cue_ends.entry(start).or_default().push(start + cue.len()); + let end = start + cue.len(); + let ends = cue_ends.entry(start).or_default(); + ends.push(end); + // A cue speech-to-text misheard, just after one it didn't, goes with it ("the monitor, + // wait, node, the router"). + if words + .get(end) + .is_some_and(|word| CUE_SOUND_ALIKES.iter().any(|alike| same(&word.word, alike))) + { + ends.push(end + 1); + } } } fn run_ends(start: usize, cue_ends: &BTreeMap>) -> Vec { @@ -446,6 +523,208 @@ impl SelfRepair { .iter() .any(|other| same(&other.word, text) || word_forms::are_forms(&other.word, text)) } + + /// Whether `word` says something a correction can take back or say instead: it holds more than + /// the grammar together, and isn't a filler, a cue, or a cue as speech-to-text misheard it + /// ("know" for "no"). + fn carries_meaning(&self, word: &SaidWord) -> bool { + let text = word.word.as_str(); + !self.is_function_word(text) + && !self.is_filler(text) + && !self.is_cue(text) + && !CUE_SOUND_ALIKES.iter().any(|alike| same(text, alike)) + } + + /// Whether `word` is likely a word that holds the grammar together, misheard ("thee" for "the", + /// "theon" for "then"): no fact or name, and close to one. + fn is_misheard_function_word(&self, word: &SaidWord) -> bool { + let length = s::character_count(&word.word); + // Words further apart in length can't be as alike. + let near = |function_word: &str| { + let other = s::character_count(function_word); + length.abs_diff(other) as f64 <= (1.0 - MIN_MISHEARD_SIMILARITY) * length.max(other) as f64 + }; + !word.may_be_name + && self.fact_kind(word, false).is_none() + && self.function_words.iter().any(|function_word| { + near(function_word) + && edit_distance::normalized_similarity(&word.word, function_word) >= MIN_MISHEARD_SIMILARITY + }) + } + + /// Where the key word of a correction's `phrase` is: the first word that carries meaning and + /// isn't among the `corrected` words or a misheard word that only holds the grammar together, + /// which says what the correction says instead ("green" in "the blue room, sorry, the green + /// room"). No repair may change it into another word, so an answer can't keep what was + /// corrected and lose the correction. + pub(super) fn key_word(&self, phrase: &[SaidWord], corrected: &[SaidWord]) -> Option { + phrase.iter().position(|word| { + self.carries_meaning(word) && !said_in(word, corrected) && !self.is_misheard_function_word(word) + }) + } + + /// What sort of thing `word` says, which a key word takes back one of its own sort of. + fn sort(&self, word: &SaidWord, may_is_month: bool) -> Sort { + match self.fact_kind(word, may_is_month) { + None if word.is_name => Sort::Name, + None => Sort::Word, + Some(FactKind::Negation) => Sort::Negation, + Some(FactKind::Unit) => Sort::Unit, + Some(FactKind::Number) if word_forms::is_number(&word.word) => Sort::Number, + Some(FactKind::Number) if DAYS.iter().any(|day| same(&word.word, day)) => Sort::Day, + Some(FactKind::Number) if is_month(word) || same(&word.word, "may") => Sort::Month, + Some(FactKind::Number) => Sort::Time, + } + } + + /// The `corrected` words a correction whose `phrase` goes back takes back, which no repair may + /// write again once it has a key word: those that carry meaning and that the phrase doesn't say + /// again ("Tuesday" for "Wednesday", "billing" for "the login service"). + pub(super) fn taken_back(&self, phrase: &[SaidWord], corrected: &[SaidWord]) -> WordSet { + WordSet::new( + corrected + .iter() + .filter(|word| self.carries_meaning(word) && !said_in(word, phrase)) + .map(|word| &word.word), + ) + } + + /// Of the words a phrase of Medium's corrections may correct (`corrected`, all of them, since + /// which a repair took back isn't known), the ones its key word stands in for, which no repair + /// may write again: the one where the phrase puts it, found by a word the phrase says again + /// after it ("blue" in "the blue room, sorry, the green room") or else before it ("Sam" in + /// "send it to Sam, sorry, to Priya"); without one, for a fact, the corrected facts ("three" in + /// "three servers, sorry, four"), and for a name, the one name corrected. Other corrected words + /// may be written again ("I'm meeting divya at the station, actually nikhil" → "I'm meeting + /// Nikhil at the station"). + fn stood_in_for(&self, phrase: &[SaidWord], key: usize, corrected: &[SaidWord]) -> WordSet { + let may_is_month = corrected.iter().any(is_month); + let sort = self.sort(&phrase[key], may_is_month); + let taken = |word: &SaidWord| { + self.carries_meaning(word) && self.sort(word, may_is_month) == sort && !said_in(word, phrase) + }; + // The corrected word as far from the anchor said again as the key word is in the phrase. + let at = |anchor: usize, offset: isize| { + corrected + .iter() + .rposition(|word| same(&word.word, &phrase[anchor].word)) + .and_then(|index| index.checked_add_signed(offset)) + .and_then(|index| corrected.get(index)) + .filter(|word| taken(word)) + }; + let after = (key + 1..phrase.len()) + .find(|&index| self.carries_meaning(&phrase[index]) && said_in(&phrase[index], corrected)); + let before = (0..key).rev().find(|&index| said_in(&phrase[index], corrected)); + let found = match (after, before) { + (Some(anchor), _) => Some(at(anchor, key as isize - anchor as isize)), + (None, Some(anchor)) => Some(at(anchor, (key - anchor) as isize)), + (None, None) => None, + }; + match found { + Some(word) => WordSet::new(word.map(|word| &word.word)), + None if sort == Sort::Name => { + let mut names = corrected.iter().filter(|word| taken(word)); + match (names.next(), names.next()) { + (Some(name), None) => WordSet::new([&name.word]), + _ => WordSet::default(), + } + } + None if sort != Sort::Word => WordSet::new( + corrected + .iter() + .filter(|word| self.fact_kind(word, may_is_month).is_some() && !said_in(word, phrase)) + .map(|word| &word.word), + ), + None => WordSet::default(), + } + } + + /// Whether a reading of a correction would keep the word its key word takes back, just before + /// the `corrected` words of `words`: its `phrase` says each of them that carries meaning again, + /// after the key word, so it corrects that word too ("the blue room, sorry, the green room" + /// corrects "blue room", and is never "the blue green room"); or the key word is a fact or a + /// name, none of the corrected words is one of its sort, and the word before them that + /// carries meaning is ("three servers, sorry, four" corrects "three", and is never "three, + /// four servers"; "Invite Sam to the launch. Sorry, Priya." corrects "Sam", and is never + /// "Invite Sam and Priya to the launch."). + pub(super) fn leaves_taken_back(&self, words: &[SaidWord], corrected: Range, phrase: &[SaidWord]) -> bool { + corrected.start > 0 + && !words[corrected.start - 1].ends_sentence + && (self.takes_back_first(&words[corrected.start - 1..corrected.end], phrase) + || self.leaves_its_sort(words, corrected, phrase)) + } + + /// Whether the key word of `phrase` is a fact or a name, none of the `corrected` words of + /// `words` is of its sort, and the last word before them in their sentence that carries + /// meaning is. + fn leaves_its_sort(&self, words: &[SaidWord], corrected: Range, phrase: &[SaidWord]) -> bool { + let corrected_words = &words[corrected.clone()]; + let Some(before) = words[..corrected.start] + .iter() + .rev() + .take_while(|word| !word.ends_sentence) + .find(|word| self.carries_meaning(word)) + else { + return false; + }; + let may_is_month = corrected_words.iter().any(is_month); + let sort = self.sort(before, may_is_month); + // The key word, the costliest to find, last. + sort != Sort::Word + && !said_in(before, phrase) + && !corrected_words + .iter() + .any(|word| self.carries_meaning(word) && self.sort(word, may_is_month) == sort) + && self + .key_word(phrase, corrected_words) + .is_some_and(|key| self.sort(&phrase[key], may_is_month) == sort) + } + + /// Whether the key word of `phrase` takes back the first of the `corrected` words, and the + /// phrase says each of the others that carries meaning again after it: "the green room" for + /// "blue room", "the login service" for "billing service". + pub(super) fn takes_back_first(&self, corrected: &[SaidWord], phrase: &[SaidWord]) -> bool { + let (first, rest) = (&corrected[0], &corrected[1..]); + if !self.carries_meaning(first) + || said_in(first, phrase) + || rest + .iter() + .any(|word| self.carries_meaning(word) && !said_in(word, phrase)) + { + return false; + } + let Some(said_again) = phrase + .iter() + .position(|word| self.carries_meaning(word) && said_in(word, rest)) + else { + return false; + }; + self.key_word(phrase, corrected) + .is_some_and(|key| key < said_again && self.sort(first, false) == self.sort(&phrase[key], false)) + } +} + +/// What sort of thing a word says, finer than [`FactKind`], for what a key word takes back. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +enum Sort { + Number, + Day, + Month, + /// Another word of time ("tomorrow", "noon", "week"). + Time, + Unit, + Negation, + /// A name, capitalised where no sentence starts. + Name, + /// Any other word that carries meaning. + Word, +} + +/// Whether `word` is among `words`, as itself or another form of it. +fn said_in(word: &SaidWord, words: &[SaidWord]) -> bool { + words + .iter() + .any(|other| same(&other.word, &word.word) || word_forms::are_forms(&other.word, &word.word)) } fn is_month(word: &SaidWord) -> bool { diff --git a/linux-windows/crates/cleanup/src/self_repair/tests.rs b/linux-windows/crates/cleanup/src/self_repair/tests.rs index 6e15203..9ab6ada 100644 --- a/linux-windows/crates/cleanup/src/self_repair/tests.rs +++ b/linux-windows/crates/cleanup/src/self_repair/tests.rs @@ -762,3 +762,170 @@ fn a_policy_that_retracts_nothing_resolves_no_correction() { fn words_are_canonically_equivalent() { assert_accepted(&[("We met at the caf\u{E9}.", "We met at the cafe\u{301}.")]); } + +/// A correction keeps its meaning: the word it says instead stays, as itself or a word like it, +/// and what it takes back isn't written again, however a repair could otherwise line them up. +#[test] +fn a_correction_keeps_its_meaning() { + let green = "book the blue room sorry the green room for friday"; + assert_rejected(&[ + (green, "Book the blue room for Friday."), + (green, "Book the room for Friday."), + (green, "Book the blue green room for Friday."), + ( + "Book the blue room, sorry, the green room for Friday.", + "Book the blue room for Friday.", + ), + ( + "send it to the finance team make that the legal team today", + "Send it to the finance team today.", + ), + ( + "ask the designer i mean the developer to check it", + "Ask the designer to check it.", + ), + ( + "we're migrating the load balancer make that the scheduler next week", + "We're migrating the load balancer next week.", + ), + ("paint the fence red no wait blue", "Paint the fence red."), + ("we need three servers sorry four", "We need four three servers."), + ("send it to sam sorry to priya", "Send it to Priya Sam."), + ( + "I left my charger in the garage. Actually, the lobby.", + "I left my charger in the garage lobby.", + ), + ( + "The demo is on Tuesday at noon. Sorry, Wednesday.", + "The demo is on Tuesday Wednesday at noon.", + ), + ( + "Invite Sam to the launch. Sorry, Priya.", + "Invite Sam and Priya to the launch.", + ), + ("fuel efficiency in cars sorry busses", "Fuel efficiency in trains."), + ("i wanted to say sorry to jo", "I wanted to say it to Jo."), + ]); + assert_accepted(&[ + (green, "Book the green room for Friday."), + ( + "send it to the finance team make that the legal team today", + "Send it to the legal team today.", + ), + ( + "ask the designer i mean the developer to check it", + "Ask the developer to check it.", + ), + ( + "we're migrating the load balancer make that the scheduler next week", + "We're migrating the scheduler next week.", + ), + ("paint the fence red no wait blue", "Paint the fence blue."), + ("we need three servers sorry four", "We need four servers."), + ("send it to sam sorry to priya", "Send it to Priya."), + ( + "the demo is next week sorry the after next", + "The demo is the week after next.", + ), + ( + "i'm meeting divya at the station actually nikhil", + "I'm meeting Nikhil at the station.", + ), + ( + "The billing service goes live next Tuesday. Sorry, I mean the login service.", + "The login service goes live next Tuesday.", + ), + ("fuel efficiency in cars sorry busses", "Fuel efficiency in buses."), + ]); +} + +/// A fact or a name a correction says instead takes back one of its own sort, so no reading of it +/// keeps that one beside it: one that takes back only the words after it is no reading at all. +#[test] +fn a_correction_never_keeps_what_it_takes_back_beside_it() { + let servers = "we need three servers sorry four"; + let launch = "Invite Sam to the launch. Sorry, Priya."; + let station = "I am meeting Divya at the station. Actually, Nikhil."; + assert_rejected(&[ + (servers, "We need three four servers."), + (servers, "We need three or four servers."), + ( + "we need three of the servers sorry four", + "We need three of the four servers.", + ), + (launch, "Invite Sam and Priya to the launch."), + (launch, "Invite Sam, Priya to the launch."), + ( + "Invite Sam to the launch, sorry, Priya.", + "Invite Sam and Priya to the launch.", + ), + (station, "I am meeting Divya and Nikhil at the station."), + (station, "I am meeting Divya Nikhil at the station."), + ("Call me on Tuesday, no, Wednesday.", "Call me on Tuesday or Wednesday."), + ( + "We have two weeks left. Sorry, three.", + "We have two or three weeks left.", + ), + ]); + assert_accepted(&[ + (servers, "We need four servers."), + ( + "two people said we need servers sorry four", + "Two people said we need four servers.", + ), + ( + "we need three of the servers sorry four", + "We need four of the servers.", + ), + (launch, "Invite Priya to the launch."), + ("Invite Sam to the launch, sorry, Priya.", "Invite Priya to the launch."), + (station, "I am meeting Nikhil at the station."), + ("meet me at the station sorry at six", "Meet me at six."), + ("Ask Sam to email Ana, sorry, Priya.", "Ask Sam to email Priya."), + ("Ask Sam to email Ana, sorry, Priya.", "Ask Priya to email Ana."), + ("We have two weeks left. Sorry, three.", "We have three weeks left."), + ]); +} + +/// A cue speech-to-text misheard just after one it heard goes with it, and a misheard word that only +/// holds the grammar together says nothing a correction says instead. +#[test] +fn misheard_cues_and_small_words_say_nothing_a_correction_says() { + assert_accepted(&[ + ( + "Can you bring the monitor, wait node, the router to the meeting?", + "Can you bring the router to the meeting?", + ), + ( + "The city is buying more electric buses, no weight vans.", + "The city is buying more electric vans.", + ), + ( + "Dinner is on Saturday. Sorry, no theon Tuesday.", + "Dinner is on Tuesday.", + ), + ( + "The product review is on the 12th of October. No sorry thee of November.", + "The product review is on the 12th of November.", + ), + ]); +} + +/// "No" in "no one" is a cue too, so one correction can take words out of the phrase another moved +/// back, and that phrase then ends where its words do. +#[test] +fn a_phrase_a_later_correction_cuts_ends_where_its_words_do() { + let raw = "I'll call no one now. Scratch that. I'll email no one instead."; + assert_accepted(&[(raw, "I'll email no one instead.")]); + assert_rejected(&[(raw, "I'll email Noah instead.")]); +} + +/// An abbreviation's full stop ends a sentence only before a capital, so "at 3 p.m. today" is one +/// sentence and its time can be corrected. +#[test] +fn an_abbreviation_ends_a_sentence_only_before_a_capital() { + assert_accepted(&[( + "The shop closes at 3 p.m. today. Sorry, I meant at 10 a.m.", + "The shop closes at 10 a.m. today.", + )]); +} diff --git a/linux-windows/crates/cleanup/src/words.rs b/linux-windows/crates/cleanup/src/words.rs index 25bac3c..19a8451 100644 --- a/linux-windows/crates/cleanup/src/words.rs +++ b/linux-windows/crates/cleanup/src/words.rs @@ -61,6 +61,10 @@ impl WordSet { self.0.contains(s::canonical_key(word).as_ref()) } + pub(crate) fn iter(&self) -> impl Iterator { + self.0.iter().map(String::as_str) + } + /// Adds every word of `other`, as `formUnion(_:)`. pub(crate) fn form_union(&mut self, other: &WordSet) { self.0.extend(other.0.iter().cloned()); From 8348da92b463d2d320c87b857046045f28fdc0e6 Mon Sep 17 00:00:00 2001 From: Purinda Gunasekara Date: Fri, 2 Oct 2026 20:03:45 +1000 Subject: [PATCH 2/2] Take back a sentence started again, and no more than a correction says MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two kinds of wrong answer passed Deep's check (SelfRepair, in Swift and Rust), including the check 1.1.0 ships with: - A new instruction spliced into the old one: "Ship it to Prague, scratch that, hold it until September." → "Ship it to hold it until September." The check read the phrase as standing in for "Prague", and its grammar fix may add "it" and "to". Now a phrase that opens the way its sentence did starts that sentence again, and takes back from the sentence's first word that carries meaning. The phrase's first word is that word ("Book …. Scratch that. Book …"); or carries meaning in its place, with its second the word said next ("Ship it" → "hold it"); or follows a word that says nothing new ("just ship it"). - More taken back than the corrected words said again: "the physio team sorry not physio nursing will join the call at noon" → "The nursing will join the call at noon.", and "Kofi's brother, no wait, not brother, cousin, …" → "Cousin is hosting …". After "not", a correction now takes back the words said again, and the words beside them stay. A retrained Deep adapter wrote the first in all four of Standard's cases of that form. The shipped adapter and a retrained one wrote the second. Still accepted: a correction that takes back a whole sentence so far without saying any of it again ("insurance for ferries no wait boats went up again" → "Boats went up again."). Without capitals it reads like a false start ("alice knows sorry tara will lead the design review" → "Tara will lead the design review."), which must pass. Through the Rust check, one right answer among 19,826 training and test targets is newly rejected: a false start whose restated name leaves a verb behind ("Nia knows sorry, not Nia Matteo will lead the design review."). Of 6,124 recorded answers from three Deep adapters, ten are newly rejected, all of them wrong, and none is newly accepted. Guard fixtures: 68 new cases, the inputs of SelfRepairTests' correction tests, and no earlier verdict changes. The Swift CleanupTests (194) and lt-cleanup's 202 tests pass; clippy and rustfmt are clean. Co-Authored-By: Claude Opus 5.5 --- Fixtures/cleanup/guard.jsonl | 68 ++++++++++++++++ .../Cleanup/SelfRepairCorrections.swift | 44 +++++++++-- .../CleanupFixtures+DeepGuardCases.swift | 77 ++++++++++++++++++- .../Tests/CleanupTests/SelfRepairTests.swift | 45 +++++++++++ .../cleanup/src/self_repair/corrections.rs | 54 ++++++++++++- .../crates/cleanup/src/self_repair/tests.rs | 51 ++++++++++++ 6 files changed, 330 insertions(+), 9 deletions(-) diff --git a/Fixtures/cleanup/guard.jsonl b/Fixtures/cleanup/guard.jsonl index f447070..d3b02e1 100644 --- a/Fixtures/cleanup/guard.jsonl +++ b/Fixtures/cleanup/guard.jsonl @@ -837,3 +837,71 @@ {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I'm free on Wednesday."},"parts":{"cleanedCues":0,"cleanedWords":["i'm","free","on","wednesday"],"droppedContent":3,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[]},{"deleted":[4,5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,1,2,null,null,3],"movesOrDropsName":true,"names":[4,6],"rawCues":1,"rawWords":["i'm","not","free","on","tuesday","sorry","wednesday"],"similarity":"0.5384615384615384","wordRatio":"0.5714285714285714"},"placeholders":[],"policy":{"negations":[]},"raw":"I'm not free on Tuesday. Sorry, Wednesday.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"}]],"said":[{"startsSentence":true,"word":"i'm"},{"word":"not"},{"word":"free"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'm"},{"word":"free"},{"word":"on"},{"isCapitalised":true,"word":"wednesday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The buses are late."},"parts":{"cleanedCues":0,"cleanedWords":["the","buses","are","late"],"droppedContent":0,"gaps":[{"deleted":[1],"inserted":[1]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["the","busses","are","late"],"similarity":"0.9473684210526316","wordRatio":"1.0"},"placeholders":[],"policy":{"minRespellingSimilarity":"0.95"},"raw":"The busses are late.","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"the"},{"word":"busses"},{"word":"are"},{"endsSentence":true,"word":"late"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"buses"},{"word":"are"},{"word":"late"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"The buses are late."},"light":{"accepted":"The buses are late."},"medium":{"accepted":"The buses are late."},"none":{"accepted":"The buses are late."}}} {"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"So the bus is late."},"parts":{"cleanedCues":0,"cleanedWords":["so","the","bus","is","late"],"droppedContent":1,"gaps":[{"deleted":[1],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,1,2,3,4],"movesOrDropsName":false,"names":[],"rawCues":0,"rawWords":["so","um","the","bus","is","late"],"similarity":"0.8571428571428572","wordRatio":"0.8333333333333334"},"placeholders":[],"policy":{"fillers":["So"]},"raw":"So um the bus is late.","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"so"},{"word":"um"},{"word":"the"},{"word":"bus"},{"word":"is"},{"endsSentence":true,"word":"late"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"so"},{"word":"the"},{"word":"bus"},{"word":"is"},{"word":"late"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"count":1,"description":"dropped a word that carries meaning","reason":"droppedContent"}},"light":{"rejected":{"count":1,"description":"dropped a word that carries meaning","reason":"droppedContent"}},"medium":{"rejected":{"count":1,"description":"dropped a word that carries meaning","reason":"droppedContent"}},"none":{"rejected":{"count":1,"description":"dropped a word that carries meaning","reason":"droppedContent"}}}} +{"deepMultiline":{"accepted":"Book the green room for Friday."},"outcome":{"completed":"Book the green room for Friday."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","green","room","for","friday"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,2,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","blue","room","sorry","the","green","room","for","friday"],"similarity":"0.6","wordRatio":"0.6"},"placeholders":[],"raw":"book the blue room sorry the green room for friday","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["book"],"word":"the"},{"word":"green"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],[{"startsSentence":true,"word":"book"},{"word":"the"},{"opensPhrase":2,"spare":["blue"],"word":"the"},{"word":"green"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}]],"said":[{"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"isCapitalised":true,"word":"friday"}]},"verdicts":{"deep":{"accepted":"Book the green room for Friday."},"high":{"accepted":"Book the green room for Friday."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Book the green room for Friday."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Send it to the legal team today."},"outcome":{"completed":"Send it to the legal team today."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","the","legal","team","today"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[4,5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,null,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["send","it","to","the","finance","team","make","that","the","legal","team","today"],"similarity":"0.5344827586206897","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"send it to the finance team make that the legal team today","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["send"],"word":"the"},{"word":"legal"},{"word":"it"},{"word":"to"},{"word":"the"},{"word":"finance"},{"word":"team"},{"word":"team"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"the"},{"opensPhrase":2,"spare":["finance"],"word":"the"},{"word":"legal"},{"word":"team"},{"word":"team"},{"endsSentence":true,"word":"today"}]],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"the"},{"word":"finance"},{"word":"team"},{"isCue":true,"word":"make"},{"isCue":true,"word":"that"},{"word":"the"},{"word":"legal"},{"word":"team"},{"endsSentence":true,"word":"today"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"the"},{"word":"legal"},{"word":"team"},{"word":"today"}]},"verdicts":{"deep":{"accepted":"Send it to the legal team today."},"high":{"accepted":"Send it to the legal team today."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Send it to the legal team today."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Ask the developer to check it."},"outcome":{"completed":"Ask the developer to check it."},"parts":{"cleanedCues":0,"cleanedWords":["ask","the","developer","to","check","it"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,2,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["ask","the","designer","i","mean","the","developer","to","check","it"],"similarity":"0.5918367346938775","wordRatio":"0.6"},"placeholders":[],"raw":"ask the designer i mean the developer to check it","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["ask"],"word":"the"},{"word":"developer"},{"word":"the"},{"word":"designer"},{"word":"to"},{"word":"check"},{"endsSentence":true,"word":"it"}],[{"opensPhrase":3,"spare":["ask"],"word":"the"},{"word":"developer"},{"word":"to"},{"word":"the"},{"word":"designer"},{"word":"check"},{"endsSentence":true,"word":"it"}]],"said":[{"startsSentence":true,"word":"ask"},{"word":"the"},{"word":"designer"},{"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"developer"},{"word":"to"},{"word":"check"},{"endsSentence":true,"word":"it"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ask"},{"word":"the"},{"word":"developer"},{"word":"to"},{"word":"check"},{"word":"it"}]},"verdicts":{"deep":{"accepted":"Ask the developer to check it."},"high":{"accepted":"Ask the developer to check it."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Ask the developer to check it."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"We're migrating the scheduler next week."},"outcome":{"completed":"We're migrating the scheduler next week."},"parts":{"cleanedCues":0,"cleanedWords":["we're","migrating","the","scheduler","next","week"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[3,4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,null,null,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we're","migrating","the","load","balancer","make","that","the","scheduler","next","week"],"similarity":"0.582089552238806","wordRatio":"0.5454545454545454"},"placeholders":[],"raw":"we're migrating the load balancer make that the scheduler next week","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we're"},{"opensPhrase":2,"spare":["migrating"],"word":"the"},{"word":"scheduler"},{"word":"the"},{"word":"load"},{"word":"balancer"},{"word":"next"},{"endsSentence":true,"word":"week"}],[{"startsSentence":true,"word":"we're"},{"word":"migrating"},{"word":"the"},{"opensPhrase":2,"spare":["load"],"word":"the"},{"word":"scheduler"},{"word":"balancer"},{"word":"next"},{"endsSentence":true,"word":"week"}]],"said":[{"startsSentence":true,"word":"we're"},{"word":"migrating"},{"word":"the"},{"word":"load"},{"word":"balancer"},{"isCue":true,"word":"make"},{"isCue":true,"word":"that"},{"word":"the"},{"word":"scheduler"},{"word":"next"},{"endsSentence":true,"word":"week"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we're"},{"word":"migrating"},{"word":"the"},{"word":"scheduler"},{"word":"next"},{"word":"week"}]},"verdicts":{"deep":{"accepted":"We're migrating the scheduler next week."},"high":{"accepted":"We're migrating the scheduler next week."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"We're migrating the scheduler next week."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Paint the fence blue."},"outcome":{"completed":"Paint the fence blue."},"parts":{"cleanedCues":0,"cleanedWords":["paint","the","fence","blue"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["paint","the","fence","red","no","wait","blue"],"similarity":"0.625","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"paint the fence red no wait blue","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["paint"],"word":"blue"},{"word":"the"},{"word":"fence"},{"word":"red"}],[{"startsSentence":true,"word":"paint"},{"word":"the"},{"opensPhrase":1,"spare":["fence"],"word":"blue"},{"word":"red"}]],"said":[{"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"fence"},{"word":"red"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"word":"blue"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"fence"},{"word":"blue"}]},"verdicts":{"deep":{"accepted":"Paint the fence blue."},"high":{"accepted":"Paint the fence blue."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Paint the fence blue."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"We need four servers."},"outcome":{"completed":"We need four servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four","servers"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[2,3,4],"inserted":[]},{"deleted":[],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,2],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","sorry","four"],"similarity":"0.5","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"we need three servers sorry four","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"},{"word":"servers"}]},"verdicts":{"deep":{"accepted":"We need four servers."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Send it to Priya."},"outcome":{"completed":"Send it to Priya."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","priya"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["send","it","to","sam","sorry","to","priya"],"similarity":"0.5517241379310345","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"send it to sam sorry to priya","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["send"],"word":"to"},{"word":"priya"},{"word":"it"},{"word":"to"},{"word":"sam"}]],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"sam"},{"isCue":true,"word":"sorry"},{"word":"to"},{"endsSentence":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"priya"}]},"verdicts":{"deep":{"accepted":"Send it to Priya."},"high":{"accepted":"Send it to Priya."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Send it to Priya."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The demo is the week after next."},"outcome":{"completed":"The demo is the week after next."},"parts":{"cleanedCues":0,"cleanedWords":["the","demo","is","the","week","after","next"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]},{"deleted":[],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","demo","is","next","week","sorry","the","after","next"],"similarity":"0.6666666666666667","wordRatio":"0.7777777777777778"},"placeholders":[],"raw":"the demo is next week sorry the after next","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"opensPhrase":2,"spare":["next"],"word":"the"},{"word":"after"},{"word":"week"},{"endsSentence":true,"word":"next"}],[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"opensPhrase":3,"spare":["next"],"word":"the"},{"word":"after"},{"word":"next"},{"word":"week"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"next"},{"word":"week"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"after"},{"endsSentence":true,"word":"next"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"the"},{"word":"week"},{"word":"after"},{"word":"next"}]},"verdicts":{"deep":{"accepted":"The demo is the week after next."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"I'm meeting Nikhil at the station."},"outcome":{"completed":"I'm meeting Nikhil at the station."},"parts":{"cleanedCues":0,"cleanedWords":["i'm","meeting","nikhil","at","the","station"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[2],"inserted":[2]},{"deleted":[6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,3,4,5,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i'm","meeting","divya","at","the","station","actually","nikhil"],"similarity":"0.5625","wordRatio":"0.75"},"placeholders":[],"raw":"i'm meeting divya at the station actually nikhil","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"i'm"},{"word":"meeting"},{"word":"divya"},{"word":"at"},{"word":"the"},{"word":"station"},{"isCue":true,"word":"actually"},{"endsSentence":true,"word":"nikhil"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'm"},{"word":"meeting"},{"isCapitalised":true,"word":"nikhil"},{"word":"at"},{"word":"the"},{"word":"station"}]},"verdicts":{"deep":{"accepted":"I'm meeting Nikhil at the station."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The login service goes live next Tuesday."},"outcome":{"completed":"The login service goes live next Tuesday."},"parts":{"cleanedCues":0,"cleanedWords":["the","login","service","goes","live","next","tuesday"],"droppedContent":4,"droppedRun":6,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[7,8,9,10,11,12],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,5,6,null,null,null,null,null,null],"movesOrDropsName":false,"names":[6],"rawCues":2,"rawWords":["the","billing","service","goes","live","next","tuesday","sorry","i","mean","the","login","service"],"similarity":"0.5068493150684932","wordRatio":"0.5384615384615384"},"placeholders":[],"raw":"The billing service goes live next Tuesday. Sorry, I mean the login service.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["billing"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"the"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["service"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"the"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["goes"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"the"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"word":"goes"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["live"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"the"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["billing"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["service"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["goes"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"word":"goes"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["live"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"login"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["billing","service"],"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"login"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["billing"],"word":"the"},{"word":"login"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"opensPhrase":2,"spare":["service"],"word":"the"},{"word":"login"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"opensPhrase":2,"spare":["goes"],"word":"the"},{"word":"login"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"word":"goes"},{"opensPhrase":2,"spare":["live"],"word":"the"},{"word":"login"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"endsSentence":true,"word":"service"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":3,"spare":["billing","service"],"word":"the"},{"word":"login"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"billing"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"login"},{"endsSentence":true,"word":"service"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"login"},{"word":"service"},{"word":"goes"},{"word":"live"},{"word":"next"},{"isCapitalised":true,"word":"tuesday"}]},"verdicts":{"deep":{"accepted":"The login service goes live next Tuesday."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Fuel efficiency in buses."},"outcome":{"completed":"Fuel efficiency in buses."},"parts":{"cleanedCues":0,"cleanedWords":["fuel","efficiency","in","buses"],"droppedContent":2,"gaps":[{"deleted":[3,4,5],"inserted":[3]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["fuel","efficiency","in","cars","sorry","busses"],"similarity":"0.6666666666666667","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"fuel efficiency in cars sorry busses","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["fuel"],"word":"busses"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"fuel"},{"opensPhrase":1,"spare":["efficiency"],"word":"busses"},{"word":"in"},{"word":"cars"}]],"said":[{"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"busses"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"buses"}]},"verdicts":{"deep":{"accepted":"Fuel efficiency in buses."},"high":{"accepted":"Fuel efficiency in buses."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Fuel efficiency in buses."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Book the blue room for Friday."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","blue","room","for","friday"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","blue","room","sorry","the","green","room","for","friday"],"similarity":"0.5800000000000001","wordRatio":"0.6"},"placeholders":[],"raw":"book the blue room sorry the green room for friday","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["book"],"word":"the"},{"word":"green"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],[{"startsSentence":true,"word":"book"},{"word":"the"},{"opensPhrase":2,"spare":["blue"],"word":"the"},{"word":"green"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}]],"said":[{"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"for"},{"isCapitalised":true,"word":"friday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Book the room for Friday."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","room","for","friday"],"droppedContent":4,"droppedRun":4,"gaps":[{"deleted":[2],"inserted":[]},{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,2,null,null,null,null,3,4],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","blue","room","sorry","the","green","room","for","friday"],"similarity":"0.48","wordRatio":"0.5"},"placeholders":[],"raw":"book the blue room sorry the green room for friday","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["book"],"word":"the"},{"word":"green"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],[{"startsSentence":true,"word":"book"},{"word":"the"},{"opensPhrase":2,"spare":["blue"],"word":"the"},{"word":"green"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}]],"said":[{"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"room"},{"word":"for"},{"isCapitalised":true,"word":"friday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Book the blue green room for Friday."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","blue","green","room","for","friday"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","blue","room","sorry","the","green","room","for","friday"],"similarity":"0.7","wordRatio":"0.7"},"placeholders":[],"raw":"book the blue room sorry the green room for friday","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["book"],"word":"the"},{"word":"green"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],[{"startsSentence":true,"word":"book"},{"word":"the"},{"opensPhrase":2,"spare":["blue"],"word":"the"},{"word":"green"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}]],"said":[{"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"endsSentence":true,"word":"friday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"green"},{"word":"room"},{"word":"for"},{"isCapitalised":true,"word":"friday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Book the blue room for Friday."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","blue","room","for","friday"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4,5],"movesOrDropsName":false,"names":[9],"rawCues":1,"rawWords":["book","the","blue","room","sorry","the","green","room","for","friday"],"similarity":"0.5800000000000001","wordRatio":"0.6"},"placeholders":[],"raw":"Book the blue room, sorry, the green room for Friday.","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["book"],"word":"the"},{"word":"green"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"friday"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"opensPhrase":2,"spare":["blue"],"word":"the"},{"word":"green"},{"word":"room"},{"word":"room"},{"word":"for"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"friday"}],[{"opensPhrase":5,"spare":["book"],"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"friday"},{"word":"the"},{"word":"blue"},{"word":"room"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"isCue":true,"word":"sorry"},{"word":"the"},{"word":"green"},{"word":"room"},{"word":"for"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"friday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"blue"},{"word":"room"},{"word":"for"},{"isCapitalised":true,"word":"friday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Send it to the finance team today."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","the","finance","team","today"],"droppedContent":3,"droppedRun":5,"gaps":[{"deleted":[6,7,8,9,10],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,5,null,null,null,null,null,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["send","it","to","the","finance","team","make","that","the","legal","team","today"],"similarity":"0.5689655172413793","wordRatio":"0.5833333333333334"},"placeholders":[],"raw":"send it to the finance team make that the legal team today","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["send"],"word":"the"},{"word":"legal"},{"word":"it"},{"word":"to"},{"word":"the"},{"word":"finance"},{"word":"team"},{"word":"team"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"the"},{"opensPhrase":2,"spare":["finance"],"word":"the"},{"word":"legal"},{"word":"team"},{"word":"team"},{"endsSentence":true,"word":"today"}]],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"the"},{"word":"finance"},{"word":"team"},{"isCue":true,"word":"make"},{"isCue":true,"word":"that"},{"word":"the"},{"word":"legal"},{"word":"team"},{"endsSentence":true,"word":"today"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"the"},{"word":"finance"},{"word":"team"},{"word":"today"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Ask the designer to check it."},"parts":{"cleanedCues":0,"cleanedWords":["ask","the","designer","to","check","it"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,null,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["ask","the","designer","i","mean","the","developer","to","check","it"],"similarity":"0.5714285714285714","wordRatio":"0.6"},"placeholders":[],"raw":"ask the designer i mean the developer to check it","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["ask"],"word":"the"},{"word":"developer"},{"word":"the"},{"word":"designer"},{"word":"to"},{"word":"check"},{"endsSentence":true,"word":"it"}],[{"opensPhrase":3,"spare":["ask"],"word":"the"},{"word":"developer"},{"word":"to"},{"word":"the"},{"word":"designer"},{"word":"check"},{"endsSentence":true,"word":"it"}]],"said":[{"startsSentence":true,"word":"ask"},{"word":"the"},{"word":"designer"},{"isCue":true,"word":"i"},{"isCue":true,"word":"mean"},{"word":"the"},{"word":"developer"},{"word":"to"},{"word":"check"},{"endsSentence":true,"word":"it"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ask"},{"word":"the"},{"word":"designer"},{"word":"to"},{"word":"check"},{"word":"it"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We're migrating the load balancer next week."},"parts":{"cleanedCues":0,"cleanedWords":["we're","migrating","the","load","balancer","next","week"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[5,6,7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,null,null,null,null,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we're","migrating","the","load","balancer","make","that","the","scheduler","next","week"],"similarity":"0.6417910447761195","wordRatio":"0.6363636363636364"},"placeholders":[],"raw":"we're migrating the load balancer make that the scheduler next week","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we're"},{"opensPhrase":2,"spare":["migrating"],"word":"the"},{"word":"scheduler"},{"word":"the"},{"word":"load"},{"word":"balancer"},{"word":"next"},{"endsSentence":true,"word":"week"}],[{"startsSentence":true,"word":"we're"},{"word":"migrating"},{"word":"the"},{"opensPhrase":2,"spare":["load"],"word":"the"},{"word":"scheduler"},{"word":"balancer"},{"word":"next"},{"endsSentence":true,"word":"week"}]],"said":[{"startsSentence":true,"word":"we're"},{"word":"migrating"},{"word":"the"},{"word":"load"},{"word":"balancer"},{"isCue":true,"word":"make"},{"isCue":true,"word":"that"},{"word":"the"},{"word":"scheduler"},{"word":"next"},{"endsSentence":true,"word":"week"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we're"},{"word":"migrating"},{"word":"the"},{"word":"load"},{"word":"balancer"},{"word":"next"},{"word":"week"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Paint the fence red."},"parts":{"cleanedCues":0,"cleanedWords":["paint","the","fence","red"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[4,5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,null,null,null],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["paint","the","fence","red","no","wait","blue"],"similarity":"0.59375","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"paint the fence red no wait blue","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["paint"],"word":"blue"},{"word":"the"},{"word":"fence"},{"word":"red"}],[{"startsSentence":true,"word":"paint"},{"word":"the"},{"opensPhrase":1,"spare":["fence"],"word":"blue"},{"word":"red"}]],"said":[{"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"fence"},{"word":"red"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"endsSentence":true,"word":"blue"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"paint"},{"word":"the"},{"word":"fence"},{"word":"red"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We need four three servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four","three","servers"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[2]},{"deleted":[4,5],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,3,4,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","sorry","four"],"similarity":"0.5","wordRatio":"0.8333333333333334"},"placeholders":[],"raw":"we need three servers sorry four","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"},{"word":"three"},{"word":"servers"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Send it to Priya Sam."},"parts":{"cleanedCues":0,"cleanedWords":["send","it","to","priya","sam"],"droppedContent":1,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]},{"deleted":[],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["send","it","to","sam","sorry","to","priya"],"similarity":"0.48275862068965514","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"send it to sam sorry to priya","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["send"],"word":"to"},{"word":"priya"},{"word":"it"},{"word":"to"},{"word":"sam"}]],"said":[{"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"word":"sam"},{"isCue":true,"word":"sorry"},{"word":"to"},{"endsSentence":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"send"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"priya"},{"isCapitalised":true,"word":"sam"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I left my charger in the garage lobby."},"parts":{"cleanedCues":0,"cleanedWords":["i","left","my","charger","in","the","garage","lobby"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,5,6,null,null,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i","left","my","charger","in","the","garage","actually","the","lobby"],"similarity":"0.74","wordRatio":"0.8"},"placeholders":[],"raw":"I left my charger in the garage. Actually, the lobby.","repair":{"accepts":false,"rewrites":[],"said":[{"startsSentence":true,"word":"i"},{"word":"left"},{"word":"my"},{"word":"charger"},{"word":"in"},{"word":"the"},{"endsSentence":true,"word":"garage"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"word":"the"},{"endsSentence":true,"word":"lobby"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"left"},{"word":"my"},{"word":"charger"},{"word":"in"},{"word":"the"},{"word":"garage"},{"word":"lobby"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The demo is on Tuesday Wednesday at noon."},"parts":{"cleanedCues":0,"cleanedWords":["the","demo","is","on","tuesday","wednesday","at","noon"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[5]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,6,7,null,null],"movesOrDropsName":true,"names":[4,8],"rawCues":1,"rawWords":["the","demo","is","on","tuesday","at","noon","sorry","wednesday"],"similarity":"0.6086956521739131","wordRatio":"0.8888888888888888"},"placeholders":[],"raw":"The demo is on Tuesday at noon. Sorry, Wednesday.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["tuesday"],"word":"wednesday"},{"word":"at"},{"endsSentence":true,"word":"noon"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"at"},{"endsSentence":true,"word":"noon"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"demo"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"isCapitalised":true,"word":"wednesday"},{"word":"at"},{"word":"noon"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Invite Sam and Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","sam","and","priya","to","the","launch"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[2,3]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,4,5,6,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.38888888888888884","wordRatio":"1.0"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"sam"},{"word":"and"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Fuel efficiency in trains."},"parts":{"cleanedCues":0,"cleanedWords":["fuel","efficiency","in","trains"],"droppedContent":2,"gaps":[{"deleted":[3,4,5],"inserted":[3]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["fuel","efficiency","in","cars","sorry","busses"],"similarity":"0.5833333333333333","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"fuel efficiency in cars sorry busses","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["fuel"],"word":"busses"},{"word":"efficiency"},{"word":"in"},{"word":"cars"}],[{"startsSentence":true,"word":"fuel"},{"opensPhrase":1,"spare":["efficiency"],"word":"busses"},{"word":"in"},{"word":"cars"}]],"said":[{"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"cars"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"busses"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"fuel"},{"word":"efficiency"},{"word":"in"},{"word":"trains"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I wanted to say it to Jo."},"parts":{"cleanedCues":0,"cleanedWords":["i","wanted","to","say","it","to","jo"],"droppedContent":0,"gaps":[{"deleted":[4],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["i","wanted","to","say","sorry","to","jo"],"similarity":"0.8148148148148149","wordRatio":"1.0"},"placeholders":[],"raw":"i wanted to say sorry to jo","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i"},{"opensPhrase":2,"spare":["wanted"],"word":"to"},{"word":"jo"},{"word":"to"},{"word":"say"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"wanted"},{"word":"to"},{"word":"say"},{"isCue":true,"word":"sorry"},{"word":"to"},{"endsSentence":true,"word":"jo"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"wanted"},{"word":"to"},{"word":"say"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"jo"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We need three four servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","three","four","servers"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[3,4],"inserted":[]},{"deleted":[],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","sorry","four"],"similarity":"0.5625","wordRatio":"0.8333333333333334"},"placeholders":[],"raw":"we need three servers sorry four","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"four"},{"word":"servers"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We need three or four servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","three","or","four","servers"],"droppedContent":0,"gaps":[{"deleted":[3,4],"inserted":[3]},{"deleted":[],"inserted":[5]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,4],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","servers","sorry","four"],"similarity":"0.53125","wordRatio":"1.0"},"placeholders":[],"raw":"we need three servers sorry four","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"or"},{"word":"four"},{"word":"servers"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We need three of the four servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","three","of","the","four","servers"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[5,6],"inserted":[]},{"deleted":[],"inserted":[6]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,null,null,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","of","the","servers","sorry","four"],"similarity":"0.641025641025641","wordRatio":"0.875"},"placeholders":[],"raw":"we need three of the servers sorry four","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"of"},{"word":"the"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"of"},{"word":"the"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"of"},{"word":"the"},{"word":"four"},{"word":"servers"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Invite Sam, Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","sam","priya","to","the","launch"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[2]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,3,4,5,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.5","wordRatio":"0.8571428571428571"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"sam"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Invite Sam and Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","sam","and","priya","to","the","launch"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[2,3]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,4,5,6,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.38888888888888884","wordRatio":"1.0"},"placeholders":[],"raw":"Invite Sam to the launch, sorry, Priya.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"word":"launch"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"sam"},{"word":"and"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I am meeting Divya and Nikhil at the station."},"parts":{"cleanedCues":0,"cleanedWords":["i","am","meeting","divya","and","nikhil","at","the","station"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[4,5]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,6,7,8,null,null],"movesOrDropsName":true,"names":[3,8],"rawCues":1,"rawWords":["i","am","meeting","divya","at","the","station","actually","nikhil"],"similarity":"0.5306122448979591","wordRatio":"1.0"},"placeholders":[],"raw":"I am meeting Divya at the station. Actually, Nikhil.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["divya"],"word":"nikhil"},{"word":"at"},{"word":"the"},{"endsSentence":true,"word":"station"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"divya"},{"word":"at"},{"word":"the"},{"endsSentence":true,"word":"station"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"nikhil"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"word":"divya"},{"word":"and"},{"isCapitalised":true,"word":"nikhil"},{"word":"at"},{"word":"the"},{"word":"station"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I am meeting Divya Nikhil at the station."},"parts":{"cleanedCues":0,"cleanedWords":["i","am","meeting","divya","nikhil","at","the","station"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[4]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,5,6,7,null,null],"movesOrDropsName":true,"names":[3,8],"rawCues":1,"rawWords":["i","am","meeting","divya","at","the","station","actually","nikhil"],"similarity":"0.5306122448979591","wordRatio":"0.8888888888888888"},"placeholders":[],"raw":"I am meeting Divya at the station. Actually, Nikhil.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["divya"],"word":"nikhil"},{"word":"at"},{"word":"the"},{"endsSentence":true,"word":"station"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"divya"},{"word":"at"},{"word":"the"},{"endsSentence":true,"word":"station"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"nikhil"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"word":"divya"},{"isCapitalised":true,"word":"nikhil"},{"word":"at"},{"word":"the"},{"word":"station"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Call me on Tuesday or Wednesday."},"parts":{"cleanedCues":0,"cleanedWords":["call","me","on","tuesday","or","wednesday"],"droppedContent":0,"gaps":[{"deleted":[4],"inserted":[4]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,null,5],"movesOrDropsName":false,"names":[3,5],"rawCues":1,"rawWords":["call","me","on","tuesday","no","wednesday"],"similarity":"0.935483870967742","wordRatio":"1.0"},"placeholders":[],"raw":"Call me on Tuesday, no, Wednesday.","repair":{"accepts":false,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["call"],"word":"wednesday"},{"word":"me"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"call"},{"word":"me"},{"word":"on"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"isCue":true,"word":"no"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"wednesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"call"},{"word":"me"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"},{"word":"or"},{"isCapitalised":true,"word":"wednesday"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"We have two or three weeks left."},"parts":{"cleanedCues":0,"cleanedWords":["we","have","two","or","three","weeks","left"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[],"inserted":[3,4]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,5,6,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","have","two","weeks","left","sorry","three"],"similarity":"0.4411764705882353","wordRatio":"1.0"},"placeholders":[],"raw":"We have two weeks left. Sorry, three.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"have"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"weeks"},{"endsSentence":true,"word":"left"}],[{"startsSentence":true,"word":"we"},{"word":"have"},{"opensPhrase":1,"spare":["two","weeks"],"word":"three"},{"endsSentence":true,"word":"left"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"have"},{"word":"two"},{"word":"weeks"},{"endsSentence":true,"word":"left"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"three"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"have"},{"word":"two"},{"word":"or"},{"word":"three"},{"word":"weeks"},{"word":"left"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Two people said we need four servers."},"outcome":{"completed":"Two people said we need four servers."},"parts":{"cleanedCues":0,"cleanedWords":["two","people","said","we","need","four","servers"],"droppedContent":1,"droppedRun":2,"gaps":[{"deleted":[5,6],"inserted":[]},{"deleted":[],"inserted":[6]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,null,null,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["two","people","said","we","need","servers","sorry","four"],"similarity":"0.6666666666666667","wordRatio":"0.875"},"placeholders":[],"raw":"two people said we need servers sorry four","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["two"],"word":"four"},{"word":"people"},{"word":"said"},{"word":"we"},{"word":"need"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"two"},{"word":"people"},{"word":"said"},{"word":"we"},{"word":"need"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"two"},{"word":"people"},{"word":"said"},{"word":"we"},{"word":"need"},{"word":"four"},{"word":"servers"}]},"verdicts":{"deep":{"accepted":"Two people said we need four servers."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"We need four of the servers."},"outcome":{"completed":"We need four of the servers."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","four","of","the","servers"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[2],"inserted":[2]},{"deleted":[6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,3,4,5,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","three","of","the","servers","sorry","four"],"similarity":"0.5897435897435898","wordRatio":"0.75"},"placeholders":[],"raw":"we need three of the servers sorry four","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"need"},{"opensPhrase":1,"spare":["three"],"word":"four"},{"word":"of"},{"word":"the"},{"word":"servers"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"three"},{"word":"of"},{"word":"the"},{"word":"servers"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"word":"four"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"four"},{"word":"of"},{"word":"the"},{"word":"servers"}]},"verdicts":{"deep":{"accepted":"We need four of the servers."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Invite Priya to the launch."},"outcome":{"completed":"Invite Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","priya","to","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.5277777777777778","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Invite Sam to the launch. Sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"endsSentence":true,"word":"launch"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"Invite Priya to the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Invite Priya to the launch."},"outcome":{"completed":"Invite Priya to the launch."},"parts":{"cleanedCues":0,"cleanedWords":["invite","priya","to","the","launch"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,null,null],"movesOrDropsName":true,"names":[1,6],"rawCues":1,"rawWords":["invite","sam","to","the","launch","sorry","priya"],"similarity":"0.5277777777777778","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Invite Sam to the launch, sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"word":"launch"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["invite","sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}],[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"the"},{"word":"launch"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"invite"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"the"},{"word":"launch"}]},"verdicts":{"deep":{"accepted":"Invite Priya to the launch."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"I am meeting Nikhil at the station."},"outcome":{"completed":"I am meeting Nikhil at the station."},"parts":{"cleanedCues":0,"cleanedWords":["i","am","meeting","nikhil","at","the","station"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[3],"inserted":[3]},{"deleted":[7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,4,5,6,null,null],"movesOrDropsName":true,"names":[3,8],"rawCues":1,"rawWords":["i","am","meeting","divya","at","the","station","actually","nikhil"],"similarity":"0.5714285714285714","wordRatio":"0.7777777777777778"},"placeholders":[],"raw":"I am meeting Divya at the station. Actually, Nikhil.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["divya"],"word":"nikhil"},{"word":"at"},{"word":"the"},{"endsSentence":true,"word":"station"}]],"said":[{"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"divya"},{"word":"at"},{"word":"the"},{"endsSentence":true,"word":"station"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"nikhil"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i"},{"word":"am"},{"word":"meeting"},{"isCapitalised":true,"word":"nikhil"},{"word":"at"},{"word":"the"},{"word":"station"}]},"verdicts":{"deep":{"accepted":"I am meeting Nikhil at the station."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Meet me at six."},"outcome":{"completed":"Meet me at six."},"parts":{"cleanedCues":0,"cleanedWords":["meet","me","at","six"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["meet","me","at","the","station","sorry","at","six"],"similarity":"0.4","wordRatio":"0.5"},"placeholders":[],"raw":"meet me at the station sorry at six","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"the"},{"word":"station"},{"isCue":true,"word":"sorry"},{"word":"at"},{"endsSentence":true,"word":"six"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"meet"},{"word":"me"},{"word":"at"},{"word":"six"}]},"verdicts":{"deep":{"accepted":"Meet me at six."},"high":{"accepted":"Meet me at six."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Meet me at six."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Ask Sam to email Priya."},"outcome":{"completed":"Ask Sam to email Priya."},"parts":{"cleanedCues":0,"cleanedWords":["ask","sam","to","email","priya"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,4],"movesOrDropsName":true,"names":[1,4,6],"rawCues":1,"rawWords":["ask","sam","to","email","ana","sorry","priya"],"similarity":"0.6875","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Ask Sam to email Ana, sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ask"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ask","sam"],"word":"priya"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"}],[{"mayBeName":true,"startsSentence":true,"word":"ask"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ask"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ask"},{"isCapitalised":true,"word":"sam"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"word":"priya"}]},"verdicts":{"deep":{"accepted":"Ask Sam to email Priya."},"high":{"accepted":"Ask Sam to email Priya."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Ask Sam to email Priya."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Ask Priya to email Ana."},"outcome":{"completed":"Ask Priya to email Ana."},"parts":{"cleanedCues":0,"cleanedWords":["ask","priya","to","email","ana"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[1],"inserted":[1]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,null,2,3,4,null,null],"movesOrDropsName":true,"names":[1,4,6],"rawCues":1,"rawWords":["ask","sam","to","email","ana","sorry","priya"],"similarity":"0.46875","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"Ask Sam to email Ana, sorry, Priya.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ask"],"word":"priya"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"}],[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ask","sam"],"word":"priya"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"}],[{"mayBeName":true,"startsSentence":true,"word":"ask"},{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["sam"],"word":"priya"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ask"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"sam"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"ana"},{"isCue":true,"word":"sorry"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"priya"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ask"},{"isCapitalised":true,"word":"priya"},{"word":"to"},{"word":"email"},{"isCapitalised":true,"word":"ana"}]},"verdicts":{"deep":{"accepted":"Ask Priya to email Ana."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"We have three weeks left."},"outcome":{"completed":"We have three weeks left."},"parts":{"cleanedCues":0,"cleanedWords":["we","have","three","weeks","left"],"droppedContent":2,"droppedRun":2,"gaps":[{"deleted":[2],"inserted":[2]},{"deleted":[5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,3,4,null,null],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","have","two","weeks","left","sorry","three"],"similarity":"0.5294117647058824","wordRatio":"0.7142857142857143"},"placeholders":[],"raw":"We have two weeks left. Sorry, three.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"we"},{"word":"have"},{"opensPhrase":1,"spare":["two"],"word":"three"},{"word":"weeks"},{"endsSentence":true,"word":"left"}],[{"startsSentence":true,"word":"we"},{"word":"have"},{"opensPhrase":1,"spare":["two","weeks"],"word":"three"},{"endsSentence":true,"word":"left"}]],"said":[{"startsSentence":true,"word":"we"},{"word":"have"},{"word":"two"},{"word":"weeks"},{"endsSentence":true,"word":"left"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"endsSentence":true,"word":"three"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"have"},{"word":"three"},{"word":"weeks"},{"word":"left"}]},"verdicts":{"deep":{"accepted":"We have three weeks left."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Can you bring the router to the meeting?"},"outcome":{"completed":"Can you bring the router to the meeting?"},"parts":{"cleanedCues":0,"cleanedWords":["can","you","bring","the","router","to","the","meeting"],"droppedContent":3,"droppedRun":4,"gaps":[{"deleted":[4,5,6,7],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,4,5,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["can","you","bring","the","monitor","wait","node","the","router","to","the","meeting"],"similarity":"0.639344262295082","wordRatio":"0.6666666666666666"},"placeholders":[],"raw":"Can you bring the monitor, wait node, the router to the meeting?","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"can"},{"word":"you"},{"opensPhrase":2,"spare":["bring"],"word":"the"},{"word":"router"},{"word":"the"},{"word":"monitor"},{"word":"to"},{"word":"the"},{"endsQuestion":true,"endsSentence":true,"word":"meeting"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"opensPhrase":3,"spare":["bring"],"word":"the"},{"word":"router"},{"word":"to"},{"word":"the"},{"word":"monitor"},{"word":"the"},{"endsQuestion":true,"endsSentence":true,"word":"meeting"}],[{"startsSentence":true,"word":"can"},{"word":"you"},{"opensPhrase":4,"spare":["bring"],"word":"the"},{"word":"router"},{"word":"to"},{"word":"the"},{"word":"the"},{"word":"monitor"},{"endsQuestion":true,"endsSentence":true,"word":"meeting"}]],"said":[{"startsSentence":true,"word":"can"},{"word":"you"},{"word":"bring"},{"word":"the"},{"word":"monitor"},{"isCue":true,"word":"wait"},{"word":"node"},{"word":"the"},{"word":"router"},{"word":"to"},{"word":"the"},{"endsQuestion":true,"endsSentence":true,"word":"meeting"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"can"},{"word":"you"},{"word":"bring"},{"word":"the"},{"word":"router"},{"word":"to"},{"word":"the"},{"word":"meeting"}]},"verdicts":{"deep":{"accepted":"Can you bring the router to the meeting?"},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The city is buying more electric vans."},"outcome":{"completed":"The city is buying more electric vans."},"parts":{"cleanedCues":0,"cleanedWords":["the","city","is","buying","more","electric","vans"],"droppedContent":3,"droppedRun":3,"gaps":[{"deleted":[6,7,8],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,null,null,null,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","city","is","buying","more","electric","buses","no","weight","vans"],"similarity":"0.6981132075471699","wordRatio":"0.7"},"placeholders":[],"raw":"The city is buying more electric buses, no weight vans.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":1,"spare":["city"],"word":"vans"},{"word":"is"},{"word":"buying"},{"word":"more"},{"word":"electric"},{"word":"buses"}],[{"startsSentence":true,"word":"the"},{"word":"city"},{"word":"is"},{"opensPhrase":1,"spare":["buying"],"word":"vans"},{"word":"more"},{"word":"electric"},{"word":"buses"}],[{"startsSentence":true,"word":"the"},{"word":"city"},{"word":"is"},{"word":"buying"},{"word":"more"},{"opensPhrase":1,"spare":["electric"],"word":"vans"},{"word":"buses"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"city"},{"word":"is"},{"word":"buying"},{"word":"more"},{"word":"electric"},{"word":"buses"},{"isCue":true,"word":"no"},{"word":"weight"},{"endsSentence":true,"word":"vans"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"city"},{"word":"is"},{"word":"buying"},{"word":"more"},{"word":"electric"},{"word":"vans"}]},"verdicts":{"deep":{"accepted":"The city is buying more electric vans."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Dinner is on Tuesday."},"outcome":{"completed":"Dinner is on Tuesday."},"parts":{"cleanedCues":0,"cleanedWords":["dinner","is","on","tuesday"],"droppedContent":4,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,null,null,null,null,3],"movesOrDropsName":true,"names":[3,7],"rawCues":2,"rawWords":["dinner","is","on","saturday","sorry","no","theon","tuesday"],"similarity":"0.4545454545454546","wordRatio":"0.5"},"placeholders":[],"raw":"Dinner is on Saturday. Sorry, no theon Tuesday.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["dinner"],"word":"theon"},{"word":"is"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"saturday"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"opensPhrase":2,"spare":["dinner"],"word":"theon"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"},{"word":"is"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"saturday"}],[{"opensPhrase":2,"spare":["dinner","is","on","saturday"],"word":"theon"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],[{"mayBeName":true,"startsSentence":true,"word":"dinner"},{"word":"is"},{"word":"on"},{"opensPhrase":2,"spare":["saturday"],"word":"theon"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"dinner"},{"word":"is"},{"word":"on"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"saturday"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCue":true,"word":"no"},{"word":"theon"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"tuesday"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"dinner"},{"word":"is"},{"word":"on"},{"isCapitalised":true,"word":"tuesday"}]},"verdicts":{"deep":{"accepted":"Dinner is on Tuesday."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The product review is on the 12th of November."},"outcome":{"completed":"The product review is on the 12th of November."},"parts":{"cleanedCues":0,"cleanedWords":["the","product","review","is","on","the","12th","of","november"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[8,9,10,11,12],"inserted":[]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,1,2,3,4,5,6,7,null,null,null,null,null,8],"movesOrDropsName":true,"names":[8,13],"rawCues":2,"rawWords":["the","product","review","is","on","the","12th","of","october","no","sorry","thee","of","november"],"similarity":"0.6428571428571428","wordRatio":"0.6428571428571429"},"placeholders":[],"raw":"The product review is on the 12th of October. No sorry thee of November.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":1,"spare":["product"],"word":"thee"},{"word":"review"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"october"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"startsSentence":true,"word":"the"},{"word":"product"},{"opensPhrase":1,"spare":["review"],"word":"thee"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"october"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["product"],"word":"thee"},{"word":"of"},{"word":"review"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"october"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"startsSentence":true,"word":"the"},{"word":"product"},{"opensPhrase":2,"spare":["review"],"word":"thee"},{"word":"of"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"october"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"startsSentence":true,"word":"the"},{"word":"product"},{"word":"review"},{"word":"is"},{"word":"on"},{"word":"the"},{"opensPhrase":3,"spare":["12th"],"word":"thee"},{"word":"of"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"october"}],[{"startsSentence":true,"word":"the"},{"word":"product"},{"word":"review"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"opensPhrase":3,"spare":["october"],"word":"thee"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"product"},{"word":"review"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"october"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"no"},{"isCue":true,"word":"sorry"},{"word":"thee"},{"word":"of"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"product"},{"word":"review"},{"word":"is"},{"word":"on"},{"word":"the"},{"word":"12th"},{"word":"of"},{"isCapitalised":true,"word":"november"}]},"verdicts":{"deep":{"accepted":"The product review is on the 12th of November."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Hold it until September."},"outcome":{"completed":"Hold it until September."},"parts":{"cleanedCues":0,"cleanedWords":["hold","it","until","september"],"droppedContent":3,"droppedRun":6,"gaps":[{"deleted":[0,1,2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,null,null,null,null,null,0,1,2,3],"movesOrDropsName":true,"names":[3,9],"rawCues":1,"rawWords":["ship","it","to","prague","scratch","that","hold","it","until","september"],"similarity":"0.42592592592592593","wordRatio":"0.4"},"placeholders":[],"raw":"Ship it to Prague, scratch that, hold it until September.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],[{"opensPhrase":4,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"september"}]},"verdicts":{"deep":{"accepted":"Hold it until September."},"high":{"accepted":"Hold it until September."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Hold it until September."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Hold it until June."},"outcome":{"completed":"Hold it until June."},"parts":{"cleanedCues":0,"cleanedWords":["hold","it","until","june"],"droppedContent":3,"droppedRun":6,"gaps":[{"deleted":[0,1,2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,null,null,null,null,null,0,1,2,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["ship","it","to","prague","scratch","that","hold","it","until","june"],"similarity":"0.36734693877551017","wordRatio":"0.4"},"placeholders":[],"raw":"ship it to prague scratch that hold it until june","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"it"},{"word":"until"},{"endsSentence":true,"word":"june"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"until"},{"endsSentence":true,"word":"june"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"word":"prague"},{"endsSentence":true,"word":"june"}]],"said":[{"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"word":"prague"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"word":"june"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"june"}]},"verdicts":{"deep":{"accepted":"Hold it until June."},"high":{"accepted":"Hold it until June."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Hold it until June."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Hold it until November."},"outcome":{"completed":"Hold it until November."},"parts":{"cleanedCues":0,"cleanedWords":["hold","it","until","november"],"droppedContent":3,"droppedRun":6,"gaps":[{"deleted":[0,1,2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[null,null,null,null,null,null,0,1,2,3],"movesOrDropsName":true,"names":[3,9],"rawCues":1,"rawWords":["ship","it","to","lisbon","scratch","that","hold","it","until","november"],"similarity":"0.41509433962264153","wordRatio":"0.4"},"placeholders":[],"raw":"Ship it to Lisbon, scratch that, hold it until November.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"opensPhrase":4,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"november"}]},"verdicts":{"deep":{"accepted":"Hold it until November."},"high":{"accepted":"Hold it until November."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Hold it until November."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Ship it to Vienna."},"outcome":{"completed":"Ship it to Vienna."},"parts":{"cleanedCues":0,"cleanedWords":["ship","it","to","vienna"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3],"movesOrDropsName":true,"names":[3,6],"rawCues":1,"rawWords":["ship","it","to","prague","scratch","that","vienna"],"similarity":"0.45945945945945943","wordRatio":"0.5714285714285714"},"placeholders":[],"raw":"Ship it to Prague, scratch that, Vienna.","repair":{"accepts":true,"rewrites":[[{"isCapitalised":true,"isName":true,"mayBeName":true,"opensPhrase":1,"spare":["ship"],"word":"vienna"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"vienna"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"vienna"}]},"verdicts":{"deep":{"accepted":"Ship it to Vienna."},"high":{"accepted":"Ship it to Vienna."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Ship it to Vienna."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Book the afternoon one."},"outcome":{"completed":"Book the afternoon one."},"parts":{"cleanedCues":0,"cleanedWords":["book","the","afternoon","one"],"droppedContent":4,"droppedRun":6,"gaps":[{"deleted":[2,3,4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,null,null,null,null,null,null,2,3],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["book","the","early","flight","scratch","that","book","the","afternoon","one"],"similarity":"0.38596491228070173","wordRatio":"0.4"},"placeholders":[],"raw":"Book the early flight. Scratch that. Book the afternoon one.","repair":{"accepts":true,"rewrites":[[{"mayBeName":true,"opensPhrase":1,"spare":["book"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"early"},{"endsSentence":true,"word":"flight"},{"word":"the"},{"word":"afternoon"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"early"},{"endsSentence":true,"mayBeName":true,"opensPhrase":1,"spare":["flight"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"opensPhrase":2,"spare":["book"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"the"},{"word":"early"},{"endsSentence":true,"word":"flight"},{"word":"afternoon"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"early"},{"mayBeName":true,"opensPhrase":2,"spare":["flight"],"startsSentence":true,"word":"book"},{"endsSentence":true,"word":"the"},{"word":"afternoon"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"opensPhrase":3,"spare":["book"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"word":"the"},{"word":"early"},{"endsSentence":true,"word":"flight"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"opensPhrase":3,"spare":["book","the","early"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"endsSentence":true,"word":"flight"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"mayBeName":true,"opensPhrase":3,"spare":["early"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"endsSentence":true,"word":"flight"},{"endsSentence":true,"word":"one"}],[{"mayBeName":true,"opensPhrase":4,"spare":["book"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"word":"one"},{"word":"the"},{"word":"early"},{"endsSentence":true,"word":"flight"}],[{"mayBeName":true,"opensPhrase":4,"spare":["book","the","early"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"word":"one"},{"endsSentence":true,"word":"flight"}],[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"mayBeName":true,"opensPhrase":4,"spare":["early"],"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"word":"one"},{"endsSentence":true,"word":"flight"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"early"},{"endsSentence":true,"word":"flight"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"endsSentence":true,"isCue":true,"word":"that"},{"mayBeName":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"endsSentence":true,"word":"one"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"book"},{"word":"the"},{"word":"afternoon"},{"word":"one"}]},"verdicts":{"deep":{"accepted":"Book the afternoon one."},"high":{"accepted":"Book the afternoon one."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Book the afternoon one."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Put the box under the table."},"outcome":{"completed":"Put the box under the table."},"parts":{"cleanedCues":0,"cleanedWords":["put","the","box","under","the","table"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,null,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["put","the","box","on","the","table","sorry","under","the","table"],"similarity":"0.5869565217391304","wordRatio":"0.6"},"placeholders":[],"raw":"Put the box on the table, sorry, under the table.","repair":{"accepts":true,"rewrites":[[{"opensPhrase":3,"spare":["put"],"word":"under"},{"word":"the"},{"word":"table"},{"word":"the"},{"word":"box"},{"word":"on"},{"word":"the"},{"word":"table"}],[{"mayBeName":true,"startsSentence":true,"word":"put"},{"word":"the"},{"opensPhrase":3,"spare":["box"],"word":"under"},{"word":"the"},{"word":"table"},{"word":"on"},{"word":"the"},{"word":"table"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"put"},{"word":"the"},{"word":"box"},{"word":"on"},{"word":"the"},{"word":"table"},{"isCue":true,"word":"sorry"},{"word":"under"},{"word":"the"},{"endsSentence":true,"word":"table"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"put"},{"word":"the"},{"word":"box"},{"word":"under"},{"word":"the"},{"word":"table"}]},"verdicts":{"deep":{"accepted":"Put the box under the table."},"high":{"accepted":"Put the box under the table."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Put the box under the table."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"We need to restart the database."},"outcome":{"completed":"We need to restart the database."},"parts":{"cleanedCues":0,"cleanedWords":["we","need","to","restart","the","database"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[5,6,7,8],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,4,null,null,null,null,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["we","need","to","restart","the","off","service","actually","the","database"],"similarity":"0.5535714285714286","wordRatio":"0.6"},"placeholders":[],"raw":"We need to restart the off service. Actually, the database.","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"we"},{"word":"need"},{"word":"to"},{"word":"restart"},{"word":"the"},{"word":"off"},{"endsSentence":true,"word":"service"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"actually"},{"word":"the"},{"endsSentence":true,"word":"database"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"we"},{"word":"need"},{"word":"to"},{"word":"restart"},{"word":"the"},{"word":"database"}]},"verdicts":{"deep":{"accepted":"We need to restart the database."},"high":{"accepted":"We need to restart the database."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"We need to restart the database."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The leak is behind the dishwasher."},"outcome":{"completed":"The leak is behind the dishwasher."},"parts":{"cleanedCues":0,"cleanedWords":["the","leak","is","behind","the","dishwasher"],"droppedContent":2,"droppedRun":4,"gaps":[{"deleted":[3,4,5,6],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,null,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","leak","is","under","the","sink","rather","behind","the","dishwasher"],"similarity":"0.6","wordRatio":"0.6"},"placeholders":[],"raw":"The leak is under the sink, rather, behind the dishwasher.","repair":{"accepts":true,"rewrites":[],"said":[{"startsSentence":true,"word":"the"},{"word":"leak"},{"word":"is"},{"word":"under"},{"word":"the"},{"word":"sink"},{"isCue":true,"word":"rather"},{"word":"behind"},{"word":"the"},{"endsSentence":true,"word":"dishwasher"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"leak"},{"word":"is"},{"word":"behind"},{"word":"the"},{"word":"dishwasher"}]},"verdicts":{"deep":{"accepted":"The leak is behind the dishwasher."},"high":{"accepted":"The leak is behind the dishwasher."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The leak is behind the dishwasher."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Ship it to hold it until September."},"parts":{"cleanedCues":0,"cleanedWords":["ship","it","to","hold","it","until","september"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3,4,5,6],"movesOrDropsName":true,"names":[3,9],"rawCues":1,"rawWords":["ship","it","to","prague","scratch","that","hold","it","until","september"],"similarity":"0.6296296296296297","wordRatio":"0.7"},"placeholders":[],"raw":"Ship it to Prague, scratch that, hold it until September.","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],[{"opensPhrase":4,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"prague"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"september"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"september"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Ship it to hold it until September."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Ship it to hold it until September."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Ship it to hold it until June."},"parts":{"cleanedCues":0,"cleanedWords":["ship","it","to","hold","it","until","june"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3,4,5,6],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["ship","it","to","prague","scratch","that","hold","it","until","june"],"similarity":"0.5918367346938775","wordRatio":"0.7"},"placeholders":[],"raw":"ship it to prague scratch that hold it until june","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"it"},{"word":"until"},{"endsSentence":true,"word":"june"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"word":"prague"},{"word":"until"},{"endsSentence":true,"word":"june"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"word":"prague"},{"endsSentence":true,"word":"june"}]],"said":[{"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"word":"prague"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"word":"june"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"june"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Ship it to hold it until June."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Ship it to hold it until June."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Ship it to Hold it until November."},"parts":{"cleanedCues":0,"cleanedWords":["ship","it","to","hold","it","until","november"],"droppedContent":2,"droppedRun":3,"gaps":[{"deleted":[3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,null,null,null,3,4,5,6],"movesOrDropsName":true,"names":[3,9],"rawCues":1,"rawWords":["ship","it","to","lisbon","scratch","that","hold","it","until","november"],"similarity":"0.6226415094339622","wordRatio":"0.7"},"placeholders":[],"raw":"Ship it to Lisbon, scratch that, hold it until November.","repair":{"accepts":false,"rewrites":[[{"opensPhrase":1,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"opensPhrase":2,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"opensPhrase":3,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],[{"opensPhrase":4,"spare":["ship"],"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"isName":true,"mayBeName":true,"word":"lisbon"},{"isCue":true,"word":"scratch"},{"isCue":true,"word":"that"},{"word":"hold"},{"word":"it"},{"word":"until"},{"endsSentence":true,"isCapitalised":true,"isName":true,"mayBeName":true,"word":"november"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"ship"},{"word":"it"},{"word":"to"},{"isCapitalised":true,"word":"hold"},{"word":"it"},{"word":"until"},{"isCapitalised":true,"word":"november"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Ship it to Hold it until November."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Ship it to Hold it until November."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The nursing team will join the call at noon."},"outcome":{"completed":"The nursing team will join the call at noon."},"parts":{"cleanedCues":0,"cleanedWords":["the","nursing","team","will","join","the","call","at","noon"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[1,2,3,4,5],"inserted":[]},{"deleted":[],"inserted":[2]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,null,null,null,null,1,3,4,5,6,7,8],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","physio","team","sorry","not","physio","nursing","will","join","the","call","at","noon"],"similarity":"0.5522388059701493","wordRatio":"0.6923076923076923"},"placeholders":[],"raw":"the physio team sorry not physio nursing will join the call at noon","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"team"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":3,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"team"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":4,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"team"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":5,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"team"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":6,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"team"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":1,"spare":["physio"],"word":"nursing"},{"word":"team"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["physio"],"word":"nursing"},{"word":"will"},{"word":"team"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"physio"},{"word":"team"},{"isCue":true,"word":"sorry"},{"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"nursing"},{"word":"team"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"word":"noon"}]},"verdicts":{"deep":{"accepted":"The nursing team will join the call at noon."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Kofi's cousin is hosting the barbecue."},"outcome":{"completed":"Kofi's cousin is hosting the barbecue."},"parts":{"cleanedCues":0,"cleanedWords":["kofi's","cousin","is","hosting","the","barbecue"],"droppedContent":5,"droppedRun":5,"gaps":[{"deleted":[1,2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,null,null,null,null,1,2,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["kofi's","brother","no","wait","not","brother","cousin","is","hosting","the","barbecue"],"similarity":"0.5692307692307692","wordRatio":"0.5454545454545454"},"placeholders":[],"raw":"Kofi's brother, no wait, not brother, cousin, is hosting the barbecue.","repair":{"accepts":true,"rewrites":[[{"mayBeName":true,"startsSentence":true,"word":"kofi's"},{"opensPhrase":1,"spare":["brother"],"word":"cousin"},{"isCue":true,"word":"no"},{"word":"is"},{"word":"hosting"},{"word":"the"},{"endsSentence":true,"word":"barbecue"}],[{"mayBeName":true,"startsSentence":true,"word":"kofi's"},{"opensPhrase":2,"spare":["brother"],"word":"cousin"},{"word":"is"},{"isCue":true,"word":"no"},{"word":"hosting"},{"word":"the"},{"endsSentence":true,"word":"barbecue"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"kofi's"},{"word":"brother"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"word":"not"},{"word":"brother"},{"word":"cousin"},{"word":"is"},{"word":"hosting"},{"word":"the"},{"endsSentence":true,"word":"barbecue"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"kofi's"},{"word":"cousin"},{"word":"is"},{"word":"hosting"},{"word":"the"},{"word":"barbecue"}]},"verdicts":{"deep":{"accepted":"Kofi's cousin is hosting the barbecue."},"high":{"accepted":"Kofi's cousin is hosting the barbecue."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Kofi's cousin is hosting the barbecue."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"Siobhan's team owns the billing service."},"outcome":{"completed":"Siobhan's team owns the billing service."},"parts":{"cleanedCues":0,"cleanedWords":["siobhan's","team","owns","the","billing","service"],"droppedContent":4,"droppedRun":5,"gaps":[{"deleted":[0,1,2,3,4],"inserted":[]},{"deleted":[],"inserted":[1]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[null,null,null,null,null,0,2,3,4,5],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["nikhil's","team","sorry","not","nikhil's","siobhan's","owns","the","billing","service"],"similarity":"0.4925373134328358","wordRatio":"0.6"},"placeholders":[],"raw":"nikhil's team sorry not nikhil's siobhan's owns the billing service","repair":{"accepts":true,"rewrites":[[{"opensPhrase":2,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"team"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":3,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"team"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":4,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"team"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":5,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"team"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":6,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"word":"team"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":1,"spare":["nikhil's"],"word":"siobhan's"},{"word":"team"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}]],"said":[{"startsSentence":true,"word":"nikhil's"},{"word":"team"},{"isCue":true,"word":"sorry"},{"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"siobhan's"},{"word":"team"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"word":"service"}]},"verdicts":{"deep":{"accepted":"Siobhan's team owns the billing service."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"The nursing will join the call at noon."},"parts":{"cleanedCues":0,"cleanedWords":["the","nursing","will","join","the","call","at","noon"],"droppedContent":5,"droppedRun":5,"gaps":[{"deleted":[1,2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,null,null,null,null,1,2,3,4,5,6,7],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["the","physio","team","sorry","not","physio","nursing","will","join","the","call","at","noon"],"similarity":"0.5671641791044777","wordRatio":"0.6153846153846154"},"placeholders":[],"raw":"the physio team sorry not physio nursing will join the call at noon","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"team"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":3,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"team"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":4,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"team"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":5,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"team"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":6,"spare":["physio"],"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"team"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":1,"spare":["physio"],"word":"nursing"},{"word":"team"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],[{"startsSentence":true,"word":"the"},{"opensPhrase":2,"spare":["physio"],"word":"nursing"},{"word":"will"},{"word":"team"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"physio"},{"word":"team"},{"isCue":true,"word":"sorry"},{"word":"not"},{"word":"physio"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"endsSentence":true,"word":"noon"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"nursing"},{"word":"will"},{"word":"join"},{"word":"the"},{"word":"call"},{"word":"at"},{"word":"noon"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"The nursing will join the call at noon."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"The nursing will join the call at noon."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Cousin is hosting the barbecue."},"parts":{"cleanedCues":0,"cleanedWords":["cousin","is","hosting","the","barbecue"],"droppedContent":6,"droppedRun":6,"gaps":[{"deleted":[0,1,2,3,4,5],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[null,null,null,null,null,null,0,1,2,3,4],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["kofi's","brother","no","wait","not","brother","cousin","is","hosting","the","barbecue"],"similarity":"0.46153846153846156","wordRatio":"0.45454545454545453"},"placeholders":[],"raw":"Kofi's brother, no wait, not brother, cousin, is hosting the barbecue.","repair":{"accepts":false,"rewrites":[[{"mayBeName":true,"startsSentence":true,"word":"kofi's"},{"opensPhrase":1,"spare":["brother"],"word":"cousin"},{"isCue":true,"word":"no"},{"word":"is"},{"word":"hosting"},{"word":"the"},{"endsSentence":true,"word":"barbecue"}],[{"mayBeName":true,"startsSentence":true,"word":"kofi's"},{"opensPhrase":2,"spare":["brother"],"word":"cousin"},{"word":"is"},{"isCue":true,"word":"no"},{"word":"hosting"},{"word":"the"},{"endsSentence":true,"word":"barbecue"}]],"said":[{"mayBeName":true,"startsSentence":true,"word":"kofi's"},{"word":"brother"},{"isCue":true,"word":"no"},{"isCue":true,"word":"wait"},{"word":"not"},{"word":"brother"},{"word":"cousin"},{"word":"is"},{"word":"hosting"},{"word":"the"},{"endsSentence":true,"word":"barbecue"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"cousin"},{"word":"is"},{"word":"hosting"},{"word":"the"},{"word":"barbecue"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Cousin is hosting the barbecue."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Cousin is hosting the barbecue."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"Siobhan's owns the billing service."},"parts":{"cleanedCues":0,"cleanedWords":["siobhan's","owns","the","billing","service"],"droppedContent":5,"droppedRun":5,"gaps":[{"deleted":[0,1,2,3,4],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[null,null,null,null,null,0,1,2,3,4],"movesOrDropsName":false,"names":[],"rawCues":1,"rawWords":["nikhil's","team","sorry","not","nikhil's","siobhan's","owns","the","billing","service"],"similarity":"0.5074626865671642","wordRatio":"0.5"},"placeholders":[],"raw":"nikhil's team sorry not nikhil's siobhan's owns the billing service","repair":{"accepts":false,"rewrites":[[{"opensPhrase":2,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"team"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":3,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"team"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":4,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"team"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":5,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"team"},{"word":"billing"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":6,"spare":["nikhil's"],"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"word":"team"},{"endsSentence":true,"word":"service"}],[{"opensPhrase":1,"spare":["nikhil's"],"word":"siobhan's"},{"word":"team"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}]],"said":[{"startsSentence":true,"word":"nikhil's"},{"word":"team"},{"isCue":true,"word":"sorry"},{"word":"not"},{"word":"nikhil's"},{"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"endsSentence":true,"word":"service"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"siobhan's"},{"word":"owns"},{"word":"the"},{"word":"billing"},{"word":"service"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"accepted":"Siobhan's owns the billing service."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"Siobhan's owns the billing service."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"I'll email no one instead."},"outcome":{"completed":"I'll email no one instead."},"parts":{"cleanedCues":1,"cleanedWords":["i'll","email","no","one","instead"],"droppedContent":5,"droppedRun":7,"gaps":[{"deleted":[1,2,3,4,5,6,7],"inserted":[]}],"isCorrection":true,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,null,null,null,null,null,null,1,2,3,4],"movesOrDropsName":false,"names":[],"rawCues":3,"rawWords":["i'll","call","no","one","now","scratch","that","i'll","email","no","one","instead"],"similarity":"0.423728813559322","wordRatio":"0.4166666666666667"},"placeholders":[],"raw":"I'll call no one now. Scratch that. I'll email no one instead.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"i'll"},{"opensPhrase":2,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"word":"one"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"endsSentence":true,"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":3,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"word":"one"},{"opensPhrase":3,"spare":["now"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"endsSentence":true,"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":4,"spare":["call","no","one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":4,"spare":["one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":5,"spare":["call","no","one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"word":"instead"},{"endsSentence":true,"word":"now"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":5,"spare":["one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"word":"instead"},{"endsSentence":true,"word":"now"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":2,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"opensPhrase":1,"spare":["one"],"word":"one"},{"endsSentence":true,"word":"now"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":2,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"opensPhrase":2,"spare":["one"],"word":"one"},{"word":"instead"},{"endsSentence":true,"word":"now"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":1,"spare":["one"],"word":"one"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"endsSentence":true,"word":"email"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":2,"spare":["one"],"word":"one"},{"word":"instead"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"endsSentence":true,"word":"email"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":1,"spare":["one"],"word":"one"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":2,"spare":["one"],"word":"one"},{"word":"instead"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"word":"email"}]],"said":[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"endsSentence":true,"isCue":true,"word":"that"},{"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'll"},{"word":"email"},{"word":"no"},{"word":"one"},{"word":"instead"}]},"verdicts":{"deep":{"accepted":"I'll email no one instead."},"high":{"accepted":"I'll email no one instead."},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"accepted":"I'll email no one instead."},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"outcome":{"completed":"I'll email Noah instead."},"parts":{"cleanedCues":0,"cleanedWords":["i'll","email","noah","instead"],"droppedContent":6,"droppedRun":7,"gaps":[{"deleted":[1,2,3,4,5,6,7],"inserted":[]},{"deleted":[9,10],"inserted":[2]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":true,"matches":[0,null,null,null,null,null,null,null,1,null,null,3],"movesOrDropsName":false,"names":[],"rawCues":3,"rawWords":["i'll","call","no","one","now","scratch","that","i'll","email","no","one","instead"],"similarity":"0.35593220338983056","wordRatio":"0.3333333333333333"},"placeholders":[],"raw":"I'll call no one now. Scratch that. I'll email no one instead.","repair":{"accepts":false,"rewrites":[[{"startsSentence":true,"word":"i'll"},{"opensPhrase":2,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"word":"one"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"endsSentence":true,"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":3,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"word":"one"},{"opensPhrase":3,"spare":["now"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"endsSentence":true,"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":4,"spare":["call","no","one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":4,"spare":["one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":5,"spare":["call","no","one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"word":"instead"},{"endsSentence":true,"word":"now"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":5,"spare":["one"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"word":"instead"},{"endsSentence":true,"word":"now"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":2,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"opensPhrase":1,"spare":["one"],"word":"one"},{"endsSentence":true,"word":"now"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"opensPhrase":2,"spare":["call"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"opensPhrase":2,"spare":["one"],"word":"one"},{"word":"instead"},{"endsSentence":true,"word":"now"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":1,"spare":["one"],"word":"one"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"endsSentence":true,"word":"email"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":2,"spare":["one"],"word":"one"},{"word":"instead"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"endsSentence":true,"word":"email"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":1,"spare":["one"],"word":"one"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"word":"email"},{"endsSentence":true,"word":"instead"}],[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"opensPhrase":2,"spare":["one"],"word":"one"},{"word":"instead"},{"opensPhrase":2,"spare":["now"],"startsSentence":true,"word":"i'll"},{"word":"email"}]],"said":[{"startsSentence":true,"word":"i'll"},{"word":"call"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"now"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"scratch"},{"endsSentence":true,"isCue":true,"word":"that"},{"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCue":true,"word":"no"},{"word":"one"},{"endsSentence":true,"word":"instead"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"i'll"},{"word":"email"},{"isCapitalised":true,"word":"noah"},{"word":"instead"}]},"verdicts":{"deep":{"rejected":{"description":"changed more than a repair may","reason":"invalidRepair"}},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} +{"deepMultiline":{"accepted":"The shop closes at 10 a.m. today."},"outcome":{"completed":"The shop closes at 10 a.m. today."},"parts":{"cleanedCues":0,"cleanedWords":["the","shop","closes","at","10","am","today"],"droppedContent":4,"droppedRun":7,"gaps":[{"deleted":[4,5,6,7,8,9,10],"inserted":[]},{"deleted":[],"inserted":[6]}],"isCorrection":false,"keepsPlaceholders":true,"losesNegation":false,"matches":[0,1,2,3,null,null,null,null,null,null,null,4,5],"movesOrDropsName":false,"names":[],"rawCues":2,"rawWords":["the","shop","closes","at","3","pm","today","sorry","i","meant","at","10","am"],"similarity":"0.5","wordRatio":"0.5384615384615384"},"placeholders":[],"raw":"The shop closes at 3 p.m. today. Sorry, I meant at 10 a.m.","repair":{"accepts":true,"rewrites":[[{"startsSentence":true,"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["shop"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"isCapitalised":true,"isCue":true,"opensPhrase":2,"spare":["closes"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"3"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["shop"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"isCapitalised":true,"isCue":true,"opensPhrase":3,"spare":["closes"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"at"},{"word":"3"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["3"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["3","pm"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"today"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["3","pm","today"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"endsSentence":true,"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["pm"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"today"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["pm","today"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"endsSentence":true,"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"isCapitalised":true,"isCue":true,"opensPhrase":4,"spare":["today"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"endsSentence":true,"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["3"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"word":"am"},{"word":"pm"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["3","pm"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"word":"am"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["3","pm","today"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["pm"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"word":"am"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["pm","today"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"isCapitalised":true,"isCue":true,"opensPhrase":5,"spare":["today"],"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"opensPhrase":2,"spare":["3"],"word":"at"},{"word":"10"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"opensPhrase":2,"spare":["3","pm"],"word":"at"},{"word":"10"},{"endsSentence":true,"word":"today"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"opensPhrase":2,"spare":["3","pm","today"],"word":"at"},{"endsSentence":true,"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"opensPhrase":2,"spare":["today"],"word":"at"},{"endsSentence":true,"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"opensPhrase":3,"spare":["3"],"word":"at"},{"word":"10"},{"word":"am"},{"word":"pm"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"opensPhrase":3,"spare":["3","pm"],"word":"at"},{"word":"10"},{"word":"am"},{"endsSentence":true,"word":"today"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"opensPhrase":3,"spare":["3","pm","today"],"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"opensPhrase":3,"spare":["today"],"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}]],"said":[{"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"3"},{"word":"pm"},{"endsSentence":true,"word":"today"},{"isCue":true,"mayBeName":true,"startsSentence":true,"word":"sorry"},{"isCapitalised":true,"isCue":true,"word":"i"},{"isCue":true,"word":"meant"},{"word":"at"},{"word":"10"},{"endsSentence":true,"word":"am"}],"written":[{"isCapitalised":true,"startsSentence":true,"word":"the"},{"word":"shop"},{"word":"closes"},{"word":"at"},{"word":"10"},{"word":"am"},{"startsSentence":true,"word":"today"}]},"verdicts":{"deep":{"accepted":"The shop closes at 10 a.m. today."},"high":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"light":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}},"medium":{"rejected":{"description":"removed words that were not a self-correction","reason":"invalidSelfCorrection"}},"none":{"rejected":{"description":"resolved a self-correction at a level that keeps every word","reason":"selfCorrectionNotAllowed"}}}} diff --git a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift index 5f66572..239ee72 100644 --- a/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift +++ b/Packages/LiveTranscribeKit/Sources/Cleanup/SelfRepairCorrections.swift @@ -36,6 +36,10 @@ extension SelfRepair { /// that word too ("The billing service goes live. Sorry, I mean the login service." → "The /// login service goes live."). Nor does a fact or a name leave the one of its sort just before /// the words it corrects ("three servers, sorry, four" corrects "three", never only "servers"). + /// Medium's take back no more than the corrected words said again ("the physio team, sorry, + /// not physio, nursing" is never "the nursing"), and no less than a sentence that a phrase + /// opening the way it did starts again ("Ship it to Prague, scratch that, hold it until + /// September" is never "Ship it to hold it until September"). enum Corrections { /// Medium's corrections in the words said, by said index. struct Spans { @@ -77,6 +81,11 @@ extension SelfRepair { // A lone "No" after a question answers it ("Is it on Tuesday? No, not Tuesday, // Thursday."), as ``once(_:repair:placeholders:)`` reads it. let answers = crosses && words[cueStart - 1].endsQuestion && words[cueStart].word == "no" + // The first word that carries meaning in the sentence the corrected words end, if + // the cues can take back from there. + let first = (words[..= cueStart ? $0 : nil } for start in max(0, cueStart - repair.retractionLimit).. opening, repair.restarts(words[opening.., phrase: ArraySlice) -> Bool { + let opening = phrase.filter { !isFiller($0.word) } + guard let lead = opening.first, let first = said.first else { return false } + func saysAgain(_ said: SaidWord, _ word: SaidWord) -> Bool { + said.word == word.word || (carriesMeaning(said) && WordForms.areForms(said.word, word.word)) + } + if saysAgain(first, lead) { return true } + guard opening.count > 1 else { return false } + let next = opening[1] + let leadsIn = !carriesMeaning(lead) || WordForms.droppable.contains(lead.word) + return (carriesMeaning(lead) && said.dropFirst().first.map { saysAgain($0, next) } == true) + || (leadsIn && saysAgain(first, next)) + } + /// Whether `word` says something a correction can take back or say instead: it holds more than /// the grammar together, and isn't a filler, a cue, or a cue as speech-to-text misheard it /// ("know" for "no"). diff --git a/Packages/LiveTranscribeKit/Tests/CleanupTests/CleanupFixtures+DeepGuardCases.swift b/Packages/LiveTranscribeKit/Tests/CleanupTests/CleanupFixtures+DeepGuardCases.swift index 933e416..ce6b40e 100644 --- a/Packages/LiveTranscribeKit/Tests/CleanupTests/CleanupFixtures+DeepGuardCases.swift +++ b/Packages/LiveTranscribeKit/Tests/CleanupTests/CleanupFixtures+DeepGuardCases.swift @@ -12,7 +12,7 @@ extension CleanupFixtures.Guard { /// the search's limits. static var deepCases: [Case] { selfRepairTestCases + layoutCases + numberRepairCases + acronymCases + contractionCases + repairNameCases - + cueCases + crossSentenceCases + repairEdgeCases + + cueCases + crossSentenceCases + repairEdgeCases + correctionMeaningCases } /// SelfRepairTests, every input. @@ -490,4 +490,79 @@ extension CleanupFixtures.Guard { completed("So um the bus is late.", "So the bus is late.", policy: Policy(fillers: ["So"])), ] } + + /// SelfRepairTests' corrections read for their meaning: what each takes back, the key word + /// its phrase says instead, the corrected words said again, and a sentence started again. + private static var correctionMeaningCases: [Case] { + [ + completed("book the blue room sorry the green room for friday", "Book the green room for Friday."), + completed("send it to the finance team make that the legal team today", "Send it to the legal team today."), + completed("ask the designer i mean the developer to check it", "Ask the developer to check it."), + completed("we're migrating the load balancer make that the scheduler next week", "We're migrating the scheduler next week."), + completed("paint the fence red no wait blue", "Paint the fence blue."), + completed("we need three servers sorry four", "We need four servers."), + completed("send it to sam sorry to priya", "Send it to Priya."), + completed("the demo is next week sorry the after next", "The demo is the week after next."), + completed("i'm meeting divya at the station actually nikhil", "I'm meeting Nikhil at the station."), + completed("The billing service goes live next Tuesday. Sorry, I mean the login service.", "The login service goes live next Tuesday."), + completed("fuel efficiency in cars sorry busses", "Fuel efficiency in buses."), + completed("book the blue room sorry the green room for friday", "Book the blue room for Friday."), + completed("book the blue room sorry the green room for friday", "Book the room for Friday."), + completed("book the blue room sorry the green room for friday", "Book the blue green room for Friday."), + completed("Book the blue room, sorry, the green room for Friday.", "Book the blue room for Friday."), + completed("send it to the finance team make that the legal team today", "Send it to the finance team today."), + completed("ask the designer i mean the developer to check it", "Ask the designer to check it."), + completed("we're migrating the load balancer make that the scheduler next week", "We're migrating the load balancer next week."), + completed("paint the fence red no wait blue", "Paint the fence red."), + completed("we need three servers sorry four", "We need four three servers."), + completed("send it to sam sorry to priya", "Send it to Priya Sam."), + completed("I left my charger in the garage. Actually, the lobby.", "I left my charger in the garage lobby."), + completed("The demo is on Tuesday at noon. Sorry, Wednesday.", "The demo is on Tuesday Wednesday at noon."), + completed("Invite Sam to the launch. Sorry, Priya.", "Invite Sam and Priya to the launch."), + completed("fuel efficiency in cars sorry busses", "Fuel efficiency in trains."), + completed("i wanted to say sorry to jo", "I wanted to say it to Jo."), + completed("we need three servers sorry four", "We need three four servers."), + completed("we need three servers sorry four", "We need three or four servers."), + completed("we need three of the servers sorry four", "We need three of the four servers."), + completed("Invite Sam to the launch. Sorry, Priya.", "Invite Sam, Priya to the launch."), + completed("Invite Sam to the launch, sorry, Priya.", "Invite Sam and Priya to the launch."), + completed("I am meeting Divya at the station. Actually, Nikhil.", "I am meeting Divya and Nikhil at the station."), + completed("I am meeting Divya at the station. Actually, Nikhil.", "I am meeting Divya Nikhil at the station."), + completed("Call me on Tuesday, no, Wednesday.", "Call me on Tuesday or Wednesday."), + completed("We have two weeks left. Sorry, three.", "We have two or three weeks left."), + completed("two people said we need servers sorry four", "Two people said we need four servers."), + completed("we need three of the servers sorry four", "We need four of the servers."), + completed("Invite Sam to the launch. Sorry, Priya.", "Invite Priya to the launch."), + completed("Invite Sam to the launch, sorry, Priya.", "Invite Priya to the launch."), + completed("I am meeting Divya at the station. Actually, Nikhil.", "I am meeting Nikhil at the station."), + completed("meet me at the station sorry at six", "Meet me at six."), + completed("Ask Sam to email Ana, sorry, Priya.", "Ask Sam to email Priya."), + completed("Ask Sam to email Ana, sorry, Priya.", "Ask Priya to email Ana."), + completed("We have two weeks left. Sorry, three.", "We have three weeks left."), + completed("Can you bring the monitor, wait node, the router to the meeting?", "Can you bring the router to the meeting?"), + completed("The city is buying more electric buses, no weight vans.", "The city is buying more electric vans."), + completed("Dinner is on Saturday. Sorry, no theon Tuesday.", "Dinner is on Tuesday."), + completed("The product review is on the 12th of October. No sorry thee of November.", "The product review is on the 12th of November."), + completed("Ship it to Prague, scratch that, hold it until September.", "Hold it until September."), + completed("ship it to prague scratch that hold it until june", "Hold it until June."), + completed("Ship it to Lisbon, scratch that, hold it until November.", "Hold it until November."), + completed("Ship it to Prague, scratch that, Vienna.", "Ship it to Vienna."), + completed("Book the early flight. Scratch that. Book the afternoon one.", "Book the afternoon one."), + completed("Put the box on the table, sorry, under the table.", "Put the box under the table."), + completed("We need to restart the off service. Actually, the database.", "We need to restart the database."), + completed("The leak is under the sink, rather, behind the dishwasher.", "The leak is behind the dishwasher."), + completed("Ship it to Prague, scratch that, hold it until September.", "Ship it to hold it until September."), + completed("ship it to prague scratch that hold it until june", "Ship it to hold it until June."), + completed("Ship it to Lisbon, scratch that, hold it until November.", "Ship it to Hold it until November."), + completed("the physio team sorry not physio nursing will join the call at noon", "The nursing team will join the call at noon."), + completed("Kofi's brother, no wait, not brother, cousin, is hosting the barbecue.", "Kofi's cousin is hosting the barbecue."), + completed("nikhil's team sorry not nikhil's siobhan's owns the billing service", "Siobhan's team owns the billing service."), + completed("the physio team sorry not physio nursing will join the call at noon", "The nursing will join the call at noon."), + completed("Kofi's brother, no wait, not brother, cousin, is hosting the barbecue.", "Cousin is hosting the barbecue."), + completed("nikhil's team sorry not nikhil's siobhan's owns the billing service", "Siobhan's owns the billing service."), + completed("I'll call no one now. Scratch that. I'll email no one instead.", "I'll email no one instead."), + completed("I'll call no one now. Scratch that. I'll email no one instead.", "I'll email Noah instead."), + completed("The shop closes at 3 p.m. today. Sorry, I meant at 10 a.m.", "The shop closes at 10 a.m. today."), + ] + } } diff --git a/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift b/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift index d8fd53a..b9905e8 100644 --- a/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift +++ b/Packages/LiveTranscribeKit/Tests/CleanupTests/SelfRepairTests.swift @@ -249,6 +249,51 @@ struct SelfRepairTests { #expect(review("The shop closes at 3 p.m. today. Sorry, I meant at 10 a.m.", cleaned) == .accepted(cleaned)) } + /// A phrase that opens the way its sentence did starts it again ("Ship it" → "hold it"), so + /// it takes back from where the sentence opened, and never leaves its start in front. + @Test("A phrase that opens the way its sentence did starts it again", arguments: [ + ("Ship it to Prague, scratch that, hold it until September.", "Hold it until September."), + ("ship it to prague scratch that hold it until june", "Hold it until June."), + ("Ship it to Lisbon, scratch that, hold it until November.", "Hold it until November."), + ("Ship it to Prague, scratch that, Vienna.", "Ship it to Vienna."), + ("Book the early flight. Scratch that. Book the afternoon one.", "Book the afternoon one."), + ("Put the box on the table, sorry, under the table.", "Put the box under the table."), + ("We need to restart the off service. Actually, the database.", "We need to restart the database."), + ("The leak is under the sink, rather, behind the dishwasher.", "The leak is behind the dishwasher."), + ]) + func startsASentenceAgain(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .accepted(cleaned)) + } + + @Test("A sentence started again never keeps its start in front", arguments: [ + ("Ship it to Prague, scratch that, hold it until September.", "Ship it to hold it until September."), + ("ship it to prague scratch that hold it until june", "Ship it to hold it until June."), + ("Ship it to Lisbon, scratch that, hold it until November.", "Ship it to Hold it until November."), + ]) + func rejectsKeepingTheStartOfASentenceStartedAgain(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .rejected(.invalidRepair)) + } + + /// The corrected words said again after "not" are what a correction takes back, and the + /// words beside them stay. + @Test("A correction takes back the corrected words said again", arguments: [ + ("the physio team sorry not physio nursing will join the call at noon", "The nursing team will join the call at noon."), + ("Kofi's brother, no wait, not brother, cousin, is hosting the barbecue.", "Kofi's cousin is hosting the barbecue."), + ("nikhil's team sorry not nikhil's siobhan's owns the billing service", "Siobhan's team owns the billing service."), + ]) + func takesBackTheWordsSaidAgain(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .accepted(cleaned)) + } + + @Test("A correction takes back no more than the corrected words said again", arguments: [ + ("the physio team sorry not physio nursing will join the call at noon", "The nursing will join the call at noon."), + ("Kofi's brother, no wait, not brother, cousin, is hosting the barbecue.", "Cousin is hosting the barbecue."), + ("nikhil's team sorry not nikhil's siobhan's owns the billing service", "Siobhan's owns the billing service."), + ]) + func rejectsTakingBackMoreThanTheWordsSaidAgain(raw: String, cleaned: String) { + #expect(review(raw, cleaned) == .rejected(.invalidRepair)) + } + @Test("A cue followed by \"not\" and the corrected words said again goes with them", arguments: [ ("The meeting is in room four, no, not four, five.", "The meeting is in room five."), ("Book the flight for Tuesday, sorry, not Tuesday, Thursday morning.", "Book the flight for Thursday morning."), diff --git a/linux-windows/crates/cleanup/src/self_repair/corrections.rs b/linux-windows/crates/cleanup/src/self_repair/corrections.rs index edde2f3..d406b97 100644 --- a/linux-windows/crates/cleanup/src/self_repair/corrections.rs +++ b/linux-windows/crates/cleanup/src/self_repair/corrections.rs @@ -32,7 +32,10 @@ //! back ([`SelfRepair::leaves_taken_back`]); it corrects that word too ("The billing service goes //! live. Sorry, I mean the login service." → "The login service goes live."). Nor does a fact or //! a name leave the one of its sort just before the words it corrects ("three servers, sorry, -//! four" corrects "three", never only "servers"). +//! four" corrects "three", never only "servers"). Medium's take back no more than the corrected +//! words said again ("the physio team, sorry, not physio, nursing" is never "the nursing"), and no +//! less than a sentence that a phrase opening the way it did starts again ("Ship it to Prague, +//! scratch that, hold it until September" is never "Ship it to hold it until September"). use std::collections::{BTreeMap, BTreeSet, HashMap}; use std::ops::Range; @@ -125,6 +128,17 @@ pub(super) fn spans(words: &[SaidWord], repair: &SelfRepair, placeholders: &Word // A lone "No" after a question answers it ("Is it on Tuesday? No, not Tuesday, // Thursday."), as [`once`] reads it. let answers = crosses && words[cue_start - 1].ends_question && same(&words[cue_start].word, "no"); + // The first word that carries meaning in the sentence the corrected words end, if the cues + // can take back from there. + let opening = { + let first = words[..cue_start.saturating_sub(1)] + .iter() + .rposition(|word| word.ends_sentence) + .map_or(0, |end| end + 1); + (first..cue_start) + .find(|&index| repair.carries_meaning(&words[index])) + .filter(|&index| index + repair.max_retracted_words >= cue_start) + }; for start in cue_start.saturating_sub(repair.max_retracted_words)..cue_start { let corrected = &words[start..cue_start]; if corrected[..corrected.len() - 1].iter().any(|word| word.ends_sentence) @@ -149,10 +163,15 @@ pub(super) fn spans(words: &[SaidWord], repair: &SelfRepair, placeholders: &Word continue; } for (end, restated) in phrase_starts(run_end, words, repair) { + // Corrected words said again are what the correction takes back, all of it: + // "the physio team, sorry, not physio, nursing" corrects "physio", and is + // never "the nursing". + let all_corrected = restated + .clone() + .is_some_and(|restated| repair.restates(corrected, &words[restated])); let among_corrected = restated .clone() - .is_none_or(|restated| repair.restates(&words[restated], corrected)); - let all_corrected = restated.is_some_and(|restated| repair.restates(corrected, &words[restated])); + .is_none_or(|restated| repair.restates(&words[restated], corrected) && all_corrected); let stands_in = ends_sentence_before && words.get(end).is_some_and(|first| { content(first) == content(&corrected[0]) @@ -165,9 +184,15 @@ pub(super) fn spans(words: &[SaidWord], repair: &SelfRepair, placeholders: &Word .find(|word| content(word)) .is_some_and(|word| repair.fact_kind(word, false).is_some())); let phrase = &words[end..end + phrase_length(end, words).min(CORRECTION_PHRASE_WORDS)]; + // A phrase that opens the way its sentence did starts it again, and takes back + // from there: "Ship it to Prague, scratch that, hold it until September" is + // never "Ship it to hold it until September". + let after_restart = opening + .is_some_and(|opening| start > opening && repair.restarts(&words[opening..cue_start], phrase)); if (end < words.len() && repair.is_cue(&words[end].word)) || !among_corrected || (crosses && !retracts_statement && !all_corrected && !stands_in) + || after_restart || repair.leaves_taken_back(words, start..cue_start, phrase) { continue; @@ -524,6 +549,29 @@ impl SelfRepair { .any(|other| same(&other.word, text) || word_forms::are_forms(&other.word, text)) } + /// Whether a correction's `phrase` starts again the sentence whose words from its first that + /// carries meaning up to the cues are `said`: the phrase's first word is that word ("Book the + /// early flight. Scratch that. Book the afternoon one."); or carries meaning in its place, and + /// its second is the word said next ("ship it" → "hold it"); or says nothing new before a + /// second that is that word ("ship it" → "just ship it"). A word is said again as itself, or + /// as another form of a word that carries meaning. + fn restarts(&self, said: &[SaidWord], phrase: &[SaidWord]) -> bool { + let mut opening = phrase.iter().filter(|word| !self.is_filler(&word.word)); + let (Some(lead), next) = (opening.next(), opening.next()) else { + return false; + }; + let says_again = |said: &SaidWord, word: &SaidWord| { + same(&said.word, &word.word) + || (self.carries_meaning(said) && word_forms::are_forms(&said.word, &word.word)) + }; + let leads_in = !self.carries_meaning(lead) || word_forms::is_droppable(&lead.word); + says_again(&said[0], lead) + || next.is_some_and(|next| { + (self.carries_meaning(lead) && said.get(1).is_some_and(|second| says_again(second, next))) + || (leads_in && says_again(&said[0], next)) + }) + } + /// Whether `word` says something a correction can take back or say instead: it holds more than /// the grammar together, and isn't a filler, a cue, or a cue as speech-to-text misheard it /// ("know" for "no"). diff --git a/linux-windows/crates/cleanup/src/self_repair/tests.rs b/linux-windows/crates/cleanup/src/self_repair/tests.rs index 9ab6ada..7e47d0b 100644 --- a/linux-windows/crates/cleanup/src/self_repair/tests.rs +++ b/linux-windows/crates/cleanup/src/self_repair/tests.rs @@ -929,3 +929,54 @@ fn an_abbreviation_ends_a_sentence_only_before_a_capital() { "The shop closes at 10 a.m. today.", )]); } + +#[test] +fn a_phrase_that_opens_the_way_its_sentence_did_starts_it_again() { + let prague = "Ship it to Prague, scratch that, hold it until September."; + let june = "ship it to prague scratch that hold it until june"; + let lisbon = "Ship it to Lisbon, scratch that, hold it until November."; + assert_rejected(&[ + (prague, "Ship it to hold it until September."), + (june, "Ship it to hold it until June."), + (lisbon, "Ship it to Hold it until November."), + ]); + assert_accepted(&[ + (prague, "Hold it until September."), + (june, "Hold it until June."), + (lisbon, "Hold it until November."), + ("Ship it to Prague, scratch that, Vienna.", "Ship it to Vienna."), + ( + "Book the early flight. Scratch that. Book the afternoon one.", + "Book the afternoon one.", + ), + ( + "Put the box on the table, sorry, under the table.", + "Put the box under the table.", + ), + ( + "We need to restart the off service. Actually, the database.", + "We need to restart the database.", + ), + ( + "The leak is under the sink, rather, behind the dishwasher.", + "The leak is behind the dishwasher.", + ), + ]); +} + +#[test] +fn a_correction_takes_back_no_more_than_the_corrected_words_said_again() { + let physio = "the physio team sorry not physio nursing will join the call at noon"; + let kofi = "Kofi's brother, no wait, not brother, cousin, is hosting the barbecue."; + let nikhil = "nikhil's team sorry not nikhil's siobhan's owns the billing service"; + assert_rejected(&[ + (physio, "The nursing will join the call at noon."), + (kofi, "Cousin is hosting the barbecue."), + (nikhil, "Siobhan's owns the billing service."), + ]); + assert_accepted(&[ + (physio, "The nursing team will join the call at noon."), + (kofi, "Kofi's cousin is hosting the barbecue."), + (nikhil, "Siobhan's team owns the billing service."), + ]); +}