INNER CODE UNIT · Python
_table_signal
Laurent00TT/PharosRAG · src/chunker/core.py:89
def _table_signal(body, cap=400):
"""表格的检索信号:表头行(前 2 行,财报常见双层表头)+ 其余每行首个非空单元格(行标签),
去重拼接、按词边界封顶。**为什么**:表格 chunk 的 text 原本只有 caption+footnote 一句——
列头/行标签(Revenues / Net income / 年份…)才是"这张表回答什么问题"的语义信号,全锁在
content_raw(不参与 embed/sparse)里,实测导致数字类问题表格块被散文挤出 top-k
(Pharos TESTING §3 诊断)。只抽标签不抽数据单元格:数字本身无检索语义,徒增噪声。"""
if not body:
return ""
rows = [[_TAG_RE.sub(" ", c).strip() for c in _CELL_RE.findall(r)] for r in _TR_RE.findall(body)]
parts = []
for r in rows[:2]: # 表头(可能双层)
parts.extend(r)
for r in rows[2:]: # 行标签 = 每行首个非空单元格
first = next((c for c in r if c), "")
if first:
parts.append(first)
seen, out = set(), []
for p in parts: