Delete remove_chong.py
This commit is contained in:
@@ -1,104 +0,0 @@
|
|||||||
import difflib
|
|
||||||
import random
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def ji_suan_xiang_si_du(wen_ben_yi: str, wen_ben_er: str) -> float:
|
|
||||||
"""
|
|
||||||
计算两个文本字符串的相似度。
|
|
||||||
|
|
||||||
参数:
|
|
||||||
wen_ben_yi (str): 第一个文本字符串。
|
|
||||||
wen_ben_er (str): 第二个文本字符串。
|
|
||||||
|
|
||||||
返回:
|
|
||||||
float: 两个文本的相似度比率 (0 到 1 之间)。
|
|
||||||
"""
|
|
||||||
xu_lie_pi_pei_qi = difflib.SequenceMatcher(None, wen_ben_yi, wen_ben_er)
|
|
||||||
# 获取相似度比率
|
|
||||||
xiang_si_bi_lv = xu_lie_pi_pei_qi.ratio()
|
|
||||||
return xiang_si_bi_lv
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def ji_suan_ti_huan_gai_lv(xiang_si_du: float) -> float:
|
|
||||||
"""
|
|
||||||
根据相似度计算替换的概率。
|
|
||||||
规则:
|
|
||||||
- 相似度 <= 0.4: 概率 = 0
|
|
||||||
- 相似度 >= 0.9: 概率 = 1
|
|
||||||
- 相似度 == 0.6: 概率 = 0.7
|
|
||||||
- 0.4 < 相似度 <= 0.6: 线性插值 (0.4, 0) 到 (0.6, 0.7)
|
|
||||||
- 0.6 < 相似度 < 0.9: 线性插值 (0.6, 0.7) 到 (0.9, 1.0)
|
|
||||||
"""
|
|
||||||
if xiang_si_du <= 0.4:
|
|
||||||
return 0.0
|
|
||||||
elif xiang_si_du >= 0.9:
|
|
||||||
return 1.0
|
|
||||||
elif 0.4 < xiang_si_du <= 0.6:
|
|
||||||
# p = 3.5 * s - 1.4 (线性方程 y - 0 = (0.7-0)/(0.6-0.4) * (x - 0.4))
|
|
||||||
gai_lv = 3.5 * xiang_si_du - 1.4
|
|
||||||
return max(0.0, gai_lv) # 确保概率不小于0
|
|
||||||
elif 0.6 < xiang_si_du < 0.9:
|
|
||||||
# p = s + 0.1 (线性方程 y - 0.7 = (1-0.7)/(0.9-0.6) * (x - 0.6))
|
|
||||||
gai_lv = xiang_si_du + 0.1
|
|
||||||
return min(1.0, max(0.0, gai_lv)) # 确保概率在 0 和 1 之间
|
|
||||||
|
|
||||||
|
|
||||||
# 获取用户输入
|
|
||||||
shu_ru_yi = "豆豆刚刚回复了我的问候 现在可以等待对方的回应 不需要再主动发言 目前情绪满足 不需要使用工具"
|
|
||||||
|
|
||||||
shu_ru_er = "豆豆刚刚回复了我的问候 现在可以等待对方的回应 不需要再主动发言 目前情绪满足 不需要使用工具 群主突然提到复活的事情 感觉有点莫名其妙 但情绪上还是满足的 暂时不需要回复"
|
|
||||||
|
|
||||||
# 计算相似度
|
|
||||||
xiang_si_du = ji_suan_xiang_si_du(shu_ru_yi, shu_ru_er)
|
|
||||||
|
|
||||||
# 计算替换概率
|
|
||||||
ti_huan_gai_lv = ji_suan_ti_huan_gai_lv(xiang_si_du)
|
|
||||||
print(f"文本相似度: {xiang_si_du:.2f}, 执行替换操作的概率: {ti_huan_gai_lv:.2f}")
|
|
||||||
|
|
||||||
# 根据概率决定是否执行替换
|
|
||||||
if random.random() < ti_huan_gai_lv:
|
|
||||||
print(f"执行替换操作 (基于概率 {ti_huan_gai_lv:.2f})...")
|
|
||||||
pi_pei_qi = difflib.SequenceMatcher(None, shu_ru_yi, shu_ru_er)
|
|
||||||
qu_chong_hou_de_er = []
|
|
||||||
last_match_end_in_b = 0
|
|
||||||
# 获取匹配块 (i, j, n) 其中 a[i:i+n] == b[j:j+n]
|
|
||||||
# 注意:get_matching_blocks 最后会有一个 (len(a), len(b), 0) 的虚拟块
|
|
||||||
for _i, j, n in pi_pei_qi.get_matching_blocks():
|
|
||||||
# 添加上一个匹配块结束到当前匹配块开始之间的非匹配部分 (来自文本二)
|
|
||||||
if last_match_end_in_b < j:
|
|
||||||
qu_chong_hou_de_er.append(shu_ru_er[last_match_end_in_b:j])
|
|
||||||
# 更新下一个非匹配部分的起始位置
|
|
||||||
last_match_end_in_b = j + n
|
|
||||||
|
|
||||||
jie_guo = "".join(qu_chong_hou_de_er).strip() # 去除首尾空白
|
|
||||||
jie_guo = "".join(qu_chong_hou_de_er).strip() # 去除首尾空白
|
|
||||||
|
|
||||||
if jie_guo:
|
|
||||||
# 定义词语列表
|
|
||||||
yu_qi_ci_liebiao = ["嗯", "哦", "啊", "唉", "哈", "唔"]
|
|
||||||
zhuan_zhe_liebiao = ["但是", "不过", "然而", "可是", "只是"]
|
|
||||||
cheng_jie_liebiao = ["然后", "接着", "此外", "而且", "另外"]
|
|
||||||
zhuan_jie_ci_liebiao = zhuan_zhe_liebiao + cheng_jie_liebiao
|
|
||||||
|
|
||||||
# 根据概率决定是否添加词语
|
|
||||||
qian_zhui_str = ""
|
|
||||||
if random.random() < 0.3: # 30% 概率添加语气词
|
|
||||||
if random.random() < 0.3: # 30% 概率添加语气词
|
|
||||||
qian_zhui_str += random.choice(yu_qi_ci_liebiao)
|
|
||||||
if random.random() < 0.7: # 70% 概率添加转折/承接词
|
|
||||||
if random.random() < 0.7: # 70% 概率添加转折/承接词
|
|
||||||
qian_zhui_str += random.choice(zhuan_jie_ci_liebiao)
|
|
||||||
|
|
||||||
# 组合最终结果
|
|
||||||
if qian_zhui_str:
|
|
||||||
zui_zhong_jie_guo = f"{qian_zhui_str},{jie_guo}"
|
|
||||||
print(f"移除重复部分并添加引导词后的文本二: {zui_zhong_jie_guo}")
|
|
||||||
else:
|
|
||||||
# 如果没有添加任何前缀词,直接输出去重结果
|
|
||||||
print(f"移除重复部分后的文本二: {jie_guo}")
|
|
||||||
else:
|
|
||||||
print("移除重复部分后文本二为空。")
|
|
||||||
else:
|
|
||||||
print(f"未执行替换操作 (基于概率 {ti_huan_gai_lv:.2f})。原始相似度为: {xiang_si_du:.2f}")
|
|
||||||
Reference in New Issue
Block a user