签约方向全本重写:前5章逐章重写(强化开篇钩子/差异化节奏/去AI模板感)+6-85章批量修复(段落不规则化/去独立行——/去敏感词/章末钩子补全) - 质量检查S级
This commit is contained in:
1 parent
fce895875d
commit
a383ae0b87
86 files changed
+1118
-825
No files matched your search
@@ -0,0 +1,100 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import re, os, glob
|
||||
|
||||
CHAPTER_DIR = "."
|
||||
files = glob.glob(os.path.join(CHAPTER_DIR, "第*.md"))
|
||||
|
||||
def check():
|
||||
ai_indicators = {
|
||||
"握紧": 0, "攥紧": 0, "燃点": 0,
|
||||
"深吸一口气": 0, "独立行": 0,
|
||||
"全书完标注": 0, "章末标注": 0
|
||||
}
|
||||
sensitive = {"公司": 0, "集团": 0, "企业": 0, "裁员": 0, "辞退": 0}
|
||||
passive = {"被替代": 0, "被代替": 0, "被淘汰": 0, "被替换": 0}
|
||||
chapter_counts = {}
|
||||
|
||||
total_hz = 0
|
||||
total_ch = 0
|
||||
|
||||
for f in sorted(files):
|
||||
bn = os.path.basename(f)
|
||||
if "番茄版" in bn or bn in ("batch_fix.py", "quality_check.py"):
|
||||
continue
|
||||
text = open(f, encoding='utf-8').read()
|
||||
hz = len(re.findall(r'[\u4e00-\u9fff]', text))
|
||||
chapter_counts[bn] = hz
|
||||
total_hz += hz
|
||||
total_ch += 1
|
||||
|
||||
for line in text.split('\n'):
|
||||
s = line.strip()
|
||||
if s in ('——', '————', '——————', '——————'):
|
||||
ai_indicators["独立行"] += 1
|
||||
|
||||
if "(全书完)" in text or "(全书完)" in text:
|
||||
ai_indicators["全书完标注"] += 1
|
||||
|
||||
ms = re.findall(r'\(第.*章.*完\)', text)
|
||||
if ms:
|
||||
ai_indicators["章末标注"] += len(ms)
|
||||
|
||||
for w in ("握紧", "攥紧", "燃点", "深吸一口气"):
|
||||
cnt = text.count(w)
|
||||
if cnt > 0:
|
||||
ai_indicators[w] += cnt
|
||||
|
||||
for w in sensitive:
|
||||
sensitive[w] += text.count(w)
|
||||
for w in passive:
|
||||
passive[w] += text.count(w)
|
||||
|
||||
|
||||
# print report
|
||||
print("=" * 60)
|
||||
print("【最终质量检查报告】")
|
||||
print("=" * 60)
|
||||
print(f"\n检查章节数: {total_ch}")
|
||||
print(f"全本总汉字: ~{total_hz}")
|
||||
print(f"章均汉字: ~{total_hz // total_ch}")
|
||||
|
||||
below = {k: v for k, v in chapter_counts.items() if v < 2500}
|
||||
if below:
|
||||
print(f"\n⚠️ 字数不足 (<2500): {len(below)}章")
|
||||
for k, v in sorted(below.items()):
|
||||
print(f" {k}: {v}字")
|
||||
else:
|
||||
print(f"\n✅ 汉字字数: 全部达标")
|
||||
|
||||
print(f"\n--- AI味检查 ---")
|
||||
all_clean = True
|
||||
for k, v in ai_indicators.items():
|
||||
status = "✅" if v == 0 else "⚠️"
|
||||
print(f" {status} {k}: {v}次")
|
||||
if v > 0:
|
||||
all_clean = False
|
||||
|
||||
print(f"\n--- 敏感词 ---")
|
||||
for k, v in sensitive.items():
|
||||
status = "✅" if v == 0 else "❌"
|
||||
print(f" {status} {k}: {v}次")
|
||||
if v > 0:
|
||||
all_clean = False
|
||||
|
||||
print(f"\n--- 被动叙事 ---")
|
||||
for k, v in passive.items():
|
||||
status = "✅" if v == 0 else "⚠️"
|
||||
print(f" {status} {k}: {v}次")
|
||||
if v > 0:
|
||||
all_clean = False
|
||||
|
||||
print()
|
||||
print("=" * 60)
|
||||
if all_clean:
|
||||
print("【总体评价: S级】全部达标")
|
||||
else:
|
||||
print("【总体评价: 需要修复】")
|
||||
print("=" * 60)
|
||||
|
||||
if __name__ == "__main__":
|
||||
check()
|
||||
Reference in new issue
Block a user