# humanizer-lint — Full Technical Reference > Version 1.2.1. This document is generated into `/llms-full.txt` with the current checked-in rule catalogs during the static demo build. ## Purpose `humanizer-lint` is a deterministic style validator for multi-language prose. Native `Intl.Segmenter` handles sentence and word segmentation locally. EN, ID, ES, MS, FR, DE, PT, and ZH use bundled lexical packs; other ISO 639-1 inputs fall back to universal stylometry. It does not estimate authorship, identify a human writer, or send text to a remote model. A result reports configured style checks for the exact input passed to the local CLI or browser analyzer. ## Install and run ```sh npx skills add yanstd888/humanizer-lint npx humanizer-lint --file draft.md --lang auto --json cat draft.md | npx humanizer-lint --stdin --json ``` CLI language selection: `--lang auto|universal|`. Playground deep-links: `?sample=ai-id`, `?sample=ai-en`, `?sample=ai-es`, `?sample=ai-ms`, `?sample=ai-fr`, `?sample=ai-de`, `?sample=ai-pt`, and `?sample=ai-zh`. Exit codes: - `0`: `PASS` or short-text `SKIP`. - `1`: analyzed successfully and returned `FAIL`. - `2`: invalid arguments, unreadable input, or malformed profile. ## JSON result schema ```json { "status": "PASS | FAIL | SKIP", "score": 0, "language": "ISO 639-1 code | universal", "rulePack": "en | id | es | ms | fr | de | pt | zh | universal", "warning": "optional short-text warning", "metrics": { "wordCount": 0, "sentenceCount": 0, "meanSentenceLength": 0, "stdDev": 0, "burstinessCV": 0, "adjacentDelta": 0, "shortSentenceRatio": 0, "longSentenceRatio": 0, "mattr": 0, "compressionRatio": 0, "nominalizationRatio": 0, "passiveRatio": 0, "voiceProfileDeviation": 0 }, "violations": [ { "type": "RULE_OR_METRIC_CODE", "ruleId": "optional lexical rule id", "location": "Paragraph N, Sentence M | Whole text", "match": "optional matched text", "fixInstruction": "actionable local revision guidance" } ] } ``` ## Default thresholds - Minimum statistical sample: 20 words and 3 sentences. - Burstiness CV: `0.45` for 8 or more sentences; `0.40` for shorter eligible text. - Adjacent rhythm delta: `4`. - Short-sentence ratio: `0.15` for sentences of 6 words or fewer on 8+ sentence text. - Long-sentence ratio: `0.10` for sentences of 26 words or more on 8+ sentence text. - MATTR: `0.72` Indonesian and Latin-script universal fallback; `0.74` English; `0.68` CJK fallback and Mandarin. - Pass score: `80`. - Indonesian nominalization maximum ratio: `0.045`. - Indonesian passive maximum ratio: `0.035`. ## Scoring formula The score starts at 100 and applies bounded deductions from the measured result: 1. **Burstiness:** when CV is under the applicable target, deduct `min(25, round((target - CV) * 100))`. For 8+ sentence text that misses either short or long sentence distribution, add 8 more points, capped at 25. 2. **Monotonous rhythm:** deduct up to 20 points at 6 points per `MONOTONOUS_RHYTHM` finding. 3. **Lexical patterns:** deduct up to 30 points: 5 each for `SLOP_PHRASE` or `DEFINITIONAL_OPENING`, and 4 each for `STRUCTURAL_CLICHE`. 4. **Morphology:** deduct 7.5 for an excessive nominalization finding and up to 15 for passive-bloating findings, capped at 15 total. 5. **Vocabulary, entropy, and profile:** deduct up to 10 total: 5 for low MATTR, 5 for structural repetition, and 5 for a supplied voice-profile deviation. A `PASS` additionally requires score at or above the configured pass score, no forbidden slop/definitional opening, the applicable CV target, adjacent rhythm delta, and required sentence distribution. A short input returns `SKIP`; lexical slop can still be reported. ## Metrics - **Burstiness CV:** standard deviation of sentence word counts divided by their mean. - **Adjacent rhythm delta:** mean absolute difference between neighboring sentence word counts. - **Adaptive MATTR:** average type-token ratio over a window chosen as the smaller of the text length and an adaptive maximum of 50 words. - **Compression ratio:** raw-deflate byte length divided by normalized source byte length; used for repetition checks on sufficiently long text. - **Indonesian morphology:** configured nominalization and passive patterns use whitelists/exclusions defined in the generated catalog below. ## Rule catalog The following JSON blocks are copied directly from the checked-in rules used by the CLI and browser analyzer at build time. ### Rule catalog The following JSON object is copied directly from all checked-in rule packs used by the CLI and browser analyzer at build time. ```json { "id": { "language": "id", "stopwords": [ "yang", "dan", "di", "ini", "untuk", "dengan", "dari", "pada", "dalam", "tidak", "akan", "atau", "juga", "oleh", "adalah", "sebagai", "bahwa", "dapat", "karena", "tersebut" ], "patterns": [ { "id": "ID001", "type": "SLOP_PHRASE", "pattern": "\\bdi era digital\\b", "fixInstruction": "Mulai langsung dari subjek atau fakta konkret." }, { "id": "ID002", "type": "SLOP_PHRASE", "pattern": "\\bdi tengah pesatnya\\b", "fixInstruction": "Hapus pembuka umum dan sebutkan perubahan yang dimaksud." }, { "id": "ID003", "type": "SLOP_PHRASE", "pattern": "\\btidak dapat dipungkiri\\b", "fixInstruction": "Nyatakan klaim secara langsung tanpa pembuka klise." }, { "id": "ID004", "type": "SLOP_PHRASE", "pattern": "\\btak dapat dipungkiri\\b", "fixInstruction": "Nyatakan klaim secara langsung tanpa pembuka klise." }, { "id": "ID005", "type": "SLOP_PHRASE", "pattern": "\\bpenting untuk diingat\\b", "fixInstruction": "Hapus penanda kepentingan dan tulis fakta yang perlu diingat." }, { "id": "ID006", "type": "SLOP_PHRASE", "pattern": "\\bperlu dicatat bahwa\\b", "fixInstruction": "Hapus pengantar dan mulai dari informasi intinya." }, { "id": "ID007", "type": "SLOP_PHRASE", "pattern": "\\bsebagai kesimpulan\\b", "fixInstruction": "Hapus kesimpulan generik atau tutup dengan fakta terakhir." }, { "id": "ID008", "type": "SLOP_PHRASE", "pattern": "\\bsecara keseluruhan\\b", "fixInstruction": "Ganti rangkuman umum dengan kesimpulan yang spesifik." }, { "id": "ID009", "type": "SLOP_PHRASE", "pattern": "\\blebih lanjut\\s*,", "fixInstruction": "Hubungkan kalimat berdasarkan maknanya, bukan transisi otomatis." }, { "id": "ID010", "type": "SLOP_PHRASE", "pattern": "\\bnamun demikian\\s*,", "fixInstruction": "Gunakan kontras langsung jika memang ada pertentangan." }, { "id": "ID011", "type": "SLOP_PHRASE", "pattern": "\\bselain itu\\s*,", "maxOccurrences": 1, "perWords": 300, "fixInstruction": "Pertahankan paling banyak satu kali atau gunakan hubungan yang lebih spesifik." }, { "id": "ID012", "type": "SLOP_PHRASE", "pattern": "\\bmari kita bahas\\b", "fixInstruction": "Mulai pembahasan tanpa mengumumkannya." }, { "id": "ID013", "type": "SLOP_PHRASE", "pattern": "\\bmenyelami lebih dalam\\b", "fixInstruction": "Sebutkan aspek yang dianalisis secara langsung." }, { "id": "ID014", "type": "SLOP_PHRASE", "pattern": "\\bbukan sekadar\\b", "fixInstruction": "Nyatakan fungsi atau manfaat utama secara langsung." }, { "id": "ID015", "type": "SLOP_PHRASE", "pattern": "\\btidak hanya[\\s\\S]{0,80}?tetapi juga\\b", "maxOccurrences": 1, "perWords": 300, "fixInstruction": "Pisahkan kedua klaim atau nyatakan hubungan tanpa formula biner." }, { "id": "ID016", "type": "SLOP_PHRASE", "pattern": "\\bhal ini menunjukkan bahwa\\b", "fixInstruction": "Sebutkan bukti dan kesimpulannya secara langsung." }, { "id": "ID017", "type": "SLOP_PHRASE", "pattern": "\\bdapat disimpulkan bahwa\\b", "fixInstruction": "Tulis kesimpulan tanpa frasa pengantar." }, { "id": "ID018", "type": "SLOP_PHRASE", "pattern": "\\bseiring dengan perkembangan zaman\\b", "fixInstruction": "Sebutkan periode atau perubahan yang konkret." }, { "id": "ID019", "type": "SLOP_PHRASE", "pattern": "\\bdi zaman yang serba\\b", "fixInstruction": "Ganti generalisasi dengan konteks yang nyata." }, { "id": "ID020", "type": "SLOP_PHRASE", "pattern": "\\bdi dunia yang semakin\\b", "fixInstruction": "Sebutkan kondisi yang benar-benar berubah." }, { "id": "ID021", "type": "SLOP_PHRASE", "pattern": "\\bdalam lanskap yang\\b", "fixInstruction": "Sebutkan bidang atau keadaan secara langsung." }, { "id": "ID022", "type": "SLOP_PHRASE", "pattern": "\\bmemainkan peran penting\\b", "fixInstruction": "Jelaskan tindakan atau dampak konkretnya." }, { "id": "ID023", "type": "SLOP_PHRASE", "pattern": "\\bmenjadi kunci utama\\b", "fixInstruction": "Jelaskan syarat atau mekanisme yang sebenarnya." }, { "id": "ID024", "type": "SLOP_PHRASE", "pattern": "\\blangkah yang tepat\\b", "fixInstruction": "Sebutkan langkah yang dimaksud." }, { "id": "ID025", "type": "SLOP_PHRASE", "pattern": "\\blangkah strategis\\b", "fixInstruction": "Sebutkan tindakan dan hasil yang dituju." }, { "id": "ID026", "type": "SLOP_PHRASE", "pattern": "\\bsolusi inovatif\\b", "fixInstruction": "Jelaskan cara kerja solusi tanpa label promosi." }, { "id": "ID027", "type": "SLOP_PHRASE", "pattern": "\\bpendekatan holistik\\b", "fixInstruction": "Sebutkan bagian yang digabungkan oleh pendekatan tersebut." }, { "id": "ID028", "type": "SLOP_PHRASE", "pattern": "\\bberbagai aspek\\b", "fixInstruction": "Sebutkan aspek yang relevan." }, { "id": "ID029", "type": "SLOP_PHRASE", "pattern": "\\bdampak yang signifikan\\b", "fixInstruction": "Jelaskan dampak dan ukurannya jika tersedia." }, { "id": "ID030", "type": "SLOP_PHRASE", "pattern": "\\bhasil yang optimal\\b", "fixInstruction": "Nyatakan hasil yang dapat diamati atau diukur." }, { "id": "ID031", "type": "SLOP_PHRASE", "pattern": "\\bsecara efektif dan efisien\\b", "fixInstruction": "Jelaskan perbaikan waktu, biaya, atau mutu secara spesifik." }, { "id": "ID032", "type": "SLOP_PHRASE", "pattern": "\\bpada akhirnya\\s*,", "fixInstruction": "Tutup langsung dengan akibat atau keputusan akhir." }, { "id": "ID033", "type": "SLOP_PHRASE", "pattern": "\\bdengan demikian\\s*,", "fixInstruction": "Nyatakan akibatnya tanpa transisi otomatis." }, { "id": "ID034", "type": "SLOP_PHRASE", "pattern": "\\boleh karena itu\\s*,", "fixInstruction": "Hubungkan sebab dan akibat secara langsung." }, { "id": "ID035", "type": "SLOP_PHRASE", "pattern": "\\bpada dasarnya\\s*,", "fixInstruction": "Hapus pengantar dan nyatakan pokoknya." }, { "id": "ID036", "type": "SLOP_PHRASE", "pattern": "\\bperlu dipahami bahwa\\b", "fixInstruction": "Mulai dari informasi yang perlu dipahami." }, { "id": "ID037", "type": "SLOP_PHRASE", "pattern": "\\btentu saja\\s*,", "fixInstruction": "Hapus penegasan otomatis jika tidak menambah makna." }, { "id": "ID038", "type": "SLOP_PHRASE", "pattern": "\\btanpa diragukan lagi\\b", "fixInstruction": "Ganti kepastian retoris dengan bukti atau klaim langsung." }, { "id": "ID039", "type": "SLOP_PHRASE", "pattern": "\\bmembuka peluang baru\\b", "fixInstruction": "Sebutkan peluang yang benar-benar tersedia." }, { "id": "ID040", "type": "SLOP_PHRASE", "pattern": "\\bmendorong pertumbuhan berkelanjutan\\b", "fixInstruction": "Sebutkan mekanisme dan indikator pertumbuhannya." }, { "id": "ID041", "type": "DEFINITIONAL_OPENING", "scope": "paragraph-start", "pattern": "^[A-ZÀ-ÖØ-Þ][\\p{L}\\p{N}_\\s'\"-]{2,80}\\s+adalah\\s+(?:sebuah|suatu|proses|metode|sistem|cara|langkah|pendekatan)\\b", "fixInstruction": "Ganti definisi kaku dengan fungsi, contoh, atau fakta konkret." }, { "id": "ID042", "type": "DEFINITIONAL_OPENING", "scope": "paragraph-start", "pattern": "^Dalam (?:konteks|dunia|ranah) [\\p{L}\\p{N}\\s-]+,", "fixInstruction": "Mulai langsung dari subjek yang dibahas." } ], "morphology": { "nominalizationPattern": "^(?:peng|pen|pem|peny|pe|ke)[a-z]{5,}an$", "nominalizationWhitelist": [ "perusahaan", "pekerjaan", "pertanyaan", "pernyataan", "perjalanan", "permainan", "peralatan", "peraturan", "perubahan", "perbedaan", "persamaan", "pertemuan", "pernikahan", "pendidikan", "pemerintahan", "pembangunan", "pengalaman", "pengetahuan", "pendapatan", "pengeluaran", "kegiatan", "kesehatan", "kebutuhan", "keputusan", "keamanan", "kecepatan", "kekuatan", "kesempatan", "kesalahan", "ketentuan", "keuangan", "kebijakan", "kehidupan", "kemampuan", "kenyataan", "kepercayaan", "keterangan", "kewajiban", "kerusakan", "keuntungan", "kerugian", "kemajuan", "kehadiran", "kebiasaan" ], "nominalizationMaxRatio": 0.045, "passivePattern": "^di[a-z]{4,}(?:kan|i)$", "loanwordExclusionPattern": "^(?:diskusi|dinamika|dimensi|direktori|distribusi|divisi|disiplin|digital|diagnosa|diagram|dialek|dialog|diameter|dilema|dinamis|diplomasi|direktur|disertasi|diskon|divergensi|diversifikasi|dedikasi|definisi|delegasi|demokrasi|depresi|deskripsi|destinasi|deteksi|deviasi|dominasi|donasi|durasi)$", "loanwordSuffixExclusionPattern": "(?:asi|isi|ensi|uksi|logi|nomi|grafi|metri|krasi|fobi|pati|terapi|stasi|nasti)$", "passiveMaxRatio": 0.035, "subordinateOpeningPattern": "^(?:Dengan menggunakan|Untuk mencapai|Dalam rangka|Melalui pendekatan|Guna memastikan|Dengan memanfaatkan)\\b" } }, "en": { "language": "en", "stopwords": [ "the", "and", "of", "to", "in", "is", "that", "for", "it", "with", "as", "on", "are", "this", "by", "be", "at", "or", "from", "an" ], "patterns": [ { "id": "EN001", "type": "SLOP_PHRASE", "pattern": "\\bdelve\\b", "fixInstruction": "Name the exact action or subject instead." }, { "id": "EN002", "type": "SLOP_PHRASE", "pattern": "\\btapestry\\b", "fixInstruction": "Replace the metaphor with a concrete description." }, { "id": "EN003", "type": "SLOP_PHRASE", "pattern": "\\btestament\\b", "fixInstruction": "State the evidence directly." }, { "id": "EN004", "type": "SLOP_PHRASE", "pattern": "\\bunderscore(?:s|d|ing)?\\b", "fixInstruction": "State what the evidence shows." }, { "id": "EN005", "type": "SLOP_PHRASE", "pattern": "\\bpivotal\\b", "fixInstruction": "Describe the actual consequence without inflated significance." }, { "id": "EN006", "type": "SLOP_PHRASE", "pattern": "\\bcrucial\\b", "fixInstruction": "Explain why the item matters in this context." }, { "id": "EN007", "type": "SLOP_PHRASE", "pattern": "\\bfoster(?:s|ed|ing)?\\b", "fixInstruction": "Name the concrete behavior or outcome." }, { "id": "EN008", "type": "SLOP_PHRASE", "pattern": "\\blandscape\\b", "fixInstruction": "Name the field or conditions directly." }, { "id": "EN009", "type": "SLOP_PHRASE", "pattern": "\\brealm\\b", "fixInstruction": "Name the actual domain." }, { "id": "EN010", "type": "SLOP_PHRASE", "pattern": "\\bbeacon\\b", "fixInstruction": "Replace the metaphor with a supported fact." }, { "id": "EN011", "type": "SLOP_PHRASE", "pattern": "\\bsymphony\\b", "fixInstruction": "Describe the relationship without a decorative metaphor." }, { "id": "EN012", "type": "SLOP_PHRASE", "pattern": "\\bunlock(?:s|ed|ing)?\\b", "fixInstruction": "Name what becomes possible and how." }, { "id": "EN013", "type": "SLOP_PHRASE", "pattern": "\\belevate(?:s|d|ing)?\\b", "fixInstruction": "State the measurable improvement." }, { "id": "EN014", "type": "SLOP_PHRASE", "pattern": "\\bunleash(?:es|ed|ing)?\\b", "fixInstruction": "Describe the actual capability or result." }, { "id": "EN015", "type": "SLOP_PHRASE", "pattern": "\\bgame[- ]changer\\b", "fixInstruction": "State the specific change and its effect." }, { "id": "EN016", "type": "SLOP_PHRASE", "pattern": "\\bparadigm shift\\b", "fixInstruction": "Describe what changed in concrete terms." }, { "id": "EN017", "type": "SLOP_PHRASE", "pattern": "\\bmoreover\\b", "fixInstruction": "Connect the sentences by their actual relationship." }, { "id": "EN018", "type": "SLOP_PHRASE", "pattern": "\\bfurthermore\\b", "fixInstruction": "Connect the sentences by their actual relationship." }, { "id": "EN019", "type": "SLOP_PHRASE", "pattern": "\\bin conclusion\\b", "fixInstruction": "End on the final concrete point." }, { "id": "EN020", "type": "SLOP_PHRASE", "pattern": "\\bit is important to note\\b", "fixInstruction": "Remove the announcement and state the fact." }, { "id": "EN021", "type": "SLOP_PHRASE", "pattern": "\\bit is worth noting\\b", "fixInstruction": "Remove the announcement and state the fact." }, { "id": "EN022", "type": "SLOP_PHRASE", "pattern": "\\bin today['’]s fast-paced\\b", "fixInstruction": "Name the current condition precisely." }, { "id": "EN023", "type": "SLOP_PHRASE", "pattern": "\\bever-evolving\\b", "fixInstruction": "Name the change and its time frame." }, { "id": "EN024", "type": "SLOP_PHRASE", "pattern": "\\bseamless(?:ly)?\\b", "fixInstruction": "Describe the missing step, delay, or transition precisely." }, { "id": "EN025", "type": "SLOP_PHRASE", "pattern": "\\brobust\\b", "fixInstruction": "Name the failure mode or capacity the system handles." }, { "id": "EN026", "type": "SLOP_PHRASE", "pattern": "\\bcutting[- ]edge\\b", "fixInstruction": "Name the specific technical capability." }, { "id": "EN027", "type": "SLOP_PHRASE", "pattern": "\\brevolutionary\\b", "fixInstruction": "Describe the concrete difference without promotional language." }, { "id": "EN028", "type": "SLOP_PHRASE", "pattern": "\\bnext[- ]generation\\b", "fixInstruction": "Name the new behavior or version." }, { "id": "EN029", "type": "SLOP_PHRASE", "pattern": "\\btransformative\\b", "fixInstruction": "State what changed and for whom." }, { "id": "EN030", "type": "SLOP_PHRASE", "pattern": "\\bjourney\\b", "fixInstruction": "Name the process or sequence directly." }, { "id": "EN031", "type": "SLOP_PHRASE", "pattern": "\\bempower(?:s|ed|ing)?\\b", "fixInstruction": "Name the action users can now take." }, { "id": "EN032", "type": "SLOP_PHRASE", "pattern": "\\bharness(?:es|ed|ing)?\\b", "fixInstruction": "State how the resource is used." }, { "id": "EN033", "type": "SLOP_PHRASE", "pattern": "\\bnavigate(?:s|d|ing)? the complexities\\b", "fixInstruction": "Name the specific difficulty and response." }, { "id": "EN034", "type": "SLOP_PHRASE", "pattern": "\\bholistic approach\\b", "fixInstruction": "List the parts included in the approach." }, { "id": "EN035", "type": "SLOP_PHRASE", "pattern": "\\bvaluable insights\\b", "fixInstruction": "State the finding itself." }, { "id": "EN036", "type": "SLOP_PHRASE", "pattern": "\\bplays? a (?:key|vital|crucial) role\\b", "fixInstruction": "Describe the action or consequence directly." }, { "id": "EN037", "type": "SLOP_PHRASE", "pattern": "\\bthe future looks bright\\b", "fixInstruction": "End on a supported plan or concrete fact." }, { "id": "EN038", "type": "SLOP_PHRASE", "pattern": "\\bexciting times (?:lie|are) ahead\\b", "fixInstruction": "Replace optimism with a supported next step." }, { "id": "EN039", "type": "SLOP_PHRASE", "pattern": "\\bstands as a testament\\b", "fixInstruction": "State the evidence directly." }, { "id": "EN040", "type": "SLOP_PHRASE", "pattern": "\\bmarking a (?:pivotal|significant) moment\\b", "fixInstruction": "State what happened and its direct effect." }, { "id": "EN041", "type": "STRUCTURAL_CLICHE", "pattern": ",\\s+[a-z]+ing\\s+(?:a|the|its|their|this|that)\\s+[a-z]+", "fixInstruction": "Split or rewrite the participial tail as a supported clause." }, { "id": "EN042", "type": "STRUCTURAL_CLICHE", "pattern": "\\bnot only[\\s\\S]{0,100}?but also\\b", "fixInstruction": "State both claims directly without the binary formula." }, { "id": "EN043", "type": "STRUCTURAL_CLICHE", "pattern": "\\bit['’]s not just about[\\s\\S]{0,100}?it['’]s about\\b", "fixInstruction": "State the positive claim directly." }, { "id": "EN044", "type": "STRUCTURAL_CLICHE", "pattern": "(?:—|--)", "maxOccurrences": 1, "perWords": 250, "fixInstruction": "Replace repeated dashes with the punctuation that matches the relationship." } ] }, "es": { "language": "es", "stopwords": [ "de", "la", "que", "el", "en", "los", "del", "las", "por", "un", "para", "con", "no", "una", "su", "al", "es", "como", "más", "pero" ], "patterns": [ { "id": "ES001", "type": "SLOP_PHRASE", "pattern": "en\\s+el\\s+vertiginoso\\s+mundo\\s+actual", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES002", "type": "SLOP_PHRASE", "pattern": "en\\s+la\\s+era\\s+digital\\s+actual", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES003", "type": "SLOP_PHRASE", "pattern": "cabe\\s+destacar\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES004", "type": "SLOP_PHRASE", "pattern": "es\\s+importante\\s+recordar", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES005", "type": "SLOP_PHRASE", "pattern": "no\\s+se\\s+puede\\s+negar\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES006", "type": "SLOP_PHRASE", "pattern": "un\\s+tapiz\\s+de", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES007", "type": "SLOP_PHRASE", "pattern": "en\\s+conclusión", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES008", "type": "SLOP_PHRASE", "pattern": "en\\s+resumen", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES009", "type": "SLOP_PHRASE", "pattern": "además", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES010", "type": "SLOP_PHRASE", "pattern": "por\\s+otro\\s+lado", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES011", "type": "SLOP_PHRASE", "pattern": "sin\\s+lugar\\s+a\\s+dudas", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES012", "type": "SLOP_PHRASE", "pattern": "juega\\s+un\\s+papel\\s+crucial", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES013", "type": "SLOP_PHRASE", "pattern": "un\\s+testimonio\\s+de", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES014", "type": "SLOP_PHRASE", "pattern": "sumergirse\\s+en", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES015", "type": "SLOP_PHRASE", "pattern": "no\\s+solo", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES016", "type": "SLOP_PHRASE", "pattern": "sino\\s+también", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES017", "type": "SLOP_PHRASE", "pattern": "en\\s+el\\s+panorama\\s+actual", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES018", "type": "SLOP_PHRASE", "pattern": "es\\s+fundamental", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES019", "type": "SLOP_PHRASE", "pattern": "vale\\s+la\\s+pena\\s+señalar", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES020", "type": "SLOP_PHRASE", "pattern": "a\\s+medida\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES021", "type": "SLOP_PHRASE", "pattern": "en\\s+última\\s+instancia", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES022", "type": "SLOP_PHRASE", "pattern": "en\\s+un\\s+mundo\\s+en\\s+constante\\s+evolución", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES023", "type": "SLOP_PHRASE", "pattern": "abre\\s+la\\s+puerta\\s+a", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES024", "type": "SLOP_PHRASE", "pattern": "cambiar\\s+las\\s+reglas\\s+del\\s+juego", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES025", "type": "SLOP_PHRASE", "pattern": "sin\\s+problemas", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ES026", "type": "DEFINITIONAL_OPENING", "pattern": "^(?:En el contexto de|En el ámbito de|En el mundo de) [\\w\\s]+,", "scope": "paragraph-start", "fixInstruction": "Start with the specific subject or event instead of a generic framing clause." }, { "id": "ES027", "type": "STRUCTURAL_CLICHE", "pattern": "\\bno\\s+solo\\b[\\s\\S]{0,100}?\\bsino\\s+también\\b", "fixInstruction": "State both claims directly without the stock paired construction." } ] }, "ms": { "language": "ms", "stopwords": [ "yang", "dan", "di", "ini", "untuk", "dengan", "tidak", "dalam", "daripada", "pada", "adalah", "kerana", "boleh", "bagi", "bahawa", "oleh", "juga", "akan", "kepada", "mereka" ], "patterns": [ { "id": "MS001", "type": "SLOP_PHRASE", "pattern": "dalam\\s+era\\s+digital\\s+kini", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS002", "type": "SLOP_PHRASE", "pattern": "tidak\\s+dapat\\s+dinafikan\\s+bahawa", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS003", "type": "SLOP_PHRASE", "pattern": "penting\\s+untuk\\s+diingat", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS004", "type": "SLOP_PHRASE", "pattern": "perlu\\s+dinyatakan\\s+bahawa", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS005", "type": "SLOP_PHRASE", "pattern": "secara\\s+keseluruhannya", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS006", "type": "SLOP_PHRASE", "pattern": "kesimpulannya", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS007", "type": "SLOP_PHRASE", "pattern": "tambahan\\s+pula", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS008", "type": "SLOP_PHRASE", "pattern": "selain\\s+itu", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS009", "type": "SLOP_PHRASE", "pattern": "memainkan\\s+peranan\\s+penting", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS010", "type": "SLOP_PHRASE", "pattern": "bukan\\s+sahaja", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS011", "type": "SLOP_PHRASE", "pattern": "malah", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS012", "type": "SLOP_PHRASE", "pattern": "seiring\\s+dengan\\s+perkembangan\\s+pesat", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS013", "type": "SLOP_PHRASE", "pattern": "mari\\s+kita\\s+terokai", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS014", "type": "SLOP_PHRASE", "pattern": "hal\\s+ini\\s+membuktikan\\s+bahawa", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS015", "type": "SLOP_PHRASE", "pattern": "dalam\\s+dunia\\s+yang\\s+pantas\\s+berubah", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS016", "type": "SLOP_PHRASE", "pattern": "perlu\\s+diberi\\s+perhatian", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS017", "type": "SLOP_PHRASE", "pattern": "tanpa\\s+ragu-ragu", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS018", "type": "SLOP_PHRASE", "pattern": "sebagai\\s+kesimpulan", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS019", "type": "SLOP_PHRASE", "pattern": "pada\\s+masa\\s+kini", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS020", "type": "SLOP_PHRASE", "pattern": "membuka\\s+peluang\\s+baharu", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS021", "type": "SLOP_PHRASE", "pattern": "satu\\s+langkah\\s+ke\\s+hadapan", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS022", "type": "SLOP_PHRASE", "pattern": "memberi\\s+impak\\s+besar", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS023", "type": "SLOP_PHRASE", "pattern": "dalam\\s+landskap\\s+digital", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS024", "type": "SLOP_PHRASE", "pattern": "menjadi\\s+semakin\\s+penting", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS025", "type": "SLOP_PHRASE", "pattern": "secara\\s+tidak\\s+langsung", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "MS026", "type": "DEFINITIONAL_OPENING", "pattern": "^(?:Dalam konteks|Dalam dunia|Dalam bidang) [\\w\\s]+,", "scope": "paragraph-start", "fixInstruction": "Start with the specific subject or event instead of a generic framing clause." }, { "id": "MS027", "type": "STRUCTURAL_CLICHE", "pattern": "\\bbukan\\s+sahaja\\b[\\s\\S]{0,100}?\\bmalah\\b", "fixInstruction": "State both claims directly without the stock paired construction." } ] }, "fr": { "language": "fr", "stopwords": [ "de", "la", "le", "et", "les", "des", "en", "un", "du", "une", "que", "est", "pour", "qui", "dans", "par", "sur", "pas", "plus", "avec" ], "patterns": [ { "id": "FR001", "type": "SLOP_PHRASE", "pattern": "dans\\s+le\\s+monde\\s+trépidant\\s+d'aujourd'hui", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR002", "type": "SLOP_PHRASE", "pattern": "il\\s+est\\s+important\\s+de\\s+noter\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR003", "type": "SLOP_PHRASE", "pattern": "force\\s+est\\s+de\\s+constater\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR004", "type": "SLOP_PHRASE", "pattern": "en\\s+conclusion", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR005", "type": "SLOP_PHRASE", "pattern": "en\\s+résumé", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR006", "type": "SLOP_PHRASE", "pattern": "de\\s+plus", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR007", "type": "SLOP_PHRASE", "pattern": "en\\s+outre", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR008", "type": "SLOP_PHRASE", "pattern": "joue\\s+un\\s+rôle\\s+crucial", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR009", "type": "SLOP_PHRASE", "pattern": "une\\s+tapisserie\\s+de", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR010", "type": "SLOP_PHRASE", "pattern": "un\\s+témoignage\\s+de", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR011", "type": "SLOP_PHRASE", "pattern": "plonger\\s+dans", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR012", "type": "SLOP_PHRASE", "pattern": "non\\s+seulement", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR013", "type": "SLOP_PHRASE", "pattern": "mais\\s+aussi", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR014", "type": "SLOP_PHRASE", "pattern": "à\\s+l'ère\\s+du\\s+numérique", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR015", "type": "SLOP_PHRASE", "pattern": "il\\s+convient\\s+de\\s+souligner", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR016", "type": "SLOP_PHRASE", "pattern": "sans\\s+aucun\\s+doute", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR017", "type": "SLOP_PHRASE", "pattern": "dans\\s+le\\s+paysage\\s+actuel", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR018", "type": "SLOP_PHRASE", "pattern": "au\\s+fil\\s+du\\s+temps", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR019", "type": "SLOP_PHRASE", "pattern": "en\\s+fin\\s+de\\s+compte", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR020", "type": "SLOP_PHRASE", "pattern": "ouvrir\\s+la\\s+voie\\s+à", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR021", "type": "SLOP_PHRASE", "pattern": "changer\\s+la\\s+donne", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR022", "type": "SLOP_PHRASE", "pattern": "dans\\s+un\\s+monde\\s+en\\s+constante\\s+évolution", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR023", "type": "SLOP_PHRASE", "pattern": "une\\s+approche\\s+holistique", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR024", "type": "SLOP_PHRASE", "pattern": "des\\s+informations\\s+précieuses", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR025", "type": "SLOP_PHRASE", "pattern": "il\\s+est\\s+essentiel\\s+de", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "FR026", "type": "DEFINITIONAL_OPENING", "pattern": "^(?:Dans le contexte de|Dans le domaine de|Dans le monde de) [\\w\\s]+,", "scope": "paragraph-start", "fixInstruction": "Start with the specific subject or event instead of a generic framing clause." }, { "id": "FR027", "type": "STRUCTURAL_CLICHE", "pattern": "\\bnon\\s+seulement\\b[\\s\\S]{0,100}?\\bmais\\s+aussi\\b", "fixInstruction": "State both claims directly without the stock paired construction." } ] }, "de": { "language": "de", "stopwords": [ "der", "die", "und", "in", "den", "von", "zu", "das", "mit", "sich", "des", "auf", "für", "ist", "im", "dem", "nicht", "ein", "eine", "als" ], "patterns": [ { "id": "DE001", "type": "SLOP_PHRASE", "pattern": "in\\s+der\\s+heutigen\\s+schnelllebigen\\s+Welt", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE002", "type": "SLOP_PHRASE", "pattern": "es\\s+ist\\s+wichtig\\s+zu\\s+beachten", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE003", "type": "SLOP_PHRASE", "pattern": "zusammenfassend\\s+lässt\\s+sich\\s+sagen", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE004", "type": "SLOP_PHRASE", "pattern": "darüber\\s+hinaus", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE005", "type": "SLOP_PHRASE", "pattern": "nicht\\s+zuletzt", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE006", "type": "SLOP_PHRASE", "pattern": "spielt\\s+eine\\s+entscheidende\\s+Rolle", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE007", "type": "SLOP_PHRASE", "pattern": "ein\\s+Beweis\\s+dafür", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE008", "type": "SLOP_PHRASE", "pattern": "in\\s+einer\\s+sich\\s+ständig\\s+verändernden", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE009", "type": "SLOP_PHRASE", "pattern": "nicht\\s+nur", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE010", "type": "SLOP_PHRASE", "pattern": "sondern\\s+auch", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE011", "type": "SLOP_PHRASE", "pattern": "im\\s+digitalen\\s+Zeitalter", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE012", "type": "SLOP_PHRASE", "pattern": "es\\s+lässt\\s+sich\\s+nicht\\s+leugnen", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE013", "type": "SLOP_PHRASE", "pattern": "es\\s+ist\\s+erwähnenswert", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE014", "type": "SLOP_PHRASE", "pattern": "in\\s+der\\s+heutigen\\s+Zeit", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE015", "type": "SLOP_PHRASE", "pattern": "eine\\s+Vielzahl\\s+von", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE016", "type": "SLOP_PHRASE", "pattern": "in\\s+der\\s+modernen\\s+Welt", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE017", "type": "SLOP_PHRASE", "pattern": "den\\s+Weg\\s+ebnen", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE018", "type": "SLOP_PHRASE", "pattern": "die\\s+Spielregeln\\s+ändern", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE019", "type": "SLOP_PHRASE", "pattern": "nahtlos", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE020", "type": "SLOP_PHRASE", "pattern": "ganzheitlicher\\s+Ansatz", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE021", "type": "SLOP_PHRASE", "pattern": "wertvolle\\s+Einblicke", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE022", "type": "SLOP_PHRASE", "pattern": "in\\s+der\\s+sich\\s+entwickelnden\\s+Landschaft", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE023", "type": "SLOP_PHRASE", "pattern": "am\\s+Ende\\s+des\\s+Tages", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE024", "type": "SLOP_PHRASE", "pattern": "ohne\\s+Zweifel", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE025", "type": "SLOP_PHRASE", "pattern": "von\\s+entscheidender\\s+Bedeutung", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "DE026", "type": "DEFINITIONAL_OPENING", "pattern": "^(?:Im Kontext von|Im Bereich von|In der Welt von) [\\w\\s]+,", "scope": "paragraph-start", "fixInstruction": "Start with the specific subject or event instead of a generic framing clause." }, { "id": "DE027", "type": "STRUCTURAL_CLICHE", "pattern": "\\bnicht\\s+nur\\b[\\s\\S]{0,100}?\\bsondern\\s+auch\\b", "fixInstruction": "State both claims directly without the stock paired construction." } ] }, "pt": { "language": "pt", "stopwords": [ "de", "a", "o", "que", "e", "do", "da", "em", "um", "para", "é", "com", "não", "uma", "os", "no", "se", "na", "por", "mais" ], "patterns": [ { "id": "PT001", "type": "SLOP_PHRASE", "pattern": "no\\s+mundo\\s+acelerado\\s+de\\s+hoje", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT002", "type": "SLOP_PHRASE", "pattern": "vale\\s+ressaltar\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT003", "type": "SLOP_PHRASE", "pattern": "é\\s+importante\\s+notar\\s+que", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT004", "type": "SLOP_PHRASE", "pattern": "não\\s+há\\s+como\\s+negar", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT005", "type": "SLOP_PHRASE", "pattern": "em\\s+conclusão", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT006", "type": "SLOP_PHRASE", "pattern": "em\\s+resumo", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT007", "type": "SLOP_PHRASE", "pattern": "além\\s+disso", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT008", "type": "SLOP_PHRASE", "pattern": "desempenha\\s+um\\s+papel\\s+crucial", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT009", "type": "SLOP_PHRASE", "pattern": "uma\\s+tapeçaria\\s+de", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT010", "type": "SLOP_PHRASE", "pattern": "mergulhar\\s+fundo", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT011", "type": "SLOP_PHRASE", "pattern": "não\\s+apenas", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT012", "type": "SLOP_PHRASE", "pattern": "mas\\s+também", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT013", "type": "SLOP_PHRASE", "pattern": "na\\s+era\\s+digital", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT014", "type": "SLOP_PHRASE", "pattern": "é\\s+fundamental\\s+lembrar", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT015", "type": "SLOP_PHRASE", "pattern": "sem\\s+dúvida", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT016", "type": "SLOP_PHRASE", "pattern": "no\\s+cenário\\s+atual", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT017", "type": "SLOP_PHRASE", "pattern": "ao\\s+longo\\s+do\\s+tempo", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT018", "type": "SLOP_PHRASE", "pattern": "em\\s+última\\s+análise", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT019", "type": "SLOP_PHRASE", "pattern": "abrir\\s+caminho\\s+para", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT020", "type": "SLOP_PHRASE", "pattern": "mudar\\s+o\\s+jogo", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT021", "type": "SLOP_PHRASE", "pattern": "em\\s+um\\s+mundo\\s+em\\s+constante\\s+evolução", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT022", "type": "SLOP_PHRASE", "pattern": "uma\\s+abordagem\\s+holística", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT023", "type": "SLOP_PHRASE", "pattern": "insights\\s+valiosos", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT024", "type": "SLOP_PHRASE", "pattern": "de\\s+forma\\s+contínua", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT025", "type": "SLOP_PHRASE", "pattern": "vale\\s+a\\s+pena\\s+mencionar", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "PT026", "type": "DEFINITIONAL_OPENING", "pattern": "^(?:No contexto de|No âmbito de|No mundo de) [\\w\\s]+,", "scope": "paragraph-start", "fixInstruction": "Start with the specific subject or event instead of a generic framing clause." }, { "id": "PT027", "type": "STRUCTURAL_CLICHE", "pattern": "\\bnão\\s+apenas\\b[\\s\\S]{0,100}?\\bmas\\s+também\\b", "fixInstruction": "State both claims directly without the stock paired construction." } ] }, "zh": { "language": "zh", "stopwords": [ "的", "了", "和", "是", "在", "我", "有", "而", "及", "与", "着", "或", "一个", "没有", "我们", "你们", "他们", "这个", "那个", "因此" ], "patterns": [ { "id": "ZH001", "type": "SLOP_PHRASE", "pattern": "在当今快节奏的世界中", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH002", "type": "SLOP_PHRASE", "pattern": "在数字化时代", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH003", "type": "SLOP_PHRASE", "pattern": "值得注意的是", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH004", "type": "SLOP_PHRASE", "pattern": "不可否认的是", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH005", "type": "SLOP_PHRASE", "pattern": "总而言之", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH006", "type": "SLOP_PHRASE", "pattern": "综上所述", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH007", "type": "SLOP_PHRASE", "pattern": "此外", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH008", "type": "SLOP_PHRASE", "pattern": "更重要的是", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH009", "type": "SLOP_PHRASE", "pattern": "扮演着至关重要的角色", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH010", "type": "SLOP_PHRASE", "pattern": "不仅", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH011", "type": "SLOP_PHRASE", "pattern": "而且", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH012", "type": "SLOP_PHRASE", "pattern": "深入探讨", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH013", "type": "SLOP_PHRASE", "pattern": "这不仅关乎", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH014", "type": "SLOP_PHRASE", "pattern": "见证了", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH015", "type": "SLOP_PHRASE", "pattern": "双刃剑", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH016", "type": "SLOP_PHRASE", "pattern": "在当前环境下", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH017", "type": "SLOP_PHRASE", "pattern": "毋庸置疑", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH018", "type": "SLOP_PHRASE", "pattern": "需要指出的是", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH019", "type": "SLOP_PHRASE", "pattern": "随着时代的发展", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH020", "type": "SLOP_PHRASE", "pattern": "从本质上讲", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH021", "type": "SLOP_PHRASE", "pattern": "在不断变化的格局中", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH022", "type": "SLOP_PHRASE", "pattern": "开启了新的篇章", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH023", "type": "SLOP_PHRASE", "pattern": "改变游戏规则", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH024", "type": "SLOP_PHRASE", "pattern": "无缝衔接", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH025", "type": "SLOP_PHRASE", "pattern": "全方位的方法", "fixInstruction": "Replace this stock phrase with the concrete fact, actor, or action." }, { "id": "ZH026", "type": "DEFINITIONAL_OPENING", "pattern": "^(?:在.*?的背景下|在.*?领域中|在.*?世界里),", "scope": "paragraph-start", "fixInstruction": "Start with the specific subject or event instead of a generic framing clause." }, { "id": "ZH027", "type": "STRUCTURAL_CLICHE", "pattern": "不仅[\\s\\S]{0,100}?而且", "fixInstruction": "State both claims directly without the stock paired construction." } ] } } ``` ### Default profile (`profiles/default-human.json`) ```json { "name": "default-human", "version": 1, "thresholds": { "minimumWords": 20, "minimumSentences": 3, "burstinessCVLong": 0.45, "burstinessCVShort": 0.4, "adjacentDelta": 4, "shortSentenceRatio": 0.15, "longSentenceRatio": 0.1, "mattr": { "id": 0.72, "en": 0.74 }, "compressionRatio": 0.42, "compressionMinimumWords": 150, "passScore": 80 }, "targets": { "meanSentenceLength": 16, "burstinessCV": 0.55, "adjacentDelta": 8, "mattr": 0.78, "averageParagraphSentenceCount": 2.5, "punctuationRates": { "comma": 0.035, "semicolon": 0.002, "colon": 0.004, "question": 0.004, "exclamation": 0.002, "parentheses": 0.003, "dash": 0.002 } } } ```