说法核对不核表格正文的格(原来只跳过表头):一格是一个值不是一句话,写作者表格里状态列的「异常」、说明列的「主要来自线上」「持续增长」每一格都单独报没挂分析结论;裁判的预筛 judge.claim_priority 本来就不送表格的格。测试:表格九格都不报,表格外的列表照核,组装和复核一样

This commit is contained in:
ThearchyHelios
2026-10-21 15:38:54 +08:00
parent 7e2ee912b3
commit 2e57c401e6
2 changed files with 18 additions and 4 deletions
+5 -4
View File
@@ -20,7 +20,8 @@
输入([[i:]])作依据,或者写成推测(可能、或许、推测、待核实、不排除、疑似)。分句里已有来源一类判断词的,因果词
并进那一处核。原因说的是数据本身(「由于数据只到 10 月 16 日」「样本少」)的不算
6. **不扫的地方**:知识库原话([[q:]] 片段)、系统渲染的判定语([[a:]] 片段)、别的引用渲染出来的字、标题、代码块、
表头;分析范围是文档的结构化字段(analysis_scope),本来就不在正文里
表格(表头和正文的格都不扫:一格是一个值不是一句话,状态列的「异常」、说明列的「主要来自线上」不是判断;裁判的预筛
judge.claim_priority 也不送表格的格);分析范围是文档的结构化字段(analysis_scope),本来就不在正文里
违规三种(CODES):analysis_claim_uncited(有判断词,依据里没有对应种类的分析结论)、analysis_claim_mismatch(挂了,判定、
点名的段、方向对不上,含挂了算不了的结论)、causal_unsupported(因果词没有依据、也不是推测)。每条带:代码、判断词
@@ -803,13 +804,13 @@ def _sentence(unit: dict[str, Any], aliases: Iterable[str], results: Mapping[str
def check_doc(doc: dict[str, Any], catalog: Mapping[str, Any], *, cited: Mapping[int, list[str]] | None = None,
version: int | None = None, load: Any = None) -> list[dict[str, Any]]:
"""一份报告文档的说法违规。cited 是 {id(unit): 这句按重新解析的引用算的依据}(verify_doc 交进来),不给就用文档里
记的 cites;load 取回只带摘要的条目的整份结论(results_of)。标题、代码块、表头不核。"""
记的 cites;load 取回只带摘要的条目的整份结论(results_of)。标题、代码块、表格(表头和正文的格)不核。"""
results = results_of(catalog, load)
available = _available(results)
out: list[dict[str, Any]] = []
for block, unit in iter_units(doc):
if block.get("type") in ("heading", "code") or unit.get("kind") in ("heading", "code") \
or (unit.get("loc") or {}).get("row") == -1:
if block.get("type") in ("heading", "code", "table") or unit.get("kind") in ("heading", "code") \
or unit.get("loc") is not None:
continue
aliases = cited.get(id(unit), []) if cited is not None else unit.get("cites") or []
sentence = _sentence(unit, aliases, results)
+13
View File
@@ -413,6 +413,19 @@ def test_system_rendered_phrases_quotes_headings_and_code_are_not_scanned():
assert codes(ac.check_doc(doc, catalog())) == [ac.UNCITED]
def test_table_cells_written_by_the_writer_are_not_checked():
"""表格的格不核(表头、正文都不核):一格是一个值不是一句话,状态列的「异常」、说明列的「主要来自线上」不是判断
(judge.claim_priority 也不送表格的格)。表格外的段落、列表照核。"""
raw = ("本周销售额 [[m:gmv]]。[[see:m:gmv]]\n\n| 门店 | 状态 | 说明 |\n|---|---|---|\n| 甲店 | 异常 | 主要来自线上 |\n"
"| 乙店 | 正常 | 持续增长 |\n\n```\n异常订单激增\n```\n\n## 主要来自华东的下降\n\n- 华东拖累明显\n")
doc = compose_doc(raw, catalog(), analysis_claims="check")
tables = {u["id"] for b in doc["blocks"] if b["type"] == "table" for u in b["units"]}
assert len(tables) == 9, "表格切成了一格一格"
[v] = found(doc)
assert v["code"] == ac.UNCITED and v["text"] == "拖累" and v["unit"] not in tables
assert [v["text"] for v in found(verify_doc(doc, catalog()))] == ["拖累"]
def test_rendered_values_name_segments_but_are_not_judgement_words():
# [[v:…]] 渲染出来的「华东」能点名,渲染出来的「异常」不是写作者下的判断
doc = {"markdown": "", "blocks": [{"type": "paragraph", "units": [{"id": "u0", "kind": "claim", "cites": ["A1"],