Collapse variants that are merely shortened forms of one another: the stem match counted Gao Van and Gao Vany as two renderings where the text has one
This commit is contained in:
parent
2a63c3775c
commit
9181a3aa8f
1 changed files with 19 additions and 2 deletions
|
|
@ -122,19 +122,36 @@ def measure(arm):
|
|||
return per_term, fired, bk
|
||||
|
||||
|
||||
def collapse(variants):
|
||||
"""Схлопнуть варианты, где один — лишь укороченная форма другого.
|
||||
|
||||
⚠ ЗАМЕРЕННАЯ ЛОЖНАЯ ТРЕВОГА, а не предосторожность. Сопоставление идёт по НАЧАЛУ слова
|
||||
(падеж меняет хвост), и потому основа короткого варианта находится ВНУТРИ длинного:
|
||||
· «Гао Ван» (основа «Гао В») находится в «Гао Вань» — в тексте 82 вхождения ТОЛЬКО
|
||||
«Гао Вань/Ваня/Ванем», «Гао Ван» отдельно не встречается ни разу;
|
||||
· «женщина-гу蛊师» (основа «женщина-гу») находится в «женщина-гу-мастер».
|
||||
Обе пары прибор объявлял дрейфом: 2 ложные тревоги из 12 (17%) на руке `p9-low`.
|
||||
"""
|
||||
out = []
|
||||
for v in sorted(variants, key=len, reverse=True):
|
||||
if not any(longer.lower().startswith(v.lower()[: max(4, len(v) - 2)]) for longer in out):
|
||||
out.append(v)
|
||||
return set(out)
|
||||
|
||||
|
||||
def stats(per_term, fired):
|
||||
"""Две величины: разных передач на термин и сколько терминов меняют форму МЕЖДУ главами."""
|
||||
multi = 0 # термин показал >1 передачи за отрезок
|
||||
switched = 0 # доминирующая передача сменилась от главы к главе
|
||||
measured = 0
|
||||
for term, bych in per_term.items():
|
||||
allv = set().union(*bych.values()) if bych else set()
|
||||
allv = collapse(set().union(*bych.values())) if bych else set()
|
||||
if not allv:
|
||||
continue
|
||||
measured += 1
|
||||
if len(allv) > 1:
|
||||
multi += 1
|
||||
doms = [sorted(v)[0] for ch, v in sorted(bych.items()) if v]
|
||||
doms = [sorted(collapse(v))[0] for ch, v in sorted(bych.items()) if v]
|
||||
if len(set(doms)) > 1:
|
||||
switched += 1
|
||||
return {"terms_fired": len([t for t in fired if fired[t]]), "measured": measured,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue