From b9257a9818e0bfa1f753d8518d11daac14b14261 Mon Sep 17 00:00:00 2001 From: wyn <1074145239@qq.com> Date: Wed, 22 Jul 2026 11:53:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E8=80=83=E6=96=87=E7=8C=AE=20?= =?UTF-8?q?=E6=89=B9=E6=B3=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/ReferenceRelevanceCheckService.php | 13 ++++--- .../service/ReferenceRelevanceLlmService.php | 34 ++++++++++++++----- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/application/common/ReferenceRelevanceCheckService.php b/application/common/ReferenceRelevanceCheckService.php index b3eb1abe..137d0d79 100644 --- a/application/common/ReferenceRelevanceCheckService.php +++ b/application/common/ReferenceRelevanceCheckService.php @@ -2436,24 +2436,29 @@ class ReferenceRelevanceCheckService } } if (!empty($targets)) { - return '建议补充可直接支撑“' . implode('”“', $targets) . '”等关键表述的文献,或适当调整正文表述。'; + return '该处正文主要涉及“' . implode('”“', $targets) . '”等表述,现有文献侧重点似乎略有不同。建议替换相应编号文献以更直接支持上述表述,或酌情调整该句,使引用内容与文献证据保持一致。'; } } $reason = trim((string)$reason); if ($reason === '') { - return '该条文献对当前表述支撑较弱,建议补充更直接覆盖核心论点的参考文献。'; + return '该处参考文献与正文表述的对应关系似乎尚不够充分,文献侧重点与正文核心论点略有不同。建议替换相应编号文献以更直接支持此处表述,或酌情调整该句,使引用内容与文献证据保持一致。'; } $reason = preg_replace('/Claim覆盖[::][^。;;\n]*/u', '', $reason); $reason = preg_replace('/\b[A-E]\s*(?:[✔✘]|部分)\b/u', '', $reason); $reason = preg_replace('/[✔✘]/u', '', $reason); $reason = preg_replace('/\b0?\.\d{1,2}\b/u', '', $reason); $reason = preg_replace('/故\s*(?:联合分?)?\s*[01](?:\.\d+)?[。.]?/u', '', $reason); + $reason = preg_replace('/(?:建议|请|可|需|应|还|另|再)?\s*补充(?:一篇|一条|相关)?(?:参考文献|文献)?/u', '建议替换现有编号文献', $reason); + $reason = preg_replace('/补充文献/u', '替换文献', $reason); + $reason = preg_replace('/(?:新增|增加)\s*(?:一篇|一条)?(?:参考文献|文献)/u', '替换现有编号文献', $reason); $reason = trim((string)$reason); if ($reason === '') { - return '该条文献对当前表述支撑较弱,建议补充更直接覆盖核心论点的参考文献。'; + return '该处参考文献与正文表述的对应关系似乎尚不够充分,文献侧重点与正文核心论点略有不同。建议替换相应编号文献以更直接支持此处表述,或酌情调整该句,使引用内容与文献证据保持一致。'; } - return mb_substr('建议:' . $reason, 0, 120); + $text = mb_substr(trim($reason), 0, 160); + $text = trim($text, " \t\n\r\0\x0B;;,,。"); + return $text === '' ? '' : ($text . '。'); } /** * 按 p_article_id 清空整篇文章的引用校对明细 + 重置节级 ref_check_status。 diff --git a/application/common/service/ReferenceRelevanceLlmService.php b/application/common/service/ReferenceRelevanceLlmService.php index f186c5b4..9d3879d2 100644 --- a/application/common/service/ReferenceRelevanceLlmService.php +++ b/application/common/service/ReferenceRelevanceLlmService.php @@ -464,7 +464,7 @@ Claim 具体内容见顶层 `claims`,combined_reason **只用字母指代**( "is_relevant": 0, "relevance_score": 0.45, "reason": "系统综述,主语一致。Claim覆盖:A✔ B✔ C部分 D✘。类型部分匹配。因缺 D 且 C 仅背景,未达 0.65,故 0.45。", - "author_comment": "该文献与正文主张仅部分对应,关键论点仍缺直接证据。请改引更能支撑核心结论的文献,或明确现有引用依据。" + "author_comment": "该处主要讨论急诊护士继发性创伤应激的影响因素(如护理压力、共情与心理韧性),文献似乎未直接涉及正文所述焦虑、抑郁、情绪耗竭、职业倦怠及认知与决策能力下降等内容。建议替换相应编号文献以更直接支持上述表述,或酌情调整该句,使引用内容与文献证据保持一致。" }, { "reference_no": 2, @@ -478,8 +478,13 @@ Claim 具体内容见顶层 `claims`,combined_reason **只用字母指代**( **顶层 claims**:本引用组共用,只写一次;键为 A/B/C…(按实际拆解数量),值为各 Claim 中文具体内容。 **results 每条仅含**:reference_no、is_relevant、relevance_score、reason、author_comment。 -`author_comment` 规则:当 `relevance_score <= 0.65` 时必须生成(中文、**以期刊编辑审稿口吻**、礼貌可执行,**80–100字**,句尾需句号);当 `relevance_score > 0.65` 时必须返回空字符串 `""`。 -注意:`author_comment` 禁止出现 A/B/C/D、✔/✘、"Claim覆盖"、具体分值(如 0.65)等技术表达,需改写为作者易读的编辑批注。 +`author_comment` 规则:当 `relevance_score <= 0.65` 时必须生成(中文、**资深期刊编辑与作者沟通的委婉审稿口吻**,避免生硬判定与命令式,**100–150字**,句尾需句号);当 `relevance_score > 0.65` 时必须返回空字符串 `""`。 +写法要求(按此结构,语气委婉): +① 先客观概述该处正文主要表述/主张(点出正文关注的具体对象或论点); +② 再用**委婉措辞**指出文献与该表述的差距,用“似乎未直接涉及/似未充分覆盖/侧重点略有不同/对……着墨不多”等,不要用“并未提供/完全不符/错误”等生硬定性; +③ 最后给出**两条可选建议**:既可“替换相应编号文献以更直接支持上述表述”,也可“酌情调整/修改该句,使引用内容与文献证据保持一致”,供作者自行取舍。 +硬性要求:禁止“补充/新增/增加文献”等引导加文献的措辞(会打乱编号),一律写“替换相应编号文献/改引”;语气用“建议/似可/不妨/可考虑/或可”,不得出现“必须/应当/务必”。 +注意:`author_comment` 禁止出现 A/B/C/D、✔/✘、"Claim覆盖"、具体分值(如 0.65)、流行病学等技术术语,需改写为作者易读的委婉批注。 **禁止**在 results 各条中写 combined_relevance_score、combined_reason、cite_group_refs、claims。 PROMPT; } @@ -502,7 +507,7 @@ PROMPT; if ($abstractText !== '') { $parts[] = "【文献摘要/清洗后内容(Europe PMC·PubMed·Crossref·PDF)】\n" . $abstractText; } - $tail = '请严格按六步标准校对流程执行:①提取Claim→②提取文献证据→③Claim Mapping(✔/部分/✘)→④计算覆盖率→⑤判断支持类型→⑥输出分值与理由。先在 JSON 顶层 claims 写出各 Claim 具体内容(多事实背景句须拆出比较型/成因型/进展型/数据型独立 Claim),再对每篇文献给出单条 relevance_score(弱相关文献不得因联合抬高),最后写顶层 combined_relevance_score 与 combined_reason。results 每条只写 reference_no、is_relevant、relevance_score、reason、author_comment。author_comment 规则:score<=0.65 时输出以期刊编辑审稿口吻的中文批注(礼貌、可执行,80–100字,句尾需句号);若出现“建议补充/补充文献/补充说明”等措辞,需改写为“建议替换/改引/明确现有依据”,避免引导新增文献编号;score>0.65 时固定空字符串;author_comment 禁止出现 A/B/C/D、✔/✘、Claim覆盖、具体分值。禁止 reason_en、combined_reason_en、relevance_level、relevance_role、combined_is_relevant 等多余字段。'; + $tail = '请严格按六步标准校对流程执行:①提取Claim→②提取文献证据→③Claim Mapping(✔/部分/✘)→④计算覆盖率→⑤判断支持类型→⑥输出分值与理由。先在 JSON 顶层 claims 写出各 Claim 具体内容(多事实背景句须拆出比较型/成因型/进展型/数据型独立 Claim),再对每篇文献给出单条 relevance_score(弱相关文献不得因联合抬高),最后写顶层 combined_relevance_score 与 combined_reason。results 每条只写 reference_no、is_relevant、relevance_score、reason、author_comment。author_comment 规则:score<=0.65 时输出委婉建议性中文批注(资深编辑与作者沟通口吻,避免生硬判定与命令式;结构为①客观概述该处正文主张→②委婉指出文献差距,用“似乎未直接涉及/侧重点略有不同”等→③给出两条可选建议:替换相应编号文献 或 酌情调整该句使引用与文献一致;100–150字,句尾需句号);语气用“建议/似可/不妨/可考虑”,禁止“必须/应当/务必”;禁止“补充/新增/增加文献”,一律改为“替换相应编号文献/改引”,以保持参考文献编号不变;score>0.65 时固定空字符串;author_comment 禁止出现 A/B/C/D、✔/✘、Claim覆盖、具体分值、流行病学等技术术语。禁止 reason_en、combined_reason_en、relevance_level、relevance_role、combined_is_relevant 等多余字段。'; if ($this->hasMixedReferTypes($referTypeMap)) { $tail .= ' 注意:本组为图书与期刊混排引用,务必按上方【各编号文献类型标注】分轨判断——图书/教材走「书目推断」轨(据书名、副标题、作者、ISBN、出版社判断主题,缺摘要不得默认 0.25);期刊/原始研究走「摘要核对」轨(据摘要/清洗内容逐项核对 claim)。同组内两类分别按各自标准独立打分,切勿用同一把尺子。'; } elseif ($this->allReferType($referTypeMap, 'book')) { @@ -1616,12 +1621,12 @@ PROMPT; } } - $fallback = '该条参考文献与正文匹配度有限,关键论点仍缺直接证据。请改引更能支撑核心结论的文献,或明确现有引用依据。'; + $fallback = '该处参考文献与正文表述的对应关系似乎尚不够充分,文献侧重点与正文核心论点略有不同。建议替换相应编号文献以更直接支持此处表述,或酌情调整该句,使引用内容与文献证据保持一致。'; $reason = trim((string)$reason); if ($reason === '') { return $this->finalizeAuthorComment($fallback); } - // 去掉显式分数结论,保留给作者可读的编辑批注 + // 去掉显式分数结论,保留给作者可读的委婉批注 $reason = preg_replace('/Claim覆盖[::].*/u', '', $reason); $reason = preg_replace('/故\s*(?:联合分?)?\s*[01](?:\.\d+)?[。.]?/u', '', $reason); $reason = trim((string)$reason); @@ -1647,9 +1652,20 @@ PROMPT; $text = preg_replace('/[✔✘]/u', '', $text); $text = preg_replace('/\b0?\.\d{1,2}\b/u', '', $text); $text = preg_replace('/\b\d{1,3}%\b/u', '', $text); - $text = preg_replace('/建议\s*补充/u', '建议替换', $text); + // 「补充/新增」易引导加文献、打乱编号 → 统一改为替换/改引 + $text = preg_replace('/(?:建议|请|可|需|应|还|另|再)?\s*补充(?:一篇|一条|相关)?(?:参考文献|文献)?/u', '建议替换现有编号文献', $text); $text = preg_replace('/补充文献/u', '替换文献', $text); - $text = preg_replace('/补充说明/u', '明确依据', $text); + $text = preg_replace('/补充说明/u', '进一步明确依据', $text); + $text = preg_replace('/(?:新增|增加|另增)\s*(?:一篇|一条)?(?:参考文献|文献)/u', '替换现有编号文献', $text); + $text = preg_replace('/请\s*(?:改引|替换)/u', '建议替换', $text); + // 生硬定性 → 委婉措辞 + $text = preg_replace('/必须\s*/u', '建议', $text); + $text = preg_replace('/应当\s*/u', '建议', $text); + $text = preg_replace('/务必\s*/u', '建议', $text); + $text = preg_replace('/仍缺/u', '稍显不足', $text); + $text = preg_replace('/并未(?:提供|涉及|覆盖|体现)/u', '似乎未直接涉及', $text); + $text = preg_replace('/完全不(?:符|相关|匹配)/u', '契合度略显不足', $text); + $text = preg_replace('/无法支持/u', '对该表述支持稍显不足', $text); $text = preg_replace('/\s{2,}/u', ' ', $text); $text = trim((string)$text, " \t\n\r\0\x0B;;,,"); @@ -1658,7 +1674,7 @@ PROMPT; private function finalizeAuthorComment($text) { - $text = mb_substr(trim((string)$text), 0, 100); + $text = mb_substr(trim((string)$text), 0, 160); $text = trim($text, " \t\n\r\0\x0B;;,,。"); if ($text === '') { return '';