#JavaScript (ES6), 170 bytes s=>s.split(/0{7}/).map(e=>e.split`000`.map(e=>' ETIANMSURWDKGOHVF L PJBXCYZQ'[c=parseInt(1+e.replace(/111|./g,e=>e<1?'':+(e>1)),2)]||'473168290 5'[c%11]).join``).join` ` <!-- begin snippet: js hide: false console: true babel: false --> <!-- language: lang-js --> let f= s=>s.split(/0{7}/).map(e=>e.split`000`.map(e=>' ETIANMSURWDKGOHVF L PJBXCYZQ'[c=parseInt(1+e.replace(/111|./g,e=>e<1?'':+(e>1)),2)]||'473168290 5'[c%11]).join``).join` ` console.log(f('101010100010001011101010001011101010001110111011100000001011101110001110111011100010111010001011101010001110101')) console.log(f('10100000001011100011101110000000101110000000101011101000101000101010001010101')); console.log(f('1010111011101110001110111011101110111000101110111011101110001110111010101')); console.log(f('101010001110111011100010101')); <!-- end snippet -->