hanlint 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -1
- package/data/checkResult.schema.json +75 -0
- package/data/checkResultV2.schema.json +98 -0
- package/data/finding.schema.json +38 -0
- package/data/patch.schema.json +14 -0
- package/data/patchResult.schema.json +86 -0
- package/data/patchResultV2.schema.json +71 -0
- package/data/profiles.json +1 -1
- package/data/pythonPackages.txt +3 -2
- package/data/readerContract.schema.json +20 -0
- package/data/readerContractConformanceV1.json +168 -0
- package/data/readerContractV2.schema.json +64 -0
- package/data/ruleDocs.json +3 -3
- package/data/version.json +1 -1
- package/data/writingBrief.schema.json +1 -1
- package/data/writingBriefV2.schema.json +1 -1
- package/package.json +1 -1
- package/src/cli/help.js +34 -0
- package/src/cli/main.js +241 -28
- package/src/config/patch.js +48 -0
- package/src/config/readerContract.js +245 -0
- package/src/config/settings.js +31 -2
- package/src/data/profiles.js +12 -0
- package/src/fingerprint/codeMarkers.js +1 -1
- package/src/guard/contract.js +174 -0
- package/src/guard/editLocality.js +27 -0
- package/src/guard/outline.js +46 -0
- package/src/guard/receipt.js +180 -0
- package/src/guard/surface.js +184 -0
- package/src/index.js +39 -1
- package/src/report/compactReport.js +1 -1
- package/src/report/writingSpec.js +174 -0
- package/src/rules/code/inputFileSource.js +5 -3
- package/src/rules/code/installImport.js +6 -5
- package/src/rules/document/noQuestion.js +4 -4
- package/src/rules/readerDebt.js +9 -0
- package/src/rules/registry.js +27 -0
- package/src/rules/sentence/nounPile.js +1 -1
package/data/profiles.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":1,"cap":200,"types":{"blog":{"documents":10,"sentences":1140,"paragraphs":507,"sentence":{"length":{"total":1140,"counts":{"1":5,"2":8,"3":12,"4":21,"5":22,"6":49,"7":53,"8":79,"9":101,"10":98,"11":63,"12":70,"13":72,"14":64,"15":52,"16":61,"17":47,"18":40,"19":39,"20":32,"21":22,"22":12,"23":26,"24":20,"25":12,"26":9,"27":8,"28":11,"29":9,"30":6,"31":5,"32":3,"33":1,"34":1,"35":2,"36":2,"42":1,"69":1,"117":1},"p50":12,"p90":23,"p95":26,"p99":32},"commas":{"total":1140,"counts":{"0":641,"1":354,"2":92,"3":32,"4":9,"5":7,"6":1,"7":1,"9":1,"31":1,"116":1},"p50":0,"p90":2,"p95":2,"p99":5},"euiCount":{"total":1140,"counts":{"0":737,"1":357,"2":40,"3":6},"p50":0,"p90":1,"p95":1,"p99":2},"nounRun":{"total":1140,"counts":{"0":83,"1":550,"2":367,"3":106,"4":31,"5":2,"7":1},"p50":1,"p90":3,"p95":3,"p99":4},"deixis":{"total":1140,"counts":{"0":1084,"1":55,"2":1},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":1140,"counts":{"0":1132,"1":8},"p50":0,"p90":0,"p95":0,"p99":0},"numbers":{"total":1140,"counts":{"0":791,"1":244,"2":65,"3":13,"4":5,"5":7,"6":4,"7":3,"8":1,"9":1,"10":2,"13":2,"17":1,"36":1},"p50":0,"p90":1,"p95":2,"p99":6},"newTopics":{"total":1140,"counts":{"0":141,"1":164,"2":172,"3":160,"4":153,"5":91,"6":88,"7":48,"8":41,"9":26,"10":15,"11":16,"12":5,"13":8,"14":4,"15":3,"16":2,"19":1,"29":1,"98":1},"p50":3,"p90":8,"p95":9,"p99":14},"causal":{"total":1140,"counts":{"0":932,"1":174,"2":32,"3":2},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":507,"counts":{"1":198,"2":139,"3":86,"4":46,"5":20,"6":11,"7":3,"8":3,"11":1},"p50":2,"p90":4,"p95":5,"p99":7}},"endingRuns":{"total":544,"counts":{"1":259,"2":143,"3":75,"4":40,"5":13,"6":8,"7":3,"8":3},"p50":2,"p90":4,"p95":4,"p99":7},"endingTransitions":{"것이다|것이다":4,"것이다|니다":8,"것이다|다":3,"것이다|명령":1,"것이다|의문":2,"니다|것이다":8,"니다|니다":450,"니다|다":1,"니다|명령":17,"니다|없음":10,"다|것이다":5,"다|니다":1,"다|다":86,"다|명령":3,"다|없음":1,"다|의문":1,"명령|니다":8,"명령|다":2,"명령|명령":4,"명령|없음":2,"없음|것이다":1,"없음|니다":9,"없음|다":1,"요|명령":1,"의문|니다":2,"의문|다":2},"rates":{"connector":{"p50":0.031,"p90":0.1184,"p95":0.1186,"p99":0.1186},"question":{"p50":0.0,"p90":0.0333,"p95":0.0395,"p99":0.0395},"readerCall":{"p50":0.0075,"p90":0.0263,"p95":0.0667,"p99":0.0667},"deixis":{"p50":0.0667,"p90":0.1017,"p95":0.1167,"p99":0.1167}}},"encyclopedia":{"documents":363,"sentences":53341,"paragraphs":12238,"sentence":{"length":{"total":53341,"counts":{"1":154,"2":159,"3":233,"4":555,"5":909,"6":1488,"7":2059,"8":2491,"9":2788,"10":3048,"11":3147,"12":3343,"13":3192,"14":3032,"15":2998,"16":2736,"17":2525,"18":2332,"19":2146,"20":1915,"21":1675,"22":1445,"23":1238,"24":1113,"25":952,"26":824,"27":712,"28":602,"29":520,"30":467,"31":330,"32":302,"33":283,"34":228,"35":182,"36":164,"37":146,"38":99,"39":100,"40":87,"41":78,"42":88,"43":41,"44":36,"45":28,"46":41,"47":30,"48":27,"49":30,"50":15,"51":7,"52":13,"53":18,"54":17,"55":8,"56":6,"57":13,"58":5,"59":4,"60":5,"61":2,"62":4,"63":11,"64":5,"65":7,"66":7,"67":3,"68":2,"69":4,"70":2,"71":1,"72":3,"73":2,"74":2,"76":2,"77":2,"78":5,"80":2,"82":2,"83":1,"84":4,"86":2,"87":1,"88":1,"89":1,"90":1,"91":2,"92":1,"97":1,"98":1,"100":1,"103":1,"104":1,"106":1,"107":1,"108":1,"109":1,"110":1,"117":1,"124":1,"125":1,"130":1,"133":1,"134":1,"137":1,"138":1,"139":1,"156":1,"167":1,"172":1,"195":1,"196":1,"200":6},"p50":15,"p90":26,"p95":30,"p99":42},"commas":{"total":53341,"counts":{"0":28149,"1":16880,"2":4862,"3":1831,"4":751,"5":395,"6":183,"7":89,"8":59,"9":38,"10":26,"11":12,"12":20,"13":10,"14":5,"15":6,"16":7,"17":3,"18":6,"19":1,"20":1,"21":1,"22":1,"23":1,"25":1,"31":1,"35":1,"40":1},"p50":0,"p90":2,"p95":3,"p99":5},"euiCount":{"total":53341,"counts":{"0":22330,"1":18489,"2":8281,"3":2851,"4":901,"5":318,"6":114,"7":34,"8":9,"9":5,"10":1,"11":2,"12":2,"14":2,"15":1,"16":1},"p50":1,"p90":2,"p95":3,"p99":4},"nounRun":{"total":53341,"counts":{"0":4588,"1":26373,"2":16064,"3":4716,"4":1196,"5":299,"6":77,"7":21,"8":4,"9":2,"10":1},"p50":1,"p90":3,"p95":3,"p99":4},"deixis":{"total":53341,"counts":{"0":51881,"1":1433,"2":27},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":53341,"counts":{"0":52803,"1":536,"2":2},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":53341,"counts":{"0":29651,"1":9248,"2":5873,"3":3753,"4":2045,"5":1119,"6":681,"7":370,"8":234,"9":112,"10":77,"11":49,"12":25,"13":19,"14":20,"15":17,"16":2,"17":6,"18":4,"19":7,"20":5,"21":1,"22":1,"24":1,"25":1,"28":2,"29":1,"30":3,"31":1,"33":1,"45":2,"47":1,"54":1,"60":2,"69":1,"71":2,"78":1,"82":1,"100":1},"p50":0,"p90":3,"p95":5,"p99":8},"newTopics":{"total":53341,"counts":{"0":3013,"1":5478,"2":6977,"3":7180,"4":6601,"5":5732,"6":4622,"7":3533,"8":2783,"9":2022,"10":1490,"11":1050,"12":763,"13":577,"14":425,"15":296,"16":201,"17":131,"18":121,"19":75,"20":53,"21":32,"22":29,"23":26,"24":26,"25":25,"26":11,"27":11,"28":11,"29":5,"30":3,"31":8,"32":2,"34":4,"35":1,"36":4,"38":2,"39":2,"43":2,"44":1,"46":1,"47":1,"48":2,"49":1,"50":2,"51":1,"55":1,"60":1,"62":1,"74":1,"103":1},"p50":4,"p90":10,"p95":12,"p99":17},"causal":{"total":53341,"counts":{"0":42272,"1":9419,"2":1420,"3":201,"4":25,"5":4},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":12238,"counts":{"1":1511,"2":1943,"3":2175,"4":1904,"5":1518,"6":1045,"7":708,"8":470,"9":291,"10":214,"11":141,"12":81,"13":56,"14":51,"15":32,"16":24,"17":11,"18":12,"19":8,"20":5,"21":10,"22":2,"23":3,"24":4,"25":5,"26":2,"27":3,"29":1,"31":1,"33":1,"34":1,"35":1,"36":3,"37":1},"p50":4,"p90":8,"p95":10,"p99":15}},"endingRuns":{"total":13758,"counts":{"1":2839,"2":2339,"3":2382,"4":1918,"5":1482,"6":992,"7":638,"8":397,"9":263,"10":186,"11":117,"12":43,"13":43,"14":40,"15":22,"16":14,"17":8,"18":8,"19":5,"20":6,"21":7,"22":1,"24":3,"25":3,"27":1,"30":1},"p50":3,"p90":7,"p95":9,"p99":13},"endingTransitions":{"것이다|것이다":40,"것이다|니다":6,"것이다|다":604,"것이다|명령":1,"것이다|없음":8,"것이다|의문":1,"니다|것이다":7,"니다|니다":49,"니다|다":97,"니다|명령":3,"니다|없음":6,"니다|요":7,"니다|의문":1,"니다|죠":8,"다|것이다":709,"다|니다":98,"다|다":38047,"다|명령":7,"다|없음":588,"다|요":29,"다|의문":12,"다|죠":3,"명령|것이다":1,"명령|다":16,"명령|명령":1,"명령|없음":1,"없음|것이다":5,"없음|니다":3,"없음|다":351,"없음|명령":2,"없음|없음":297,"없음|요":3,"없음|의문":3,"없음|죠":1,"요|니다":7,"요|다":25,"요|없음":4,"요|요":13,"요|죠":3,"의문|것이다":1,"의문|니다":2,"의문|다":14,"의문|없음":3,"의문|의문":2,"죠|니다":5,"죠|다":4,"죠|없음":3,"죠|요":2},"rates":{"connector":{"p50":0.083,"p90":0.1558,"p95":0.1859,"p99":0.2542},"question":{"p50":0.0,"p90":0.0,"p95":0.0058,"p99":0.0189},"readerCall":{"p50":0.0,"p90":0.0058,"p95":0.0094,"p99":0.0192},"deixis":{"p50":0.0179,"p90":0.0597,"p95":0.0769,"p99":0.1067}}},"essay":{"documents":228,"sentences":21986,"paragraphs":8887,"sentence":{"length":{"total":21986,"counts":{"1":573,"2":747,"3":946,"4":1076,"5":1236,"6":1241,"7":1239,"8":1147,"9":1109,"10":1043,"11":982,"12":918,"13":802,"14":744,"15":689,"16":645,"17":531,"18":509,"19":441,"20":435,"21":392,"22":343,"23":334,"24":317,"25":268,"26":268,"27":243,"28":203,"29":186,"30":165,"31":160,"32":124,"33":135,"34":130,"35":137,"36":96,"37":95,"38":85,"39":93,"40":76,"41":65,"42":69,"43":68,"44":57,"45":54,"46":38,"47":44,"48":42,"49":40,"50":38,"51":31,"52":27,"53":29,"54":30,"55":27,"56":20,"57":20,"58":18,"59":14,"60":16,"61":21,"62":8,"63":15,"64":15,"65":10,"66":17,"67":10,"68":9,"69":10,"70":19,"71":6,"72":4,"73":10,"74":6,"75":7,"76":8,"77":11,"78":11,"79":3,"80":7,"81":10,"82":5,"83":6,"84":8,"85":6,"86":5,"87":5,"88":4,"89":3,"90":7,"91":3,"92":2,"93":4,"94":9,"95":2,"96":2,"97":5,"98":4,"99":2,"100":1,"101":3,"102":1,"103":2,"104":2,"105":3,"107":1,"109":2,"111":1,"113":3,"115":1,"116":2,"119":1,"120":1,"121":1,"122":1,"124":1,"126":2,"128":1,"129":1,"136":2,"141":2,"151":1,"162":1},"p50":11,"p90":31,"p95":40,"p99":70},"commas":{"total":21986,"counts":{"0":14955,"1":4066,"2":1464,"3":653,"4":361,"5":160,"6":114,"7":67,"8":37,"9":32,"10":28,"11":13,"12":9,"13":7,"14":3,"15":3,"16":1,"18":3,"20":1,"22":1,"24":1,"25":1,"27":1,"28":2,"33":1,"54":1,"67":1},"p50":0,"p90":2,"p95":3,"p99":6},"euiCount":{"total":21986,"counts":{"0":14032,"1":4723,"2":1809,"3":708,"4":350,"5":130,"6":99,"7":43,"8":33,"9":29,"10":16,"11":6,"12":1,"13":1,"14":4,"15":1,"17":1},"p50":0,"p90":2,"p95":3,"p99":6},"nounRun":{"total":21986,"counts":{"0":4210,"1":11487,"2":4952,"3":1067,"4":216,"5":43,"6":6,"7":4,"9":1},"p50":1,"p90":2,"p95":3,"p99":4},"deixis":{"total":21986,"counts":{"0":21010,"1":924,"2":47,"3":3,"4":2},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":21986,"counts":{"0":21844,"1":142},"p50":0,"p90":0,"p95":0,"p99":0},"numbers":{"total":21986,"counts":{"0":20694,"1":833,"2":303,"3":86,"4":39,"5":15,"6":7,"7":2,"8":2,"9":2,"10":2,"12":1},"p50":0,"p90":0,"p95":1,"p99":2},"newTopics":{"total":21986,"counts":{"0":3172,"1":3656,"2":3231,"3":2540,"4":2020,"5":1628,"6":1179,"7":943,"8":702,"9":582,"10":427,"11":308,"12":264,"13":209,"14":188,"15":128,"16":124,"17":80,"18":101,"19":68,"20":46,"21":57,"22":43,"23":46,"24":33,"25":31,"26":20,"27":16,"28":14,"29":14,"30":10,"31":8,"32":16,"33":8,"34":9,"35":7,"36":8,"37":6,"38":2,"39":5,"40":4,"41":7,"42":4,"43":1,"44":2,"45":3,"47":1,"48":1,"49":1,"50":3,"51":1,"53":1,"54":2,"56":2,"57":1,"62":1,"66":1,"68":1},"p50":3,"p90":10,"p95":14,"p99":24},"causal":{"total":21986,"counts":{"0":18862,"1":2552,"2":467,"3":88,"4":14,"5":3},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":8887,"counts":{"1":3896,"2":2010,"3":1196,"4":668,"5":419,"6":259,"7":146,"8":93,"9":72,"10":33,"11":26,"12":18,"13":14,"14":16,"15":4,"16":4,"17":2,"18":1,"21":1,"22":1,"23":2,"27":1,"31":1,"33":1,"37":1,"39":1,"77":1},"p50":2,"p90":5,"p95":6,"p99":11}},"endingRuns":{"total":10082,"counts":{"1":6441,"2":1992,"3":843,"4":400,"5":197,"6":98,"7":45,"8":20,"9":21,"10":8,"11":6,"12":4,"13":4,"14":1,"15":1,"21":1},"p50":1,"p90":3,"p95":4,"p99":7},"endingTransitions":{"것이다|것이다":332,"것이다|니다":174,"것이다|다":598,"것이다|명령":4,"것이다|없음":119,"것이다|요":2,"것이다|의문":27,"것이다|죠":3,"니다|것이다":229,"니다|니다":961,"니다|다":158,"니다|명령":13,"니다|없음":151,"니다|요":17,"니다|의문":50,"니다|죠":11,"다|것이다":782,"다|니다":157,"다|다":5597,"다|명령":16,"다|없음":933,"다|요":10,"다|의문":103,"다|죠":4,"명령|것이다":6,"명령|니다":17,"명령|다":13,"명령|명령":11,"명령|없음":26,"명령|요":4,"명령|의문":4,"명령|죠":1,"없음|것이다":128,"없음|니다":86,"없음|다":513,"없음|명령":27,"없음|없음":1131,"없음|요":47,"없음|의문":67,"없음|죠":32,"요|것이다":4,"요|니다":7,"요|다":12,"요|명령":4,"요|없음":70,"요|요":35,"요|의문":7,"요|죠":9,"의문|것이다":29,"의문|니다":47,"의문|다":90,"의문|명령":2,"의문|없음":78,"의문|요":5,"의문|의문":60,"의문|죠":4,"죠|것이다":4,"죠|니다":14,"죠|다":2,"죠|명령":3,"죠|없음":28,"죠|요":9,"죠|의문":3,"죠|죠":9},"rates":{"connector":{"p50":0.0909,"p90":0.2174,"p95":0.28,"p99":0.4118},"question":{"p50":0.0319,"p90":0.122,"p95":0.1522,"p99":0.2206},"readerCall":{"p50":0.0,"p90":0.0127,"p95":0.0385,"p99":0.0714},"deixis":{"p50":0.0404,"p90":0.1744,"p95":0.2308,"p99":0.3684}}},"fiction":{"documents":31,"sentences":30479,"paragraphs":16426,"sentence":{"length":{"total":30479,"counts":{"1":2548,"2":2300,"3":2815,"4":2754,"5":2461,"6":2128,"7":1831,"8":1553,"9":1386,"10":1274,"11":1160,"12":993,"13":843,"14":750,"15":674,"16":626,"17":466,"18":444,"19":419,"20":365,"21":296,"22":244,"23":209,"24":216,"25":168,"26":151,"27":135,"28":118,"29":96,"30":103,"31":80,"32":74,"33":77,"34":73,"35":51,"36":55,"37":36,"38":46,"39":37,"40":28,"41":29,"42":28,"43":32,"44":21,"45":30,"46":16,"47":17,"48":14,"49":22,"50":15,"51":13,"52":13,"53":12,"54":10,"55":6,"56":9,"57":9,"58":11,"59":2,"60":2,"61":4,"62":3,"64":3,"65":7,"66":3,"67":2,"68":3,"69":2,"70":4,"71":3,"72":5,"73":3,"74":1,"75":4,"76":2,"77":1,"78":3,"79":1,"80":3,"82":2,"83":3,"86":1,"87":1,"88":1,"89":2,"93":3,"96":2,"100":3,"102":1,"104":1,"108":1,"112":1,"115":1,"125":1,"126":1,"131":1,"157":1,"172":1},"p50":7,"p90":20,"p95":26,"p99":44},"commas":{"total":30479,"counts":{"0":23415,"1":5701,"2":806,"3":288,"4":115,"5":63,"6":22,"7":24,"8":10,"9":13,"10":5,"11":3,"12":7,"13":1,"14":2,"16":1,"18":1,"19":1,"29":1},"p50":0,"p90":1,"p95":1,"p99":3},"euiCount":{"total":30479,"counts":{"0":24230,"1":4592,"2":1165,"3":323,"4":98,"5":38,"6":15,"7":9,"8":2,"9":2,"10":1,"11":1,"13":1,"14":2},"p50":0,"p90":1,"p95":2,"p99":3},"nounRun":{"total":30479,"counts":{"0":8130,"1":13806,"2":6343,"3":1665,"4":382,"5":109,"6":23,"7":14,"8":5,"9":1,"13":1},"p50":1,"p90":2,"p95":3,"p99":4},"deixis":{"total":30479,"counts":{"0":30101,"1":371,"2":7},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":30479,"counts":{"0":30349,"1":129,"2":1},"p50":0,"p90":0,"p95":0,"p99":0},"numbers":{"total":30479,"counts":{"0":30286,"1":162,"2":22,"3":4,"4":5},"p50":0,"p90":0,"p95":0,"p99":0},"newTopics":{"total":30479,"counts":{"0":11312,"1":7072,"2":4196,"3":2653,"4":1639,"5":1053,"6":703,"7":458,"8":346,"9":237,"10":198,"11":131,"12":98,"13":83,"14":61,"15":44,"16":40,"17":27,"18":21,"19":22,"20":13,"21":13,"22":6,"23":5,"24":6,"25":5,"26":3,"27":5,"28":5,"29":3,"30":3,"31":1,"32":1,"33":3,"35":4,"38":1,"39":2,"40":2,"42":1,"45":1,"59":1,"70":1},"p50":1,"p90":5,"p95":7,"p99":13},"causal":{"total":30479,"counts":{"0":27917,"1":2281,"2":251,"3":24,"4":4,"5":1,"6":1},"p50":0,"p90":0,"p95":1,"p99":1}},"paragraph":{"sentenceCount":{"total":16426,"counts":{"1":9772,"2":3648,"3":1411,"4":678,"5":354,"6":175,"7":131,"8":84,"9":60,"10":36,"11":17,"12":16,"13":9,"14":7,"15":6,"16":3,"17":3,"18":4,"19":2,"20":3,"21":1,"24":1,"25":2,"33":1,"34":1,"42":1},"p50":1,"p90":3,"p95":5,"p99":9}},"endingRuns":{"total":10971,"counts":{"1":7629,"2":1904,"3":736,"4":338,"5":175,"6":80,"7":51,"8":28,"9":18,"10":3,"11":6,"13":2,"18":1},"p50":1,"p90":3,"p95":4,"p99":6},"endingTransitions":{"것이다|것이다":59,"것이다|니다":14,"것이다|다":211,"것이다|명령":2,"것이다|없음":57,"것이다|의문":17,"니다|것이다":18,"니다|니다":409,"니다|다":84,"니다|명령":13,"니다|없음":150,"니다|요":21,"니다|의문":30,"니다|죠":26,"다|것이다":335,"다|니다":58,"다|다":5425,"다|명령":17,"다|없음":1649,"다|요":29,"다|의문":103,"다|죠":16,"명령|것이다":4,"명령|니다":18,"명령|다":16,"명령|명령":57,"명령|없음":173,"명령|요":25,"명령|의문":10,"명령|죠":8,"없음|것이다":35,"없음|니다":61,"없음|다":533,"없음|명령":70,"없음|없음":2759,"없음|요":117,"없음|의문":94,"없음|죠":33,"요|것이다":1,"요|니다":28,"요|다":42,"요|명령":18,"요|없음":315,"요|요":169,"요|의문":22,"요|죠":39,"의문|것이다":10,"의문|니다":29,"의문|다":107,"의문|명령":8,"의문|없음":154,"의문|요":20,"의문|의문":100,"의문|죠":14,"죠|것이다":1,"죠|니다":27,"죠|다":8,"죠|명령":3,"죠|없음":93,"죠|요":26,"죠|의문":18,"죠|죠":45},"rates":{"connector":{"p50":0.0481,"p90":0.0935,"p95":0.1012,"p99":0.125},"question":{"p50":0.0549,"p90":0.0952,"p95":0.0987,"p99":0.1119},"readerCall":{"p50":0.0,"p90":0.0019,"p95":0.0075,"p99":0.0139},"deixis":{"p50":0.0065,"p90":0.0294,"p95":0.0357,"p99":0.0875}}},"guide":{"documents":135,"sentences":5597,"paragraphs":3515,"sentence":{"length":{"total":5597,"counts":{"1":39,"2":127,"3":253,"4":291,"5":350,"6":403,"7":443,"8":442,"9":494,"10":417,"11":421,"12":371,"13":301,"14":262,"15":195,"16":147,"17":138,"18":121,"19":78,"20":66,"21":65,"22":50,"23":25,"24":24,"25":27,"26":11,"27":6,"28":5,"29":7,"30":5,"31":5,"32":4,"33":1,"34":1,"39":1,"56":1},"p50":9,"p90":17,"p95":20,"p99":25},"commas":{"total":5597,"counts":{"0":4003,"1":1304,"2":215,"3":55,"4":14,"5":3,"7":1,"11":1,"15":1},"p50":0,"p90":1,"p95":2,"p99":3},"euiCount":{"total":5597,"counts":{"0":3809,"1":1478,"2":264,"3":42,"4":4},"p50":0,"p90":1,"p95":2,"p99":2},"nounRun":{"total":5597,"counts":{"0":944,"1":3115,"2":1244,"3":256,"4":36,"5":2},"p50":1,"p90":2,"p95":3,"p99":3},"deixis":{"total":5597,"counts":{"0":5219,"1":362,"2":14,"3":2},"p50":0,"p90":0,"p95":1,"p99":1},"hedges":{"total":5597,"counts":{"0":5506,"1":91},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":5597,"counts":{"0":4987,"1":406,"2":149,"3":27,"4":13,"5":4,"6":4,"7":1,"9":1,"10":1,"11":1,"12":1,"16":1,"21":1},"p50":0,"p90":1,"p95":1,"p99":2},"newTopics":{"total":5597,"counts":{"0":1047,"1":993,"2":1002,"3":767,"4":579,"5":427,"6":295,"7":162,"8":116,"9":80,"10":46,"11":48,"12":13,"13":13,"14":2,"15":3,"16":3,"17":1},"p50":2,"p90":6,"p95":8,"p99":11},"causal":{"total":5597,"counts":{"0":4474,"1":1030,"2":85,"3":8},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":3515,"counts":{"1":2196,"2":825,"3":321,"4":109,"5":41,"6":16,"7":5,"8":2},"p50":1,"p90":3,"p95":3,"p99":5}},"endingRuns":{"total":3572,"counts":{"1":2418,"2":749,"3":273,"4":82,"5":33,"6":11,"7":5,"8":1},"p50":1,"p90":3,"p95":3,"p99":5},"endingTransitions":{"것이다|것이다":6,"것이다|다":53,"것이다|명령":3,"것이다|없음":4,"니다|것이다":1,"니다|니다":1,"니다|다":10,"다|것이다":62,"다|니다":4,"다|다":1757,"다|명령":37,"다|없음":55,"다|의문":3,"명령|것이다":7,"명령|다":29,"명령|명령":1,"명령|없음":1,"없음|것이다":1,"없음|다":24,"없음|명령":3,"없음|없음":15,"없음|의문":1,"의문|것이다":1,"의문|다":3},"rates":{"connector":{"p50":0.0185,"p90":0.0714,"p95":0.0816,"p99":0.1304},"question":{"p50":0.0,"p90":0.0,"p95":0.0071,"p99":0.0208},"readerCall":{"p50":0.0,"p90":0.0,"p95":0.0312,"p99":0.08},"deixis":{"p50":0.05,"p90":0.15,"p95":0.2,"p99":0.3273}}},"report":{"documents":296,"sentences":3897,"paragraphs":1574,"sentence":{"length":{"total":3897,"counts":{"1":30,"2":12,"3":23,"4":45,"5":106,"6":112,"7":151,"8":190,"9":205,"10":201,"11":217,"12":220,"13":236,"14":191,"15":202,"16":203,"17":194,"18":152,"19":148,"20":117,"21":101,"22":93,"23":83,"24":82,"25":71,"26":65,"27":44,"28":45,"29":48,"30":43,"31":39,"32":28,"33":32,"34":18,"35":22,"36":13,"37":18,"38":21,"39":6,"40":12,"41":4,"42":10,"43":5,"44":3,"45":5,"46":3,"47":4,"48":2,"49":5,"50":1,"51":2,"52":2,"53":1,"54":1,"58":1,"61":1,"63":1,"64":1,"65":1,"70":1,"76":1,"81":1,"104":1,"184":1},"p50":15,"p90":28,"p95":33,"p99":44},"commas":{"total":3897,"counts":{"0":2143,"1":1180,"2":337,"3":131,"4":48,"5":27,"6":12,"7":8,"8":3,"9":2,"10":2,"12":1,"15":2,"50":1},"p50":0,"p90":2,"p95":3,"p99":5},"euiCount":{"total":3897,"counts":{"0":2096,"1":1236,"2":389,"3":121,"4":28,"5":23,"6":4},"p50":0,"p90":2,"p95":2,"p99":4},"nounRun":{"total":3897,"counts":{"0":375,"1":1832,"2":1217,"3":359,"4":83,"5":23,"6":6,"7":2},"p50":1,"p90":3,"p95":3,"p99":4},"deixis":{"total":3897,"counts":{"0":3734,"1":160,"2":3},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":3897,"counts":{"0":3814,"1":82,"3":1},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":3897,"counts":{"0":2162,"1":639,"2":404,"3":285,"4":164,"5":92,"6":68,"7":24,"8":19,"9":9,"10":7,"11":8,"12":9,"13":1,"14":1,"15":2,"17":2,"36":1},"p50":0,"p90":4,"p95":5,"p99":9},"newTopics":{"total":3897,"counts":{"0":86,"1":179,"2":286,"3":364,"4":415,"5":380,"6":366,"7":335,"8":288,"9":272,"10":214,"11":161,"12":106,"13":96,"14":68,"15":58,"16":55,"17":32,"18":32,"19":23,"20":17,"21":12,"22":10,"23":6,"24":7,"25":7,"26":7,"27":5,"28":1,"30":1,"32":3,"34":2,"39":1,"48":1,"50":1},"p50":6,"p90":13,"p95":16,"p99":23},"causal":{"total":3897,"counts":{"0":3041,"1":729,"2":104,"3":20,"4":3},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":1574,"counts":{"1":530,"2":459,"3":269,"4":153,"5":82,"6":33,"7":20,"8":9,"9":9,"10":2,"11":4,"12":1,"15":1,"16":1,"22":1},"p50":2,"p90":5,"p95":6,"p99":9}},"endingRuns":{"total":1810,"counts":{"1":802,"2":506,"3":252,"4":135,"5":62,"6":27,"7":13,"8":6,"9":3,"10":1,"11":1,"16":1,"22":1},"p50":2,"p90":4,"p95":5,"p99":7},"endingTransitions":{"것이다|것이다":8,"것이다|니다":3,"것이다|다":86,"것이다|의문":1,"니다|것이다":1,"니다|니다":26,"니다|다":10,"니다|없음":2,"니다|요":3,"다|것이다":119,"다|니다":4,"다|다":1960,"다|없음":26,"다|요":2,"다|의문":10,"명령|다":5,"없음|니다":1,"없음|다":27,"없음|없음":4,"없음|의문":2,"요|니다":1,"요|다":3,"요|요":3,"요|죠":1,"의문|것이다":1,"의문|다":13,"죠|다":1},"rates":{"connector":{"p50":0.1143,"p90":0.2727,"p95":0.3333,"p99":0.4286},"question":{"p50":0.0,"p90":0.0,"p95":0.0,"p99":0.125},"readerCall":{"p50":0.0,"p90":0.0,"p95":0.0,"p99":0.25},"deixis":{"p50":0.0,"p90":0.1176,"p95":0.1714,"p99":0.2727}}},"technicalDocs":{"documents":537,"sentences":27774,"paragraphs":13750,"sentence":{"length":{"total":27774,"counts":{"1":211,"2":300,"3":568,"4":835,"5":1194,"6":1530,"7":1834,"8":2159,"9":2217,"10":2131,"11":2112,"12":1910,"13":1647,"14":1513,"15":1303,"16":1125,"17":961,"18":740,"19":625,"20":526,"21":451,"22":389,"23":300,"24":225,"25":205,"26":152,"27":124,"28":80,"29":78,"30":73,"31":46,"32":37,"33":25,"34":29,"35":16,"36":19,"37":16,"38":8,"39":8,"40":6,"41":5,"42":5,"43":5,"44":1,"45":2,"46":2,"47":4,"48":1,"50":2,"51":1,"52":2,"53":1,"54":2,"56":1,"57":2,"58":1,"59":1,"62":1,"63":1,"67":1,"80":1,"85":2,"107":1,"200":1},"p50":11,"p90":20,"p95":23,"p99":30},"commas":{"total":27774,"counts":{"0":18287,"1":7336,"2":1503,"3":440,"4":127,"5":44,"6":16,"7":5,"8":4,"9":1,"10":1,"15":1,"16":1,"18":1,"19":1,"20":1,"22":2,"24":1,"28":1,"29":1},"p50":0,"p90":1,"p95":2,"p99":3},"euiCount":{"total":27774,"counts":{"0":18034,"1":7758,"2":1676,"3":259,"4":39,"5":5,"6":1,"7":1,"16":1},"p50":0,"p90":1,"p95":2,"p99":3},"nounRun":{"total":27774,"counts":{"0":3364,"1":15907,"2":6958,"3":1307,"4":213,"5":20,"6":4,"7":1},"p50":1,"p90":2,"p95":3,"p99":3},"deixis":{"total":27774,"counts":{"0":25555,"1":2146,"2":72,"3":1},"p50":0,"p90":0,"p95":1,"p99":1},"hedges":{"total":27774,"counts":{"0":27292,"1":481,"2":1},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":27774,"counts":{"0":25610,"1":1352,"2":459,"3":155,"4":89,"5":34,"6":29,"7":5,"8":6,"9":5,"10":7,"11":4,"12":5,"13":3,"14":4,"15":2,"17":1,"18":1,"20":1,"33":1,"57":1},"p50":0,"p90":0,"p95":1,"p99":3},"newTopics":{"total":27774,"counts":{"0":3474,"1":4778,"2":4958,"3":4167,"4":3287,"5":2381,"6":1575,"7":1045,"8":730,"9":448,"10":313,"11":185,"12":141,"13":90,"14":63,"15":42,"16":32,"17":15,"18":15,"19":10,"20":6,"21":6,"22":2,"23":1,"24":3,"27":1,"30":1,"33":1,"38":2,"51":1,"200":1},"p50":3,"p90":7,"p95":8,"p99":13},"causal":{"total":27774,"counts":{"0":21573,"1":5429,"2":682,"3":80,"4":8,"5":1,"6":1},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":13750,"counts":{"1":5958,"2":4118,"3":2123,"4":978,"5":351,"6":135,"7":51,"8":17,"9":8,"10":6,"11":1,"14":1,"16":1,"17":1,"51":1},"p50":2,"p90":4,"p95":4,"p99":6}},"endingRuns":{"total":15172,"counts":{"1":8669,"2":3821,"3":1672,"4":669,"5":216,"6":88,"7":24,"8":6,"9":2,"10":2,"13":2,"29":1},"p50":1,"p90":3,"p95":4,"p99":5},"endingTransitions":{"것이다|것이다":74,"것이다|니다":311,"것이다|다":142,"것이다|명령":29,"것이다|없음":29,"것이다|요":3,"것이다|의문":6,"것이다|죠":8,"니다|것이다":311,"니다|니다":5769,"니다|다":32,"니다|명령":422,"니다|없음":305,"니다|요":58,"니다|의문":49,"니다|죠":85,"다|것이다":155,"다|니다":28,"다|다":4797,"다|명령":49,"다|없음":173,"다|요":1,"다|의문":10,"명령|것이다":40,"명령|니다":282,"명령|다":47,"명령|명령":84,"명령|없음":46,"명령|요":3,"명령|의문":4,"명령|죠":2,"없음|것이다":8,"없음|니다":117,"없음|다":103,"없음|명령":13,"없음|없음":176,"없음|요":1,"없음|의문":1,"요|것이다":4,"요|니다":42,"요|다":1,"요|명령":10,"요|없음":11,"요|요":9,"요|죠":7,"의문|것이다":5,"의문|니다":56,"의문|다":3,"의문|명령":14,"의문|없음":4,"의문|의문":15,"의문|죠":2,"죠|것이다":3,"죠|니다":49,"죠|명령":5,"죠|없음":5,"죠|요":5,"죠|의문":1},"rates":{"connector":{"p50":0.0404,"p90":0.1134,"p95":0.1538,"p99":0.2273},"question":{"p50":0.0,"p90":0.015,"p95":0.0306,"p99":0.0833},"readerCall":{"p50":0.0,"p90":0.0714,"p95":0.1333,"p99":0.5652},"deixis":{"p50":0.0588,"p90":0.16,"p95":0.2,"p99":0.3333}}}}}
|
|
1
|
+
{"version":1,"cap":200,"types":{"blog":{"documents":10,"sentences":1140,"paragraphs":507,"sentence":{"length":{"total":1140,"counts":{"1":5,"2":8,"3":12,"4":21,"5":22,"6":49,"7":53,"8":79,"9":101,"10":98,"11":63,"12":70,"13":72,"14":64,"15":52,"16":61,"17":47,"18":40,"19":39,"20":32,"21":22,"22":12,"23":26,"24":20,"25":12,"26":9,"27":8,"28":11,"29":9,"30":6,"31":5,"32":3,"33":1,"34":1,"35":2,"36":2,"42":1,"69":1,"117":1},"p50":12,"p90":23,"p95":26,"p99":32},"commas":{"total":1140,"counts":{"0":641,"1":354,"2":92,"3":32,"4":9,"5":7,"6":1,"7":1,"9":1,"31":1,"116":1},"p50":0,"p90":2,"p95":2,"p99":5},"euiCount":{"total":1140,"counts":{"0":737,"1":357,"2":40,"3":6},"p50":0,"p90":1,"p95":1,"p99":2},"nounRun":{"total":1140,"counts":{"0":83,"1":550,"2":367,"3":106,"4":31,"5":2,"7":1},"p50":1,"p90":3,"p95":3,"p99":4},"deixis":{"total":1140,"counts":{"0":1084,"1":55,"2":1},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":1140,"counts":{"0":1132,"1":8},"p50":0,"p90":0,"p95":0,"p99":0},"numbers":{"total":1140,"counts":{"0":791,"1":244,"2":65,"3":13,"4":5,"5":7,"6":4,"7":3,"8":1,"9":1,"10":2,"13":2,"17":1,"36":1},"p50":0,"p90":1,"p95":2,"p99":6},"newTopics":{"total":1140,"counts":{"0":141,"1":164,"2":172,"3":160,"4":153,"5":91,"6":88,"7":48,"8":41,"9":26,"10":15,"11":16,"12":5,"13":8,"14":4,"15":3,"16":2,"19":1,"29":1,"98":1},"p50":3,"p90":8,"p95":9,"p99":14},"causal":{"total":1140,"counts":{"0":932,"1":174,"2":32,"3":2},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":507,"counts":{"1":198,"2":139,"3":86,"4":46,"5":20,"6":11,"7":3,"8":3,"11":1},"p50":2,"p90":4,"p95":5,"p99":7}},"endingRuns":{"total":544,"counts":{"1":259,"2":143,"3":75,"4":40,"5":13,"6":8,"7":3,"8":3},"p50":2,"p90":4,"p95":4,"p99":7},"endingTransitions":{"것이다|것이다":4,"것이다|니다":8,"것이다|다":3,"것이다|명령":1,"것이다|의문":2,"니다|것이다":8,"니다|니다":450,"니다|다":1,"니다|명령":17,"니다|없음":10,"다|것이다":5,"다|니다":1,"다|다":86,"다|명령":3,"다|없음":1,"다|의문":1,"명령|니다":8,"명령|다":2,"명령|명령":4,"명령|없음":2,"없음|것이다":1,"없음|니다":9,"없음|다":1,"요|명령":1,"의문|니다":2,"의문|다":2},"rates":{"connector":{"p50":0.031,"p90":0.1184,"p95":0.1186,"p99":0.1186},"question":{"p50":0.0,"p90":0.0333,"p95":0.0395,"p99":0.0395},"readerCall":{"p50":0.0075,"p90":0.0263,"p95":0.0667,"p99":0.0667},"deixis":{"p50":0.0667,"p90":0.1017,"p95":0.1167,"p99":0.1167}}},"encyclopedia":{"documents":363,"sentences":53341,"paragraphs":12238,"sentence":{"length":{"total":53341,"counts":{"1":154,"2":159,"3":233,"4":555,"5":909,"6":1488,"7":2059,"8":2491,"9":2788,"10":3048,"11":3147,"12":3343,"13":3192,"14":3032,"15":2998,"16":2736,"17":2525,"18":2332,"19":2146,"20":1915,"21":1675,"22":1445,"23":1238,"24":1113,"25":952,"26":824,"27":712,"28":602,"29":520,"30":467,"31":330,"32":302,"33":283,"34":228,"35":182,"36":164,"37":146,"38":99,"39":100,"40":87,"41":78,"42":88,"43":41,"44":36,"45":28,"46":41,"47":30,"48":27,"49":30,"50":15,"51":7,"52":13,"53":18,"54":17,"55":8,"56":6,"57":13,"58":5,"59":4,"60":5,"61":2,"62":4,"63":11,"64":5,"65":7,"66":7,"67":3,"68":2,"69":4,"70":2,"71":1,"72":3,"73":2,"74":2,"76":2,"77":2,"78":5,"80":2,"82":2,"83":1,"84":4,"86":2,"87":1,"88":1,"89":1,"90":1,"91":2,"92":1,"97":1,"98":1,"100":1,"103":1,"104":1,"106":1,"107":1,"108":1,"109":1,"110":1,"117":1,"124":1,"125":1,"130":1,"133":1,"134":1,"137":1,"138":1,"139":1,"156":1,"167":1,"172":1,"195":1,"196":1,"200":6},"p50":15,"p90":26,"p95":30,"p99":42},"commas":{"total":53341,"counts":{"0":28149,"1":16880,"2":4862,"3":1831,"4":751,"5":395,"6":183,"7":89,"8":59,"9":38,"10":26,"11":12,"12":20,"13":10,"14":5,"15":6,"16":7,"17":3,"18":6,"19":1,"20":1,"21":1,"22":1,"23":1,"25":1,"31":1,"35":1,"40":1},"p50":0,"p90":2,"p95":3,"p99":5},"euiCount":{"total":53341,"counts":{"0":22330,"1":18489,"2":8281,"3":2851,"4":901,"5":318,"6":114,"7":34,"8":9,"9":5,"10":1,"11":2,"12":2,"14":2,"15":1,"16":1},"p50":1,"p90":2,"p95":3,"p99":4},"nounRun":{"total":53341,"counts":{"0":4588,"1":26373,"2":16064,"3":4716,"4":1196,"5":299,"6":77,"7":21,"8":4,"9":2,"10":1},"p50":1,"p90":3,"p95":3,"p99":4},"deixis":{"total":53341,"counts":{"0":51888,"1":1426,"2":27},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":53341,"counts":{"0":52803,"1":536,"2":2},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":53341,"counts":{"0":29651,"1":9248,"2":5873,"3":3753,"4":2045,"5":1119,"6":681,"7":370,"8":234,"9":112,"10":77,"11":49,"12":25,"13":19,"14":20,"15":17,"16":2,"17":6,"18":4,"19":7,"20":5,"21":1,"22":1,"24":1,"25":1,"28":2,"29":1,"30":3,"31":1,"33":1,"45":2,"47":1,"54":1,"60":2,"69":1,"71":2,"78":1,"82":1,"100":1},"p50":0,"p90":3,"p95":5,"p99":8},"newTopics":{"total":53341,"counts":{"0":3013,"1":5478,"2":6977,"3":7180,"4":6601,"5":5732,"6":4622,"7":3533,"8":2783,"9":2022,"10":1490,"11":1050,"12":763,"13":577,"14":425,"15":296,"16":201,"17":131,"18":121,"19":75,"20":53,"21":32,"22":29,"23":26,"24":26,"25":25,"26":11,"27":11,"28":11,"29":5,"30":3,"31":8,"32":2,"34":4,"35":1,"36":4,"38":2,"39":2,"43":2,"44":1,"46":1,"47":1,"48":2,"49":1,"50":2,"51":1,"55":1,"60":1,"62":1,"74":1,"103":1},"p50":4,"p90":10,"p95":12,"p99":17},"causal":{"total":53341,"counts":{"0":42272,"1":9419,"2":1420,"3":201,"4":25,"5":4},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":12238,"counts":{"1":1511,"2":1943,"3":2175,"4":1904,"5":1518,"6":1045,"7":708,"8":470,"9":291,"10":214,"11":141,"12":81,"13":56,"14":51,"15":32,"16":24,"17":11,"18":12,"19":8,"20":5,"21":10,"22":2,"23":3,"24":4,"25":5,"26":2,"27":3,"29":1,"31":1,"33":1,"34":1,"35":1,"36":3,"37":1},"p50":4,"p90":8,"p95":10,"p99":15}},"endingRuns":{"total":13758,"counts":{"1":2839,"2":2339,"3":2382,"4":1918,"5":1482,"6":992,"7":638,"8":397,"9":263,"10":186,"11":117,"12":43,"13":43,"14":40,"15":22,"16":14,"17":8,"18":8,"19":5,"20":6,"21":7,"22":1,"24":3,"25":3,"27":1,"30":1},"p50":3,"p90":7,"p95":9,"p99":13},"endingTransitions":{"것이다|것이다":40,"것이다|니다":6,"것이다|다":604,"것이다|명령":1,"것이다|없음":8,"것이다|의문":1,"니다|것이다":7,"니다|니다":49,"니다|다":97,"니다|명령":3,"니다|없음":6,"니다|요":7,"니다|의문":1,"니다|죠":8,"다|것이다":709,"다|니다":98,"다|다":38047,"다|명령":7,"다|없음":588,"다|요":29,"다|의문":12,"다|죠":3,"명령|것이다":1,"명령|다":16,"명령|명령":1,"명령|없음":1,"없음|것이다":5,"없음|니다":3,"없음|다":351,"없음|명령":2,"없음|없음":297,"없음|요":3,"없음|의문":3,"없음|죠":1,"요|니다":7,"요|다":25,"요|없음":4,"요|요":13,"요|죠":3,"의문|것이다":1,"의문|니다":2,"의문|다":14,"의문|없음":3,"의문|의문":2,"죠|니다":5,"죠|다":4,"죠|없음":3,"죠|요":2},"rates":{"connector":{"p50":0.083,"p90":0.1558,"p95":0.1859,"p99":0.2542},"question":{"p50":0.0,"p90":0.0,"p95":0.0058,"p99":0.0189},"readerCall":{"p50":0.0,"p90":0.0058,"p95":0.0094,"p99":0.0192},"deixis":{"p50":0.0179,"p90":0.0597,"p95":0.0769,"p99":0.1067}}},"essay":{"documents":228,"sentences":21986,"paragraphs":8887,"sentence":{"length":{"total":21986,"counts":{"1":573,"2":747,"3":946,"4":1076,"5":1236,"6":1241,"7":1239,"8":1147,"9":1109,"10":1043,"11":982,"12":918,"13":802,"14":744,"15":689,"16":645,"17":531,"18":509,"19":441,"20":435,"21":392,"22":343,"23":334,"24":317,"25":268,"26":268,"27":243,"28":203,"29":186,"30":165,"31":160,"32":124,"33":135,"34":130,"35":137,"36":96,"37":95,"38":85,"39":93,"40":76,"41":65,"42":69,"43":68,"44":57,"45":54,"46":38,"47":44,"48":42,"49":40,"50":38,"51":31,"52":27,"53":29,"54":30,"55":27,"56":20,"57":20,"58":18,"59":14,"60":16,"61":21,"62":8,"63":15,"64":15,"65":10,"66":17,"67":10,"68":9,"69":10,"70":19,"71":6,"72":4,"73":10,"74":6,"75":7,"76":8,"77":11,"78":11,"79":3,"80":7,"81":10,"82":5,"83":6,"84":8,"85":6,"86":5,"87":5,"88":4,"89":3,"90":7,"91":3,"92":2,"93":4,"94":9,"95":2,"96":2,"97":5,"98":4,"99":2,"100":1,"101":3,"102":1,"103":2,"104":2,"105":3,"107":1,"109":2,"111":1,"113":3,"115":1,"116":2,"119":1,"120":1,"121":1,"122":1,"124":1,"126":2,"128":1,"129":1,"136":2,"141":2,"151":1,"162":1},"p50":11,"p90":31,"p95":40,"p99":70},"commas":{"total":21986,"counts":{"0":14955,"1":4066,"2":1464,"3":653,"4":361,"5":160,"6":114,"7":67,"8":37,"9":32,"10":28,"11":13,"12":9,"13":7,"14":3,"15":3,"16":1,"18":3,"20":1,"22":1,"24":1,"25":1,"27":1,"28":2,"33":1,"54":1,"67":1},"p50":0,"p90":2,"p95":3,"p99":6},"euiCount":{"total":21986,"counts":{"0":14032,"1":4723,"2":1809,"3":708,"4":350,"5":130,"6":99,"7":43,"8":33,"9":29,"10":16,"11":6,"12":1,"13":1,"14":4,"15":1,"17":1},"p50":0,"p90":2,"p95":3,"p99":6},"nounRun":{"total":21986,"counts":{"0":4210,"1":11487,"2":4952,"3":1067,"4":216,"5":43,"6":6,"7":4,"9":1},"p50":1,"p90":2,"p95":3,"p99":4},"deixis":{"total":21986,"counts":{"0":21015,"1":919,"2":47,"3":3,"4":2},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":21986,"counts":{"0":21844,"1":142},"p50":0,"p90":0,"p95":0,"p99":0},"numbers":{"total":21986,"counts":{"0":20694,"1":833,"2":303,"3":86,"4":39,"5":15,"6":7,"7":2,"8":2,"9":2,"10":2,"12":1},"p50":0,"p90":0,"p95":1,"p99":2},"newTopics":{"total":21986,"counts":{"0":3172,"1":3656,"2":3231,"3":2540,"4":2020,"5":1628,"6":1179,"7":943,"8":702,"9":582,"10":427,"11":308,"12":264,"13":209,"14":188,"15":128,"16":124,"17":80,"18":101,"19":68,"20":46,"21":57,"22":43,"23":46,"24":33,"25":31,"26":20,"27":16,"28":14,"29":14,"30":10,"31":8,"32":16,"33":8,"34":9,"35":7,"36":8,"37":6,"38":2,"39":5,"40":4,"41":7,"42":4,"43":1,"44":2,"45":3,"47":1,"48":1,"49":1,"50":3,"51":1,"53":1,"54":2,"56":2,"57":1,"62":1,"66":1,"68":1},"p50":3,"p90":10,"p95":14,"p99":24},"causal":{"total":21986,"counts":{"0":18862,"1":2552,"2":467,"3":88,"4":14,"5":3},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":8887,"counts":{"1":3896,"2":2010,"3":1196,"4":668,"5":419,"6":259,"7":146,"8":93,"9":72,"10":33,"11":26,"12":18,"13":14,"14":16,"15":4,"16":4,"17":2,"18":1,"21":1,"22":1,"23":2,"27":1,"31":1,"33":1,"37":1,"39":1,"77":1},"p50":2,"p90":5,"p95":6,"p99":11}},"endingRuns":{"total":10082,"counts":{"1":6441,"2":1992,"3":843,"4":400,"5":197,"6":98,"7":45,"8":20,"9":21,"10":8,"11":6,"12":4,"13":4,"14":1,"15":1,"21":1},"p50":1,"p90":3,"p95":4,"p99":7},"endingTransitions":{"것이다|것이다":332,"것이다|니다":174,"것이다|다":598,"것이다|명령":4,"것이다|없음":119,"것이다|요":2,"것이다|의문":27,"것이다|죠":3,"니다|것이다":229,"니다|니다":961,"니다|다":158,"니다|명령":13,"니다|없음":151,"니다|요":17,"니다|의문":50,"니다|죠":11,"다|것이다":782,"다|니다":157,"다|다":5597,"다|명령":16,"다|없음":933,"다|요":10,"다|의문":103,"다|죠":4,"명령|것이다":6,"명령|니다":17,"명령|다":13,"명령|명령":11,"명령|없음":26,"명령|요":4,"명령|의문":4,"명령|죠":1,"없음|것이다":128,"없음|니다":86,"없음|다":513,"없음|명령":27,"없음|없음":1131,"없음|요":47,"없음|의문":67,"없음|죠":32,"요|것이다":4,"요|니다":7,"요|다":12,"요|명령":4,"요|없음":70,"요|요":35,"요|의문":7,"요|죠":9,"의문|것이다":29,"의문|니다":47,"의문|다":90,"의문|명령":2,"의문|없음":78,"의문|요":5,"의문|의문":60,"의문|죠":4,"죠|것이다":4,"죠|니다":14,"죠|다":2,"죠|명령":3,"죠|없음":28,"죠|요":9,"죠|의문":3,"죠|죠":9},"rates":{"connector":{"p50":0.0909,"p90":0.2174,"p95":0.28,"p99":0.4118},"question":{"p50":0.0319,"p90":0.122,"p95":0.1522,"p99":0.2206},"readerCall":{"p50":0.0,"p90":0.0127,"p95":0.0385,"p99":0.0714},"deixis":{"p50":0.0404,"p90":0.1744,"p95":0.2308,"p99":0.3684}}},"fiction":{"documents":31,"sentences":30479,"paragraphs":16426,"sentence":{"length":{"total":30479,"counts":{"1":2548,"2":2300,"3":2815,"4":2754,"5":2461,"6":2128,"7":1831,"8":1553,"9":1386,"10":1274,"11":1160,"12":993,"13":843,"14":750,"15":674,"16":626,"17":466,"18":444,"19":419,"20":365,"21":296,"22":244,"23":209,"24":216,"25":168,"26":151,"27":135,"28":118,"29":96,"30":103,"31":80,"32":74,"33":77,"34":73,"35":51,"36":55,"37":36,"38":46,"39":37,"40":28,"41":29,"42":28,"43":32,"44":21,"45":30,"46":16,"47":17,"48":14,"49":22,"50":15,"51":13,"52":13,"53":12,"54":10,"55":6,"56":9,"57":9,"58":11,"59":2,"60":2,"61":4,"62":3,"64":3,"65":7,"66":3,"67":2,"68":3,"69":2,"70":4,"71":3,"72":5,"73":3,"74":1,"75":4,"76":2,"77":1,"78":3,"79":1,"80":3,"82":2,"83":3,"86":1,"87":1,"88":1,"89":2,"93":3,"96":2,"100":3,"102":1,"104":1,"108":1,"112":1,"115":1,"125":1,"126":1,"131":1,"157":1,"172":1},"p50":7,"p90":20,"p95":26,"p99":44},"commas":{"total":30479,"counts":{"0":23415,"1":5701,"2":806,"3":288,"4":115,"5":63,"6":22,"7":24,"8":10,"9":13,"10":5,"11":3,"12":7,"13":1,"14":2,"16":1,"18":1,"19":1,"29":1},"p50":0,"p90":1,"p95":1,"p99":3},"euiCount":{"total":30479,"counts":{"0":24230,"1":4592,"2":1165,"3":323,"4":98,"5":38,"6":15,"7":9,"8":2,"9":2,"10":1,"11":1,"13":1,"14":2},"p50":0,"p90":1,"p95":2,"p99":3},"nounRun":{"total":30479,"counts":{"0":8130,"1":13806,"2":6343,"3":1665,"4":382,"5":109,"6":23,"7":14,"8":5,"9":1,"13":1},"p50":1,"p90":2,"p95":3,"p99":4},"deixis":{"total":30479,"counts":{"0":30124,"1":348,"2":7},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":30479,"counts":{"0":30349,"1":129,"2":1},"p50":0,"p90":0,"p95":0,"p99":0},"numbers":{"total":30479,"counts":{"0":30286,"1":162,"2":22,"3":4,"4":5},"p50":0,"p90":0,"p95":0,"p99":0},"newTopics":{"total":30479,"counts":{"0":11312,"1":7072,"2":4196,"3":2653,"4":1639,"5":1053,"6":703,"7":458,"8":346,"9":237,"10":198,"11":131,"12":98,"13":83,"14":61,"15":44,"16":40,"17":27,"18":21,"19":22,"20":13,"21":13,"22":6,"23":5,"24":6,"25":5,"26":3,"27":5,"28":5,"29":3,"30":3,"31":1,"32":1,"33":3,"35":4,"38":1,"39":2,"40":2,"42":1,"45":1,"59":1,"70":1},"p50":1,"p90":5,"p95":7,"p99":13},"causal":{"total":30479,"counts":{"0":27917,"1":2281,"2":251,"3":24,"4":4,"5":1,"6":1},"p50":0,"p90":0,"p95":1,"p99":1}},"paragraph":{"sentenceCount":{"total":16426,"counts":{"1":9772,"2":3648,"3":1411,"4":678,"5":354,"6":175,"7":131,"8":84,"9":60,"10":36,"11":17,"12":16,"13":9,"14":7,"15":6,"16":3,"17":3,"18":4,"19":2,"20":3,"21":1,"24":1,"25":2,"33":1,"34":1,"42":1},"p50":1,"p90":3,"p95":5,"p99":9}},"endingRuns":{"total":10971,"counts":{"1":7629,"2":1904,"3":736,"4":338,"5":175,"6":80,"7":51,"8":28,"9":18,"10":3,"11":6,"13":2,"18":1},"p50":1,"p90":3,"p95":4,"p99":6},"endingTransitions":{"것이다|것이다":59,"것이다|니다":14,"것이다|다":211,"것이다|명령":2,"것이다|없음":57,"것이다|의문":17,"니다|것이다":18,"니다|니다":409,"니다|다":84,"니다|명령":13,"니다|없음":150,"니다|요":21,"니다|의문":30,"니다|죠":26,"다|것이다":335,"다|니다":58,"다|다":5425,"다|명령":17,"다|없음":1649,"다|요":29,"다|의문":103,"다|죠":16,"명령|것이다":4,"명령|니다":18,"명령|다":16,"명령|명령":57,"명령|없음":173,"명령|요":25,"명령|의문":10,"명령|죠":8,"없음|것이다":35,"없음|니다":61,"없음|다":533,"없음|명령":70,"없음|없음":2759,"없음|요":117,"없음|의문":94,"없음|죠":33,"요|것이다":1,"요|니다":28,"요|다":42,"요|명령":18,"요|없음":315,"요|요":169,"요|의문":22,"요|죠":39,"의문|것이다":10,"의문|니다":29,"의문|다":107,"의문|명령":8,"의문|없음":154,"의문|요":20,"의문|의문":100,"의문|죠":14,"죠|것이다":1,"죠|니다":27,"죠|다":8,"죠|명령":3,"죠|없음":93,"죠|요":26,"죠|의문":18,"죠|죠":45},"rates":{"connector":{"p50":0.0481,"p90":0.0935,"p95":0.1012,"p99":0.125},"question":{"p50":0.0549,"p90":0.0952,"p95":0.0987,"p99":0.1119},"readerCall":{"p50":0.0,"p90":0.0019,"p95":0.0075,"p99":0.0139},"deixis":{"p50":0.0057,"p90":0.0294,"p95":0.0357,"p99":0.075}}},"guide":{"documents":135,"sentences":5597,"paragraphs":3515,"sentence":{"length":{"total":5597,"counts":{"1":39,"2":127,"3":253,"4":291,"5":350,"6":403,"7":443,"8":442,"9":494,"10":417,"11":421,"12":371,"13":301,"14":262,"15":195,"16":147,"17":138,"18":121,"19":78,"20":66,"21":65,"22":50,"23":25,"24":24,"25":27,"26":11,"27":6,"28":5,"29":7,"30":5,"31":5,"32":4,"33":1,"34":1,"39":1,"56":1},"p50":9,"p90":17,"p95":20,"p99":25},"commas":{"total":5597,"counts":{"0":4003,"1":1304,"2":215,"3":55,"4":14,"5":3,"7":1,"11":1,"15":1},"p50":0,"p90":1,"p95":2,"p99":3},"euiCount":{"total":5597,"counts":{"0":3809,"1":1478,"2":264,"3":42,"4":4},"p50":0,"p90":1,"p95":2,"p99":2},"nounRun":{"total":5597,"counts":{"0":944,"1":3115,"2":1244,"3":256,"4":36,"5":2},"p50":1,"p90":2,"p95":3,"p99":3},"deixis":{"total":5597,"counts":{"0":5219,"1":362,"2":14,"3":2},"p50":0,"p90":0,"p95":1,"p99":1},"hedges":{"total":5597,"counts":{"0":5506,"1":91},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":5597,"counts":{"0":4987,"1":406,"2":149,"3":27,"4":13,"5":4,"6":4,"7":1,"9":1,"10":1,"11":1,"12":1,"16":1,"21":1},"p50":0,"p90":1,"p95":1,"p99":2},"newTopics":{"total":5597,"counts":{"0":1047,"1":993,"2":1002,"3":767,"4":579,"5":427,"6":295,"7":162,"8":116,"9":80,"10":46,"11":48,"12":13,"13":13,"14":2,"15":3,"16":3,"17":1},"p50":2,"p90":6,"p95":8,"p99":11},"causal":{"total":5597,"counts":{"0":4474,"1":1030,"2":85,"3":8},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":3515,"counts":{"1":2196,"2":825,"3":321,"4":109,"5":41,"6":16,"7":5,"8":2},"p50":1,"p90":3,"p95":3,"p99":5}},"endingRuns":{"total":3572,"counts":{"1":2418,"2":749,"3":273,"4":82,"5":33,"6":11,"7":5,"8":1},"p50":1,"p90":3,"p95":3,"p99":5},"endingTransitions":{"것이다|것이다":6,"것이다|다":53,"것이다|명령":3,"것이다|없음":4,"니다|것이다":1,"니다|니다":1,"니다|다":10,"다|것이다":62,"다|니다":4,"다|다":1757,"다|명령":37,"다|없음":55,"다|의문":3,"명령|것이다":7,"명령|다":29,"명령|명령":1,"명령|없음":1,"없음|것이다":1,"없음|다":24,"없음|명령":3,"없음|없음":15,"없음|의문":1,"의문|것이다":1,"의문|다":3},"rates":{"connector":{"p50":0.0185,"p90":0.0714,"p95":0.0816,"p99":0.1304},"question":{"p50":0.0,"p90":0.0,"p95":0.0071,"p99":0.0208},"readerCall":{"p50":0.0,"p90":0.0,"p95":0.0312,"p99":0.08},"deixis":{"p50":0.05,"p90":0.15,"p95":0.2,"p99":0.3273}}},"report":{"documents":296,"sentences":3897,"paragraphs":1574,"sentence":{"length":{"total":3897,"counts":{"1":30,"2":12,"3":23,"4":45,"5":106,"6":112,"7":151,"8":190,"9":205,"10":201,"11":217,"12":220,"13":236,"14":191,"15":202,"16":203,"17":194,"18":152,"19":148,"20":117,"21":101,"22":93,"23":83,"24":82,"25":71,"26":65,"27":44,"28":45,"29":48,"30":43,"31":39,"32":28,"33":32,"34":18,"35":22,"36":13,"37":18,"38":21,"39":6,"40":12,"41":4,"42":10,"43":5,"44":3,"45":5,"46":3,"47":4,"48":2,"49":5,"50":1,"51":2,"52":2,"53":1,"54":1,"58":1,"61":1,"63":1,"64":1,"65":1,"70":1,"76":1,"81":1,"104":1,"184":1},"p50":15,"p90":28,"p95":33,"p99":44},"commas":{"total":3897,"counts":{"0":2143,"1":1180,"2":337,"3":131,"4":48,"5":27,"6":12,"7":8,"8":3,"9":2,"10":2,"12":1,"15":2,"50":1},"p50":0,"p90":2,"p95":3,"p99":5},"euiCount":{"total":3897,"counts":{"0":2096,"1":1236,"2":389,"3":121,"4":28,"5":23,"6":4},"p50":0,"p90":2,"p95":2,"p99":4},"nounRun":{"total":3897,"counts":{"0":375,"1":1832,"2":1217,"3":359,"4":83,"5":23,"6":6,"7":2},"p50":1,"p90":3,"p95":3,"p99":4},"deixis":{"total":3897,"counts":{"0":3735,"1":159,"2":3},"p50":0,"p90":0,"p95":0,"p99":1},"hedges":{"total":3897,"counts":{"0":3814,"1":82,"3":1},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":3897,"counts":{"0":2162,"1":639,"2":404,"3":285,"4":164,"5":92,"6":68,"7":24,"8":19,"9":9,"10":7,"11":8,"12":9,"13":1,"14":1,"15":2,"17":2,"36":1},"p50":0,"p90":4,"p95":5,"p99":9},"newTopics":{"total":3897,"counts":{"0":86,"1":179,"2":286,"3":364,"4":415,"5":380,"6":366,"7":335,"8":288,"9":272,"10":214,"11":161,"12":106,"13":96,"14":68,"15":58,"16":55,"17":32,"18":32,"19":23,"20":17,"21":12,"22":10,"23":6,"24":7,"25":7,"26":7,"27":5,"28":1,"30":1,"32":3,"34":2,"39":1,"48":1,"50":1},"p50":6,"p90":13,"p95":16,"p99":23},"causal":{"total":3897,"counts":{"0":3041,"1":729,"2":104,"3":20,"4":3},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":1574,"counts":{"1":530,"2":459,"3":269,"4":153,"5":82,"6":33,"7":20,"8":9,"9":9,"10":2,"11":4,"12":1,"15":1,"16":1,"22":1},"p50":2,"p90":5,"p95":6,"p99":9}},"endingRuns":{"total":1810,"counts":{"1":802,"2":506,"3":252,"4":135,"5":62,"6":27,"7":13,"8":6,"9":3,"10":1,"11":1,"16":1,"22":1},"p50":2,"p90":4,"p95":5,"p99":7},"endingTransitions":{"것이다|것이다":8,"것이다|니다":3,"것이다|다":86,"것이다|의문":1,"니다|것이다":1,"니다|니다":26,"니다|다":10,"니다|없음":2,"니다|요":3,"다|것이다":119,"다|니다":4,"다|다":1960,"다|없음":26,"다|요":2,"다|의문":10,"명령|다":5,"없음|니다":1,"없음|다":27,"없음|없음":4,"없음|의문":2,"요|니다":1,"요|다":3,"요|요":3,"요|죠":1,"의문|것이다":1,"의문|다":13,"죠|다":1},"rates":{"connector":{"p50":0.1143,"p90":0.2727,"p95":0.3333,"p99":0.4286},"question":{"p50":0.0,"p90":0.0,"p95":0.0,"p99":0.125},"readerCall":{"p50":0.0,"p90":0.0,"p95":0.0,"p99":0.25},"deixis":{"p50":0.0,"p90":0.1176,"p95":0.1714,"p99":0.2727}}},"technicalDocs":{"documents":537,"sentences":27774,"paragraphs":13750,"sentence":{"length":{"total":27774,"counts":{"1":211,"2":300,"3":568,"4":835,"5":1194,"6":1530,"7":1834,"8":2159,"9":2217,"10":2131,"11":2112,"12":1910,"13":1647,"14":1513,"15":1303,"16":1125,"17":961,"18":740,"19":625,"20":526,"21":451,"22":389,"23":300,"24":225,"25":205,"26":152,"27":124,"28":80,"29":78,"30":73,"31":46,"32":37,"33":25,"34":29,"35":16,"36":19,"37":16,"38":8,"39":8,"40":6,"41":5,"42":5,"43":5,"44":1,"45":2,"46":2,"47":4,"48":1,"50":2,"51":1,"52":2,"53":1,"54":2,"56":1,"57":2,"58":1,"59":1,"62":1,"63":1,"67":1,"80":1,"85":2,"107":1,"200":1},"p50":11,"p90":20,"p95":23,"p99":30},"commas":{"total":27774,"counts":{"0":18287,"1":7336,"2":1503,"3":440,"4":127,"5":44,"6":16,"7":5,"8":4,"9":1,"10":1,"15":1,"16":1,"18":1,"19":1,"20":1,"22":2,"24":1,"28":1,"29":1},"p50":0,"p90":1,"p95":2,"p99":3},"euiCount":{"total":27774,"counts":{"0":18034,"1":7758,"2":1676,"3":259,"4":39,"5":5,"6":1,"7":1,"16":1},"p50":0,"p90":1,"p95":2,"p99":3},"nounRun":{"total":27774,"counts":{"0":3364,"1":15907,"2":6958,"3":1307,"4":213,"5":20,"6":4,"7":1},"p50":1,"p90":2,"p95":3,"p99":3},"deixis":{"total":27774,"counts":{"0":25555,"1":2146,"2":72,"3":1},"p50":0,"p90":0,"p95":1,"p99":1},"hedges":{"total":27774,"counts":{"0":27292,"1":481,"2":1},"p50":0,"p90":0,"p95":0,"p99":1},"numbers":{"total":27774,"counts":{"0":25610,"1":1352,"2":459,"3":155,"4":89,"5":34,"6":29,"7":5,"8":6,"9":5,"10":7,"11":4,"12":5,"13":3,"14":4,"15":2,"17":1,"18":1,"20":1,"33":1,"57":1},"p50":0,"p90":0,"p95":1,"p99":3},"newTopics":{"total":27774,"counts":{"0":3474,"1":4778,"2":4958,"3":4167,"4":3287,"5":2381,"6":1575,"7":1045,"8":730,"9":448,"10":313,"11":185,"12":141,"13":90,"14":63,"15":42,"16":32,"17":15,"18":15,"19":10,"20":6,"21":6,"22":2,"23":1,"24":3,"27":1,"30":1,"33":1,"38":2,"51":1,"200":1},"p50":3,"p90":7,"p95":8,"p99":13},"causal":{"total":27774,"counts":{"0":21573,"1":5429,"2":682,"3":80,"4":8,"5":1,"6":1},"p50":0,"p90":1,"p95":1,"p99":2}},"paragraph":{"sentenceCount":{"total":13750,"counts":{"1":5958,"2":4118,"3":2123,"4":978,"5":351,"6":135,"7":51,"8":17,"9":8,"10":6,"11":1,"14":1,"16":1,"17":1,"51":1},"p50":2,"p90":4,"p95":4,"p99":6}},"endingRuns":{"total":15172,"counts":{"1":8669,"2":3821,"3":1672,"4":669,"5":216,"6":88,"7":24,"8":6,"9":2,"10":2,"13":2,"29":1},"p50":1,"p90":3,"p95":4,"p99":5},"endingTransitions":{"것이다|것이다":74,"것이다|니다":311,"것이다|다":142,"것이다|명령":29,"것이다|없음":29,"것이다|요":3,"것이다|의문":6,"것이다|죠":8,"니다|것이다":311,"니다|니다":5769,"니다|다":32,"니다|명령":422,"니다|없음":305,"니다|요":58,"니다|의문":49,"니다|죠":85,"다|것이다":155,"다|니다":28,"다|다":4797,"다|명령":49,"다|없음":173,"다|요":1,"다|의문":10,"명령|것이다":40,"명령|니다":282,"명령|다":47,"명령|명령":84,"명령|없음":46,"명령|요":3,"명령|의문":4,"명령|죠":2,"없음|것이다":8,"없음|니다":117,"없음|다":103,"없음|명령":13,"없음|없음":176,"없음|요":1,"없음|의문":1,"요|것이다":4,"요|니다":42,"요|다":1,"요|명령":10,"요|없음":11,"요|요":9,"요|죠":7,"의문|것이다":5,"의문|니다":56,"의문|다":3,"의문|명령":14,"의문|없음":4,"의문|의문":15,"의문|죠":2,"죠|것이다":3,"죠|니다":49,"죠|명령":5,"죠|없음":5,"죠|요":5,"죠|의문":1},"rates":{"connector":{"p50":0.0404,"p90":0.1134,"p95":0.1538,"p99":0.2273},"question":{"p50":0.0,"p90":0.015,"p95":0.0306,"p99":0.0833},"readerCall":{"p50":0.0,"p90":0.0714,"p95":0.1333,"p99":0.5652},"deixis":{"p50":0.0588,"p90":0.16,"p95":0.2,"p99":0.3333}}}}}
|
package/data/pythonPackages.txt
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
# import 이름과 pip 패키지 이름이 다른 것. `모듈<TAB
|
|
1
|
+
# import 이름과 pip 패키지 이름이 다른 것. `모듈<TAB>패키지|다른패키지`. installImport 가 설치 줄과 대조할 때 쓴다.
|
|
2
2
|
# 같은 이름 (pandas, polars, duckdb) 은 적지 않는다. 출처는 각 패키지의 PyPI 페이지다.
|
|
3
3
|
sklearn scikit-learn
|
|
4
|
-
cv2 opencv-python
|
|
4
|
+
cv2 opencv-python|opencv-contrib-python|opencv-python-headless|opencv-contrib-python-headless
|
|
5
|
+
cudf cudf-cu12|cudf-cu13
|
|
5
6
|
PIL pillow
|
|
6
7
|
yaml pyyaml
|
|
7
8
|
bs4 beautifulsoup4
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://hanlint.dev/schemas/readerContract.schema.json",
|
|
4
|
+
"title": "hanlint Reader Contract",
|
|
5
|
+
"description": "A closed, model-independent contract for a prose reader, goal, and declared facts.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["version", "reader", "goal", "facts"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": { "const": 1 },
|
|
11
|
+
"reader": { "type": "string", "minLength": 1 },
|
|
12
|
+
"goal": { "type": "string", "minLength": 1 },
|
|
13
|
+
"facts": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"minItems": 1,
|
|
16
|
+
"uniqueItems": true,
|
|
17
|
+
"items": { "type": "string", "minLength": 1 }
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"kind": "hanlint.readerContractConformance",
|
|
4
|
+
"mode": "surfaceOnly",
|
|
5
|
+
"contract": {
|
|
6
|
+
"version": 1,
|
|
7
|
+
"reader": "release operator",
|
|
8
|
+
"goal": "verify budget and specification",
|
|
9
|
+
"facts": [
|
|
10
|
+
"Budget is 380,000 KRW.",
|
|
11
|
+
"Specification is [check](https://example.invalid/check).",
|
|
12
|
+
"Command is `mora check`."
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
"contractSha256": "db6bcd85a32b032aec0537b0798fb21541474b29a58ae16299d1e7957fbb2700",
|
|
16
|
+
"checks": [
|
|
17
|
+
{
|
|
18
|
+
"id": "atomsPreserved",
|
|
19
|
+
"text": "Budget is 380,000 KRW. Open [check](https://example.invalid/check) and run `mora check`.",
|
|
20
|
+
"expected": {
|
|
21
|
+
"version": 1,
|
|
22
|
+
"kind": "hanlint.checkResult",
|
|
23
|
+
"violationCount": 0,
|
|
24
|
+
"contractSha256": "db6bcd85a32b032aec0537b0798fb21541474b29a58ae16299d1e7957fbb2700",
|
|
25
|
+
"draftSha256": "621f4a001b2411b7a50cdbf2ae3f96093a3601aa873943257f82a27657698c30",
|
|
26
|
+
"surface": {
|
|
27
|
+
"missingNumbers": [],
|
|
28
|
+
"unexpectedNumbers": [],
|
|
29
|
+
"missingUrls": [],
|
|
30
|
+
"unexpectedUrls": [],
|
|
31
|
+
"missingCode": [],
|
|
32
|
+
"unexpectedCode": [],
|
|
33
|
+
"missingLinks": [],
|
|
34
|
+
"unexpectedLinks": []
|
|
35
|
+
},
|
|
36
|
+
"lint": {
|
|
37
|
+
"errorCount": 0,
|
|
38
|
+
"noticeCount": 0,
|
|
39
|
+
"errorRules": {},
|
|
40
|
+
"items": []
|
|
41
|
+
},
|
|
42
|
+
"meaning": "violationCount는 선언한 보호 원자와 hanlint error의 수다. facts의 관계와 진실, 빠진 의미, 독자 효용과 자연스러움은 검증하지 않는다"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "atomsChanged",
|
|
47
|
+
"text": "Budget is 400,000 KRW. Open https://example.invalid/other and run `mora run`.",
|
|
48
|
+
"expected": {
|
|
49
|
+
"version": 1,
|
|
50
|
+
"kind": "hanlint.checkResult",
|
|
51
|
+
"violationCount": 7,
|
|
52
|
+
"contractSha256": "db6bcd85a32b032aec0537b0798fb21541474b29a58ae16299d1e7957fbb2700",
|
|
53
|
+
"draftSha256": "61996e43ea762bd8d1e7ca94465b5260dcaa15147a4e378ab4c2f92055c11fad",
|
|
54
|
+
"surface": {
|
|
55
|
+
"missingNumbers": ["380000"],
|
|
56
|
+
"unexpectedNumbers": ["400000"],
|
|
57
|
+
"missingUrls": ["https://example.invalid/check"],
|
|
58
|
+
"unexpectedUrls": ["https://example.invalid/other"],
|
|
59
|
+
"missingCode": ["mora check"],
|
|
60
|
+
"unexpectedCode": ["mora run"],
|
|
61
|
+
"missingLinks": ["https://example.invalid/check"],
|
|
62
|
+
"unexpectedLinks": []
|
|
63
|
+
},
|
|
64
|
+
"lint": {
|
|
65
|
+
"errorCount": 0,
|
|
66
|
+
"noticeCount": 0,
|
|
67
|
+
"errorRules": {},
|
|
68
|
+
"items": []
|
|
69
|
+
},
|
|
70
|
+
"meaning": "violationCount는 선언한 보호 원자와 hanlint error의 수다. facts의 관계와 진실, 빠진 의미, 독자 효용과 자연스러움은 검증하지 않는다"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"patches": [
|
|
75
|
+
{
|
|
76
|
+
"id": "namedReasonReduced",
|
|
77
|
+
"text": "Budget is 400,000 KRW. Open https://example.invalid/other and run `mora run`.",
|
|
78
|
+
"patch": {
|
|
79
|
+
"reason": "unexpectedNumbers",
|
|
80
|
+
"before": "400,000",
|
|
81
|
+
"after": "380,000"
|
|
82
|
+
},
|
|
83
|
+
"expected": {
|
|
84
|
+
"version": 1,
|
|
85
|
+
"kind": "hanlint.patchResult",
|
|
86
|
+
"verified": true,
|
|
87
|
+
"violationCount": 0,
|
|
88
|
+
"contractSha256": "db6bcd85a32b032aec0537b0798fb21541474b29a58ae16299d1e7957fbb2700",
|
|
89
|
+
"sourceSha256": "61996e43ea762bd8d1e7ca94465b5260dcaa15147a4e378ab4c2f92055c11fad",
|
|
90
|
+
"patchSha256": "79ee21727a19e3466b5fa5f2d37731640550c8f35e1b4b08958eb26271dea6cd",
|
|
91
|
+
"resultSha256": "af74b6b5fab9af9ecc32ebfc8e4a2333310814e5324d4fbd7b0c3170ac7c5d78",
|
|
92
|
+
"matchCount": 1,
|
|
93
|
+
"reason": {
|
|
94
|
+
"name": "unexpectedNumbers",
|
|
95
|
+
"before": 1,
|
|
96
|
+
"after": 0,
|
|
97
|
+
"reduced": true
|
|
98
|
+
},
|
|
99
|
+
"newSurfaceIssues": [],
|
|
100
|
+
"newErrors": [],
|
|
101
|
+
"meaning": "verified는 정확히 한 자리를 바꾸고 명시한 기존 위반을 줄이며 새 보호 원자 위반과 새 error를 만들지 않았다는 뜻뿐이다. 수정문의 의미와 진실, 자연스러움은 승인하지 않는다"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "newAtomRejected",
|
|
106
|
+
"text": "Budget is 400,000 KRW. Open https://example.invalid/other and run `mora run`.",
|
|
107
|
+
"patch": {
|
|
108
|
+
"reason": "unexpectedNumbers",
|
|
109
|
+
"before": "400,000",
|
|
110
|
+
"after": "500,000"
|
|
111
|
+
},
|
|
112
|
+
"expected": {
|
|
113
|
+
"version": 1,
|
|
114
|
+
"kind": "hanlint.patchResult",
|
|
115
|
+
"verified": false,
|
|
116
|
+
"violationCount": 2,
|
|
117
|
+
"contractSha256": "db6bcd85a32b032aec0537b0798fb21541474b29a58ae16299d1e7957fbb2700",
|
|
118
|
+
"sourceSha256": "61996e43ea762bd8d1e7ca94465b5260dcaa15147a4e378ab4c2f92055c11fad",
|
|
119
|
+
"patchSha256": "fcdda25edcc5fcbc2f94f843503713bf9bb8090dfc8a2cde0317ad56b32b3126",
|
|
120
|
+
"resultSha256": "99cc1b154baa798457652dee24ff3e5cc2f83bd703790b37885edd510e9e145d",
|
|
121
|
+
"matchCount": 1,
|
|
122
|
+
"reason": {
|
|
123
|
+
"name": "unexpectedNumbers",
|
|
124
|
+
"before": 1,
|
|
125
|
+
"after": 1,
|
|
126
|
+
"reduced": false
|
|
127
|
+
},
|
|
128
|
+
"newSurfaceIssues": [
|
|
129
|
+
{
|
|
130
|
+
"kind": "unexpectedNumbers",
|
|
131
|
+
"value": "500000"
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"newErrors": [],
|
|
135
|
+
"meaning": "verified는 정확히 한 자리를 바꾸고 명시한 기존 위반을 줄이며 새 보호 원자 위반과 새 error를 만들지 않았다는 뜻뿐이다. 수정문의 의미와 진실, 자연스러움은 승인하지 않는다"
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "ambiguousTargetRejected",
|
|
140
|
+
"text": "Budget is 400,000 plus 400,000 KRW.",
|
|
141
|
+
"patch": {
|
|
142
|
+
"reason": "unexpectedNumbers",
|
|
143
|
+
"before": "400,000",
|
|
144
|
+
"after": "380,000"
|
|
145
|
+
},
|
|
146
|
+
"expected": {
|
|
147
|
+
"version": 1,
|
|
148
|
+
"kind": "hanlint.patchResult",
|
|
149
|
+
"verified": false,
|
|
150
|
+
"violationCount": 2,
|
|
151
|
+
"contractSha256": "db6bcd85a32b032aec0537b0798fb21541474b29a58ae16299d1e7957fbb2700",
|
|
152
|
+
"sourceSha256": "a4f2694e45a011411cb36f53edf8b27371d4bc49a5898948687db9913d75c19c",
|
|
153
|
+
"patchSha256": "79ee21727a19e3466b5fa5f2d37731640550c8f35e1b4b08958eb26271dea6cd",
|
|
154
|
+
"resultSha256": null,
|
|
155
|
+
"matchCount": 2,
|
|
156
|
+
"reason": {
|
|
157
|
+
"name": "unexpectedNumbers",
|
|
158
|
+
"before": 1,
|
|
159
|
+
"after": null,
|
|
160
|
+
"reduced": false
|
|
161
|
+
},
|
|
162
|
+
"newSurfaceIssues": [],
|
|
163
|
+
"newErrors": [],
|
|
164
|
+
"meaning": "verified는 정확히 한 자리를 바꾸고 명시한 기존 위반을 줄이며 새 보호 원자 위반과 새 error를 만들지 않았다는 뜻뿐이다. 수정문의 의미와 진실, 자연스러움은 승인하지 않는다"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://hanlint.dev/schemas/readerContractV2.schema.json",
|
|
4
|
+
"title": "hanlint Reader Contract v2",
|
|
5
|
+
"description": "A closed prose contract that separates reviewed facts, protected surface atoms, and an exact heading outline.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["version", "reader", "goal", "facts", "surface", "outline"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": { "const": 2 },
|
|
11
|
+
"reader": { "type": "string", "minLength": 1 },
|
|
12
|
+
"goal": { "type": "string", "minLength": 1 },
|
|
13
|
+
"facts": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"uniqueItems": true,
|
|
16
|
+
"items": { "type": "string", "minLength": 1 }
|
|
17
|
+
},
|
|
18
|
+
"lockedFacts": { "$ref": "#/$defs/strings" },
|
|
19
|
+
"editPolicy": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"additionalProperties": {
|
|
22
|
+
"type": "object",
|
|
23
|
+
"additionalProperties": false,
|
|
24
|
+
"required": ["maxChars", "maxLines"],
|
|
25
|
+
"properties": {
|
|
26
|
+
"maxChars": { "type": "integer", "minimum": 1 },
|
|
27
|
+
"maxLines": { "type": "integer", "minimum": 1 }
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"surface": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"required": ["numbers", "urls", "code", "links"],
|
|
35
|
+
"properties": {
|
|
36
|
+
"numbers": { "$ref": "#/$defs/strings" },
|
|
37
|
+
"urls": { "$ref": "#/$defs/strings" },
|
|
38
|
+
"code": { "$ref": "#/$defs/strings" },
|
|
39
|
+
"links": { "$ref": "#/$defs/strings" }
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"outline": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"required": ["level", "headings"],
|
|
46
|
+
"properties": {
|
|
47
|
+
"level": { "type": "integer", "minimum": 1, "maximum": 6 },
|
|
48
|
+
"headings": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"minItems": 1,
|
|
51
|
+
"uniqueItems": true,
|
|
52
|
+
"items": { "type": "string", "minLength": 1 }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"$defs": {
|
|
58
|
+
"strings": {
|
|
59
|
+
"type": "array",
|
|
60
|
+
"uniqueItems": true,
|
|
61
|
+
"items": { "type": "string", "minLength": 1 }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
package/data/ruleDocs.json
CHANGED
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
"longSentence": "어절 수가 longSentenceMax 를 넘는 문장.\n\n왜: 문장이 길면 독자가 주어와 서술어를 잇느라 되돌아간다. 짧은 문장과 긴 문장을 섞으라는 규칙의 상한이다.\n어디서: 실측. 블로그 다섯 편의 최장 문장이 23, 33, 23, 26, 45 어절이었고 30 을 넘는 둘은 읽어 보니 한 문장에\n 목록 넷을 넣은 것이었다. 임계는 config.longSentenceMax.\n고치기: 마침표로 끊는다. 나열이면 목록으로 꺼낸다.\n안 잡는 것: 임계 아래 문장. 코드와 표. 글쓰기 규칙의 위반이 아니라 신호라 notice 로 낸다.",
|
|
37
37
|
"moreLater": "마지막 절의 목록 항목이 moreLaterMaxChars 를 넘어 본문만큼 설명하는 것.\n\n왜: 글 끝의 목록은 본문에서 뺀 것의 갈 곳이다. 무엇을 할 수 있는지 한 줄과 링크나 코드 한 줄이면 된다.\n 항목이 본문 문단만큼 길어지면 미룬 것이 아니라 옮겨 적은 것이고, 결말로 닫힌 글이 다시 열린다.\n어디서: cinch 의 전역 blog-writing 스킬, 무엇을 빼는가. 목록 항목이 본문만큼 설명하면 미룬 것이 아니라\n 옮겨 적은 것이다. 임계는 config.moreLaterMaxChars 이고 실측으로 정했다 (다섯 편의 마지막 절 항목\n 24개가 17~196자, 149자부터가 문장 셋 이상).\n고치기: 항목을 한 줄로 줄이고 자세한 것은 링크나 코드 한 줄로 넘긴다. 정말 본문에 있어야 하면 본문 절로 올린다.\n안 잡는 것: 마지막 절이 아닌 곳의 목록 (본문 목록은 설명의 일부다). 목록이 없는 마지막 절. 한 글에 한 번만\n 낸다. 길이는 근사라 notice 로만 낸다.",
|
|
38
38
|
"negationRedefine": "단순한 X 가 아닙니다 뒤에 Y 입니다 로 다시 정의하는 두 문장 공식.\n\n왜: 부정하고 재정의하는 대구는 AI 가 즐겨 쓰는 수사다. 독자는 X 가 아니라는 말에서 정보를 얻지 못하고\n Y 만 읽으면 된다.\n어디서: AI 문체 신호 조사 (gist 패턴7 부정 후 재정의, im-not-ai C-8 대칭 대구).\n고치기: 앞 문장을 지우고 Y 를 바로 쓴다. 필요하면 Y 가 무엇을 하는지 한 문장을 더한다.\n안 잡는 것: 뒤 문장이 정의문이 아닌 경우. 단순한 도구가 아닙니다. 그래서 설치가 어렵습니다 는 잡지\n 않는다.",
|
|
39
|
-
"noQuestion": "절이 둘 이상인데 물음표가 한 번도 없는 글.\n\n왜:
|
|
40
|
-
"nounPile": "명사가 조사 없이 nounPileMin 개 이상 이어진 자리.\n\n왜: 가상환경 생성 후 패키지 설치 확인 은 무엇이 무엇의 목적어인지 표시되어 있지 않다. 독자가 조사를\n 끼워 넣어야
|
|
39
|
+
"noQuestion": "절이 둘 이상인데 물음표가 한 번도 없는 글.\n\n왜: 물음표 부재는 관찰이지 결함의 확정이 아니다. 질문 없이 설명하는 글도 정당하므로 기본 notice다.\n 질문을 요구하는 사용자의 enforceStyle 정책에서만 error로 낸다.\n어디서: 글쓰기 스킬의 사실과 목소리.\n고치기: 설명만으로 충분하면 유지한다. 질문이 필요한 자리에서만 독자의 의문을 묻고 다음 문장으로 답한다.\n 물음표를 넣기 위해 이미 명확한 문장을 바꾸지 않는다.\n안 잡는 것: 절이 하나뿐인 짧은 참고 문서. 제목의 물음표도 센다. 물음은 없는데 독자 호출은 있는 글도 잡는다\n (질문 사용 여부를 사람이 판단한다). 독자 호출만 세던 readerAbsent 는 이 규칙의 부분집합이라 2026-08-29 본보기\n 게이트에서 드러나 여기로 접었다.",
|
|
40
|
+
"nounPile": "명사가 조사 없이 nounPileMin 개 이상 이어진 자리.\n\n왜: 가상환경 생성 후 패키지 설치 확인 은 무엇이 무엇의 목적어인지 표시되어 있지 않다. 독자가 조사를\n 끼워 넣어야 읽힐 수 있다. 표층 근사라 기본 notice이며 enforceStyle로 선택한 정책에서만 error다.\n어디서: 글쓰기 스킬의 설명을 풀어 쓰기 (명사를 쌓지 말고 동사로 되돌린다). im-not-ai A-13, F-4.\n 임계는 config.nounPileMin. 파이썬 데이터프레임 라이브러리 가 넷이라 다섯부터 짚는다 (PRD 부록 A).\n고치기: 동사로 되돌린다. 가상환경을 만든 뒤 패키지가 설치됐는지 확인한다.\n안 잡는 것: 쉼표로 나열한 고유명사 (pandas, Polars, DuckDB). 쉼표가 연속을 끊는다. 임계 아래의 복합어.",
|
|
41
41
|
"numberOrphan": "A 에서 B 로 라고 견주는데 A 가 글 앞에 한 번도 나온 적 없는 자리.\n\n왜: 독자는 앞에서 본 값을 기준으로 변화를 읽는다. 기준값이 그 자리에서 처음 나오면 무엇에서 무엇으로\n 움직인 것인지 알 수 없고, 앞으로 되돌아가 찾다가 없다는 것을 확인하고 멈춘다.\n어디서: 실측. 블로그 004 의 `이 5백만 줄 표를 넘길 때 파이썬이 잡은 메모리 최대치는 453MB 에서 700MB 로\n 올라갔습니다` 를 평가자가 집었다. 453MB 가 앞의 어떤 실행에도 없었다. cinch 의 전역 blog-writing 스킬,\n 새로 나온 값과 옵션은 무엇인지 왜 그 값인지 독자가 지금 무엇을 하면 되는지를 그 자리에서 준다.\n 독자가 앞에서 본 수는 독자 상태 (fingerprint/readerState.py) 의 numerals 다.\n고치기: 기준값이 어디서 나온 것인지 한 문장으로 밝히거나, 그 값을 만든 실행을 앞에 둔다.\n안 잡는 것: 한 자리 수 (세는 말이지 재는 값이 아니다). 앞선 문장, 코드 블록, 출력, 표, 목록, 제목에 이미\n 나온 값. 같은 문장 안에서 앞서 나온 값. 값 바로 앞이 그 값의 출처를 밝히는 자리 (`1년 전 26.14% 에서\n 18.53% 로` 는 어디서 온 값인지 이미 말했다. 실측 오탐이었고 data/baselineAnchors.txt 로 걸렀다).\n 표층으로 세는 근사라 notice 로만 낸다.",
|
|
42
|
-
"outsideProfile": "같은 종류의 글에서 백 문장에 하나도 안 되는 값 (문장 길이, 쉼표, 처음 나온 화제어, 헤지) 을 가진 문장.\n\n왜: 독자는 그 종류의 글에서 늘 보던 만큼을 기대한다. 편집된 글 수천 문장 가운데 1% 도 안 되는 길이나 새 화제어\n 수는 그 독자가 그 종류에서 겪지 않던 부담이다. 좋다 나쁘다가 아니라 자리가 어디인지를 말한다.\n어디서: 실측. 기준 말뭉치 390편에서 30어절을 넘는 문장이 안내서 0.16%, 기술 문서 0.87%, 뉴스 6.7%, 1930년대 수필\n 8.3% 였다. 임계 하나가 종류마다 열 배씩 다르게 잡는다 (2026-08-29). 종류별 norms 를 백분위로 보이는 것은\n Coh-Metrix 가 영어에서 한 방식이고 한국어에는 없었다. 프로파일은 data/profiles.json (scripts/
|
|
42
|
+
"outsideProfile": "같은 종류의 글에서 백 문장에 하나도 안 되는 값 (문장 길이, 쉼표, 처음 나온 화제어, 헤지) 을 가진 문장.\n\n왜: 독자는 그 종류의 글에서 늘 보던 만큼을 기대한다. 편집된 글 수천 문장 가운데 1% 도 안 되는 길이나 새 화제어\n 수는 그 독자가 그 종류에서 겪지 않던 부담이다. 좋다 나쁘다가 아니라 자리가 어디인지를 말한다.\n어디서: 실측. 기준 말뭉치 390편에서 30어절을 넘는 문장이 안내서 0.16%, 기술 문서 0.87%, 뉴스 6.7%, 1930년대 수필\n 8.3% 였다. 임계 하나가 종류마다 열 배씩 다르게 잡는다 (2026-08-29). 종류별 norms 를 백분위로 보이는 것은\n Coh-Metrix 가 영어에서 한 방식이고 한국어에는 없었다. 프로파일은 data/profiles.json (scripts/derive/profiles.py\n 가 corpus/catalogue.toml 의 말뭉치에서 만든다). 백분위 임계는 config.profilePercentile. 처음 나온 화제어는 독자\n 상태 (fingerprint/readerState.py) 의 known 으로 센다.\n고치기: 문장을 나누거나 쉼표 절을 문장으로 세운다. 처음 나온 화제어가 많으면 앞 문장에서 하나씩 먼저 세운다.\n 헤지는 수치나 조건으로 바꾼다.\n안 잡는 것: 프리셋에 프로파일이 없는 종류. 99% 값이 0 인 지표 (거의 안 나오는 것은 하나만 있어도 꼬리라 짚을 것이\n 없다). 상위 1% 는 정의상 백 문장에 하나라 notice 로만 낸다. `--profile` 이\n 가리키는 사용자 프로파일이 있으면 종류 대신 그것과 견준다.",
|
|
43
43
|
"paraFragment": "한두 문장짜리 산문 문단이 fragmentRun 개 이상 연달아 오는 자리.\n\n왜: 설명글에 줄바꿈을 마구 넣으면 이유로 이어야 할 문장 사이가 전부 끊긴다. 독자는 조각 사이의\n 관계를 다시 세워야 한다.\n어디서: 운영자 규칙 (설명글은 줄바꿈을 막 쳐넣지 않는다). 글쓰기 스킬의 설명을 풀어 쓰기. 임계는\n config.fragmentRun. 셈은 반복 기제 (rules/shared/repeat.py) 의 runsOf 다.\n고치기: 화제가 같으면 한 문단으로 묶는다. 줄바꿈은 화제가 바뀌는 자리에만 둔다.\n안 잡는 것: 사이에 코드 블록이나 표가 끼면 줄을 다시 센다. 코드 앞뒤에 한 문장씩 놓는 것은 조각남이\n 아니라 설명이다. 목록은 세지 않는다.",
|
|
44
44
|
"platformApi": "한 운영체제에서만 도는 API 나 경로를 쓴 코드.\n\n왜: 다른 운영체제 독자는 답까지 다 구해 놓고 그 줄에서 AttributeError 로 멈춘다. 글쓴이 컴퓨터에서는 돌아서\n 글쓴이는 모른다.\n어디서: 실측. 블로그 004 의 peak_wset 이 윈도우에서만 나와 사람 평가자가 집었다. 목록은 data/platformApis.txt.\n고치기: 그 줄이 어느 운영체제 전용인지 적고 대안을 준다. 또는 이식 가능한 API 로 바꾼다.\n안 잡는 것: 목록에 없는 API. 산문 안의 언급. notice 로만 낸다.",
|
|
45
45
|
"promiseRecall": "뒤에서 다루겠습니다 라고 미뤄 놓고 앞에서 미룬 것을 부르는 표지가 글 어디에도 없는 것.\n\n왜: 뒤에서 다루겠습니다 를 써 놓고 끝까지 안 나오면 정보 배분이 아니라 누락이다. 회수할 때는 미뤘다는\n 사실을 밝히고 앞에서 쓴 이름을 다시 부른다.\n어디서: 글쓰기 스킬의 무엇을 빼는가 (미룬 것은 같은 글 안에서 회수한다). 이런 검사를 하는 선행 도구가\n 없다 (조사 결과). 표지 목록은 data/promiseMarkers.txt 와 recallMarkers.txt. 약속과 회수는 독자 상태\n (fingerprint/readerState.py) 가 문장 순서로 쌓고, 글을 다 읽은 독자 (final) 에게 묻는다.\n고치기: 뒤 절에서 앞에서 미룬 X 로 부르며 다룬다. 회수하지 못할 것은 애초에 미루지 말고 지운다.\n안 잡는 것: 회수 표지가 하나라도 있는 글. 어느 약속을 어느 회수가 갚았는지는 대조하지 않는다.\n 표지 근사라 notice 로만 낸다.",
|
package/data/version.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version": "0.0.
|
|
1
|
+
{"version": "0.0.10"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"properties": {
|
|
19
19
|
"version": { "const": 1 },
|
|
20
20
|
"preset": {
|
|
21
|
-
"enum": ["blog", "report", "docs", "guide", "essay", "fiction", "encyclopedia"]
|
|
21
|
+
"enum": ["blog", "report", "docs", "guide", "essay", "fiction", "encyclopedia", "chat"]
|
|
22
22
|
},
|
|
23
23
|
"reader": { "type": "string", "minLength": 1 },
|
|
24
24
|
"task": { "type": "string", "minLength": 1 },
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"properties": {
|
|
20
20
|
"version": { "const": 2 },
|
|
21
21
|
"preset": {
|
|
22
|
-
"enum": ["blog", "report", "docs", "guide", "essay", "fiction", "encyclopedia"]
|
|
22
|
+
"enum": ["blog", "report", "docs", "guide", "essay", "fiction", "encyclopedia", "chat"]
|
|
23
23
|
},
|
|
24
24
|
"reader": { "type": "string", "minLength": 1 },
|
|
25
25
|
"task": { "type": "string", "minLength": 1 },
|
package/package.json
CHANGED
package/src/cli/help.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/** 첫 화면 다음에 보이는 작업 흐름 중심 도움말. */
|
|
3
|
+
|
|
4
|
+
export function rootHelp() {
|
|
5
|
+
return `hanlint: 한국어 마크다운에서 반복되는 결함과 계약 위반을 결정적으로 찾는다
|
|
6
|
+
|
|
7
|
+
일상 검사
|
|
8
|
+
hanlint 글.md 글을 검사한다
|
|
9
|
+
hanlint fix 글.md 안전한 고침만 적용한다
|
|
10
|
+
hanlint hook AI가 저장한 마크다운을 같은 턴에 검사한다
|
|
11
|
+
|
|
12
|
+
요구사항 잠금
|
|
13
|
+
hanlint contract init 글.md --reader "독자" --goal "목표" --outline h2
|
|
14
|
+
hanlint check contract.json 글.md --format text
|
|
15
|
+
hanlint verify-patch contract.json 글.md patch.json
|
|
16
|
+
|
|
17
|
+
설정과 이해
|
|
18
|
+
hanlint init 설정 파일을 만든다
|
|
19
|
+
hanlint doctor 적용 설정과 꺼진 규칙을 본다
|
|
20
|
+
hanlint rules 규칙을 부류별로 본다
|
|
21
|
+
hanlint explain <규칙> 규칙의 이유와 본보기를 본다
|
|
22
|
+
hanlint patterns --rule <규칙> 다시 쓸 문장 틀을 본다
|
|
23
|
+
hanlint spec --preset <종류> --chars 800
|
|
24
|
+
쓰기 전 숫자 사양을 만든다
|
|
25
|
+
hanlint primer --preset <종류> 쓰기 전에 규칙의 고치는 법과 본보기를 한 장으로 본다
|
|
26
|
+
|
|
27
|
+
추가 명령
|
|
28
|
+
baseline, print
|
|
29
|
+
Python 전용: audit, map, watch, profile, coverage, diff, learn, packet,
|
|
30
|
+
guard, arena, blueprint, evidence, entailment, terms
|
|
31
|
+
|
|
32
|
+
자세한 옵션은 hanlint <명령> --help 로 본다. 폴더를 주면 그 아래 마크다운을 검사한다.
|
|
33
|
+
종료 코드: 0 error 없음, 1 error 있음, 2 입력이나 설정 문제. 좋은 글인지는 판정하지 않는다.`;
|
|
34
|
+
}
|