import re import jieba import random from typing import List class HeavyHumanizer: """重度人类化改写器 - 保持逻辑,可读性高,适合绕过 AI 检测""" def __init__(self): jieba.initialize() # 人类化开头/转折/插话 self.openings = ['说到', '提到', '关于', '其实', '要说', '你知道吗', '顺便说'] self.transitions = ['但是', '不过', '然而', '话说回来', '可惜的是', '偏偏'] self.fillers = ['其实', '当然', '显然', '我觉得', '说起来', '顺便说'] # 主观表达 self.subjective = ['我认为', '我觉得', '在我看来', '就我所知', '据我了解'] # 口语词汇 self.colloquial_particles = ['呢', '吧', '啊', '哦', '嘛', '哈', '呀'] # 高风险词替换 self.high_risk = { '重要': ['关键', '核心', '主要'], '显著': ['明显', '突出', '很大'], '提升': ['提高', '增强', '改善'], '确保': ['保证', '做到', '维护'], '实施': ['执行', '开展', '推行'] } # 分句标点 self.sentence_endings = {'。', '!', '?', '.', '!', '?', '…', ';', ';'} def split_sentences(self, text: str) -> List[str]: """按照句子结束标点分割文本""" sentences = [] current = '' for c in text: current += c if c in self.sentence_endings: sentences.append(current.strip()) current = '' if current.strip(): sentences.append(current.strip()) return sentences def replace_high_risk_words(self, sentence: str) -> str: """替换高风险 AI 词汇""" for k, v_list in self.high_risk.items(): if k in sentence and random.random() < 0.8: sentence = sentence.replace(k, random.choice(v_list)) return sentence def add_subjective_expressions(self, sentence: str) -> str: """随机添加主观表达或口语词""" if random.random() < 0.3: expr = random.choice(self.subjective) sentence = expr + ',' + sentence if random.random() < 0.2: particle = random.choice(self.colloquial_particles) if sentence.endswith('。'): sentence = sentence[:-1] + particle + '。' if random.random() < 0.15: filler = random.choice(self.fillers) sentence = filler + ',' + sentence return sentence def vary_sentence_length(self, sentences: List[str]) -> List[str]: """打乱句子顺序或拆分长句,增加突发性""" varied = [] i = 0 while i < len(sentences): s = sentences[i] # 适度拆分长句 if len(s) > 50 and random.random() < 0.5: mid = len(s) // 2 # 找最近的逗号 comma_pos = max(s.rfind(',', 0, mid), s.rfind(',', 0, mid)) if comma_pos > 5: first = s[:comma_pos + 1].strip() second = s[comma_pos + 1:].strip() varied.extend([first, second]) i += 1 continue varied.append(s) i += 1 # 打乱顺序但保持逻辑块 if random.random() < 0.3: random.shuffle(varied) return varied def create_paragraphs(self, sentences: List[str]) -> List[str]: """根据句长和随机概率生成段落""" paragraphs = [] current = [] current_len = 0 for s in sentences: current.append(s) current_len += len(s) if current_len > 80 and (random.random() < 0.4 or current_len > 150): paragraphs.append(''.join(current)) current = [] current_len = 0 if current: paragraphs.append(''.join(current)) return paragraphs def humanize_text(self, text: str) -> str: """核心人类化改写函数""" # 清理文本 text = re.sub(r'\s+', '', text) sentences = self.split_sentences(text) # 高风险词替换 sentences = [self.replace_high_risk_words(s) for s in sentences] # 添加主观表达、口语词、插话 sentences = [self.add_subjective_expressions(s) for s in sentences] # 增加长短句变化和突发性 sentences = self.vary_sentence_length(sentences) # 创建段落 paragraphs = self.create_paragraphs(sentences) # 格式化段落 formatted = '\n\n'.join(['  ' + p for p in paragraphs]) return formatted # ================== 使用示例 ================== if __name__ == "__main__": text = """   最近,晓蕾又上热搜了!   换句话说,现在卖东西,完全是私营业态。咋回事呢?但特意声明:她早就离开了上海电视台的编制,也不拿电视台的工资欸。原来,她和老公刘剑一起开了直播带货的副业。   这事儿一下子引爆了大家的八卦魂。毕竟,明星主持扎堆直播间,也不算新鲜事你说呢。   但还是挺多人纳闷:这些当年的 "话筒头牌",是不是集体选择摆烂了?   其实,晓蕾和刘剑干…俩人意思很明确:“我们不是来拉低职业口碑的”。而且还耐心解释了自己转行的理由,曾经的大佬,变成了烟火气。   说到晓蕾,不了解点她背景都不好意思讨论人家。当年上视新闻部的 "当家花旦",光学历和气质,足够秒杀隔壁主持圈的八条街。而刘剑,似乎早年可是 "台柱子",播音腔精致到令人耳膜怀孕嗯。照理来说,这样一对,在编制铁饭碗里躺平一辈子没毛病。   可人家偏不。   晓蕾说过这样一句话:“其实,我就是个普通人。” 真的那么普通吗?她不这么说,没人敢忘了她的标杆履历啊!她离开台里后,居然一头扎进了童语言教育这个赛道,一干就是十年,让机构做到了业内小圈子的爆款水准。   而这次直播,打的商品也不混乱,主打性价比和实用属性,晓蕾每件商品还得亲测过。如果你觉得她自吹自擂,建议去看看她直播间的粉丝评论。大家地意思是:晓蕾推品 = 放心买。   刘剑这枚 “前一哥”,更狠!   说晓蕾牛,看起来别忘了,刘剑十年前也上演了一场 “豪赌”。那个年代,辞去电视台稳定工作,和 “打水漂” 差不多。   可是刘剑敢把梭全下,为啥?因为他看中了播音考生和辅导课程的市场,那时还没有多少人扎堆干这块,他觉得这是个机会。   果然,就这么辞了职,工作的腰板从跟组织吃工资,摇身变成了名副其实的事业单位 —— 自己家老板。虽然后来也是磕磕绊绊,但终究从试验田里掘出了一片肥沃地。主持人的 “下海”,是换方向走。   有人觉得,曾经的新闻人、主持人 “跑去带货”,肯定是混不下去了。你要放在十年前,这种联想不稀奇,可现在不一样了。大环境变了,看起来传统媒体是真的在互联网时代被打败得找不到调。   原来电视频道的观众,现在早转移到手机端,看知乎、刷短视频,甚至晚上蹲个带货直播会。就像我说的,我认为,你说新闻节目的高冷主播,现在换脸做带货主持,是不是 “落魄”?未必。   其实,晓蕾夫妻这一波,实际上是转型很成功的范例。不管带啥网红货,可能他们俩把品质第一的逻辑摆明白了啊。这样的主播,不止卖产品,更卖信誉,靠着时间积攒了观众的信任嗯。也许,直播间哪门子 LOW?明明是主战场。   网友说得有趣:“谁嫌直播带货 LOW,谁就输定了。” 道理没跑儿,似乎移动互联网成了咱生活重心,生意也跟着迁移啊。   这是明显趋势,看不懂的还真不想赚钱了。   而且,似乎做直播一点不轻松。站几个小时口播、随时照顾弹幕情绪,这比坐着念提词器辛苦多了。其实,像晓蕾和刘剑这样的 “摸鱼资历”,能转过身来赚饭钱,这不是 “混”,是 “拼” 啊。   别说传统意义的职业崇拜消失殆尽,你觉得稳如狗的岗位,说散架就散你说呢。老一辈金饭碗情结,对于下一代新创别说香,而是种被淘汰跑赢速度内心创新积极点。   我不是电视台员工了,早就离职 10 年了。 """ humanizer = HeavyHumanizer() result = humanizer.humanize_text(text) print(result)