v1.10.1: spoorbrug medium i.p.v. sterk/whitelist — locatie-referentie is geen OV-nieuws (Stuifmail 2026-09-12)
This commit is contained in:
parent
f5dec54165
commit
717e51eb1a
3 changed files with 18 additions and 5 deletions
|
|
@ -78,6 +78,10 @@ rss_change_level = EventType.find("xyz.maubot.rss", t_class=EventType.Class.STAT
|
||||||
# is geen OV-nieuws). Zwartgelijste woorden leveren geen score op, maar
|
# is geen OV-nieuws). Zwartgelijste woorden leveren geen score op, maar
|
||||||
# blokkeren de familie niet: een écht "station"-woord ernaast scoort gewoon.
|
# blokkeren de familie niet: een écht "station"-woord ernaast scoort gewoon.
|
||||||
# Bewust geaccepteerde botsingen: krant "De Metro"/café "De Tram" (medium).
|
# Bewust geaccepteerde botsingen: krant "De Metro"/café "De Tram" (medium).
|
||||||
|
# 'spoorbrug' is MEDIUM (niet sterk/whitelist): een brug is vaak louter locatie
|
||||||
|
# ('bij de spoorbrug tussen Liempde en Boxtel', Stuifmail 2026-09-12) — één
|
||||||
|
# spoorbrug-hit in de samenvatting is geen OV-nieuws; écht spoorbrug-nieuws
|
||||||
|
# combineert met trein/spoor/verkeer en haalt de drempel alsnog (besluit 2026-09-12).
|
||||||
# Losse algemene woorden zijn zwak (moeten combineren met een andere familie):
|
# Losse algemene woorden zijn zwak (moeten combineren met een andere familie):
|
||||||
# "trein", "sprinter" (atleet), "vervoerder" (logistiek), "reiziger",
|
# "trein", "sprinter" (atleet), "vervoerder" (logistiek), "reiziger",
|
||||||
# "inchecken"/"uitchecken" (Schiphol/hotel), "station(s)" (omroepen), "bus",
|
# "inchecken"/"uitchecken" (Schiphol/hotel), "station(s)" (omroepen), "bus",
|
||||||
|
|
@ -148,7 +152,7 @@ rss_change_level = EventType.find("xyz.maubot.rss", t_class=EventType.Class.STAT
|
||||||
MATCH_FILTER_FAMILIES: list[tuple[str, int]] = [
|
MATCH_FILTER_FAMILIES: list[tuple[str, int]] = [
|
||||||
# sterk (3)
|
# sterk (3)
|
||||||
(r"\b(?:ns|arriva|qbuzz|connexxion|cxx|transdev|keolis|ret|gvb|ebs|htm|syntus|u-ov|allgo|flixbus|blauwnet|r-net|valleilijn|waterbus|eurostar|thalys|randstadrail|gvu|prorail|hermes|rrreis|qliner|ov)\b", 3), # vervoerders ('Breng' staat in de zwakke groep: botst met het werkwoord "brengen")
|
(r"\b(?:ns|arriva|qbuzz|connexxion|cxx|transdev|keolis|ret|gvb|ebs|htm|syntus|u-ov|allgo|flixbus|blauwnet|r-net|valleilijn|waterbus|eurostar|thalys|randstadrail|gvu|prorail|hermes|rrreis|qliner|ov)\b", 3), # vervoerders ('Breng' staat in de zwakke groep: botst met het werkwoord "brengen")
|
||||||
(r"\b(?:spoorweg|spoorba(?:an|nen)|spoorlijn|spoorverkeer|spoorwegovergang|spoorbrug|spoorstoring|perron|seinstoring|wisselstoring|spoorstaking)\w*\b", 3), # spoorinfra; let op de klinkerwisseling: 'ontsporing' (open lettergreep, één o) vs 'ontspoord'/'ontspoorde' (dicht, dubbel o) — vandaar beide stammen
|
(r"\b(?:spoorweg|spoorba(?:an|nen)|spoorlijn|spoorverkeer|spoorwegovergang|spoorstoring|perron|seinstoring|wisselstoring|spoorstaking)\w*\b", 3), # spoorinfra; let op de klinkerwisseling: 'ontsporing' (open lettergreep, één o) vs 'ontspoord'/'ontspoorde' (dicht, dubbel o) — vandaar beide stammen. Géén 'spoorbrug': die is medium (vaak locatie-referentie, besluit 2026-09-12)
|
||||||
(r"\b(?:treinstation|treinstations|metrostation|metrostations|busstation|busstations)\b", 2), # station-samenstellingen: onmiskenbaar OV, maar MEDIUM — één station-woord náást een ander onderwerp ('pand naast busstation', besluit 2026-09-11) is geen OV-bericht; in de samenvatting moet een tweede OV-woord bijkomen
|
(r"\b(?:treinstation|treinstations|metrostation|metrostations|busstation|busstations)\b", 2), # station-samenstellingen: onmiskenbaar OV, maar MEDIUM — één station-woord náást een ander onderwerp ('pand naast busstation', besluit 2026-09-11) is geen OV-bericht; in de samenvatting moet een tweede OV-woord bijkomen
|
||||||
(r"(?<![\w-])\bstations?\b", 1), # los 'station(s)' is ZWAK: ook tv-/radio-/regionale omroepstations ('de lokale stations'), moet combineren met een andere OV-familie
|
(r"(?<![\w-])\bstations?\b", 1), # los 'station(s)' is ZWAK: ook tv-/radio-/regionale omroepstations ('de lokale stations'), moet combineren met een andere OV-familie
|
||||||
(r"\b(?:bus|tram|metro)-?(?:halte|haltes|lijn|lijnen|verkeer|net|staking|ba(?:an|nen)|hok(?:je|jes)|chauffeur)\w*\b", 3), # voertuig-samenstelling (bushalte/buslijn/bushokje/busbanen/…); géén 'station': *station-samenstellingen zitten in de station-familie, anders telde 'busstation' dubbel mee (via 'bus' én 'station') — fix 2026-09-11
|
(r"\b(?:bus|tram|metro)-?(?:halte|haltes|lijn|lijnen|verkeer|net|staking|ba(?:an|nen)|hok(?:je|jes)|chauffeur)\w*\b", 3), # voertuig-samenstelling (bushalte/buslijn/bushokje/busbanen/…); géén 'station': *station-samenstellingen zitten in de station-familie, anders telde 'busstation' dubbel mee (via 'bus' én 'station') — fix 2026-09-11
|
||||||
|
|
@ -164,6 +168,7 @@ MATCH_FILTER_FAMILIES: list[tuple[str, int]] = [
|
||||||
(r"\b(?:ov-staking|conducteursstaking)\w*\b", 2),
|
(r"\b(?:ov-staking|conducteursstaking)\w*\b", 2),
|
||||||
(r"\bconduct(?:eur|eurs)\b", 2), # trein-/buspersoneel: onmiskenbaar OV-jargon
|
(r"\bconduct(?:eur|eurs)\b", 2), # trein-/buspersoneel: onmiskenbaar OV-jargon
|
||||||
(r"\b(?:pont|ponten)\b", 2), # waterbus/veerdienst
|
(r"\b(?:pont|ponten)\b", 2), # waterbus/veerdienst
|
||||||
|
(r"\bspoorbrug(?:gen)?\b", 2), # spoorinfra, maar MEDIUM: vaak locatie-referentie, geen OV-nieuws ('bij de spoorbrug', Stuifmail 2026-09-12); moet combineren — zelfde regel als station-samenstellingen (besluit 2026-09-11)
|
||||||
# zwak (1) — dubbelzinnig, moet combineren
|
# zwak (1) — dubbelzinnig, moet combineren
|
||||||
(r"(?<!-)\bbus(?:sen)?\b", 1), # ná een koppelteken geen OV: 'VW-bus', 'school-bus'
|
(r"(?<!-)\bbus(?:sen)?\b", 1), # ná een koppelteken geen OV: 'VW-bus', 'school-bus'
|
||||||
(r"\b(?:pendelbus|shuttlebus)\w*\b", 1), # evenement-/hotel-/parkeerpendel ('pendelbus naar de golfbaan') is geen OV; synoniemen bewust in één familie
|
(r"\b(?:pendelbus|shuttlebus)\w*\b", 1), # evenement-/hotel-/parkeerpendel ('pendelbus naar de golfbaan') is geen OV; synoniemen bewust in één familie
|
||||||
|
|
@ -231,7 +236,7 @@ MATCH_FILTER_WHITELIST: frozenset[str] = frozenset({
|
||||||
"qliner", "flixbus", "eurostar", "thalys", "gvu", "ovpay",
|
"qliner", "flixbus", "eurostar", "thalys", "gvu", "ovpay",
|
||||||
# Spoorinfra-jargon (samenvoegingen, onmiskenbaar OV)
|
# Spoorinfra-jargon (samenvoegingen, onmiskenbaar OV)
|
||||||
"spoorstoring", "spoorverkeer", "spoorwegovergang", "spoorlijn", "spoorbaan",
|
"spoorstoring", "spoorverkeer", "spoorwegovergang", "spoorlijn", "spoorbaan",
|
||||||
"spoorbrug", "spoorstaking", "perron", "wisselstoring", "seinstoring", "treinstoring", "treinverkeer",
|
"spoorstaking", "perron", "wisselstoring", "seinstoring", "treinstoring", "treinverkeer",
|
||||||
"treinstaking", "treinongeval", "treinbotsing", "treinstel",
|
"treinstaking", "treinongeval", "treinbotsing", "treinstel",
|
||||||
# Bus/tram/metro-jargon
|
# Bus/tram/metro-jargon
|
||||||
"bushalte", "bushaltes", "busbaan", "buslijn", "busnet",
|
"bushalte", "bushaltes", "busbaan", "buslijn", "busnet",
|
||||||
|
|
@ -472,7 +477,7 @@ class RSSBot(Plugin):
|
||||||
"- Sterk (3): vervoerders (NS, Arriva, ProRail, Qbuzz, ...), spoorinfra (spoorlijn, spoorwegovergang, perron, spoorstoring), "
|
"- Sterk (3): vervoerders (NS, Arriva, ProRail, Qbuzz, ...), spoorinfra (spoorlijn, spoorwegovergang, perron, spoorstoring), "
|
||||||
"samenstellingen als bushalte/buslijn/bushokje/busbaan/busverkeer, treinstoring/treinverkeer/treinstaking, "
|
"samenstellingen als bushalte/buslijn/bushokje/busbaan/busverkeer, treinstoring/treinverkeer/treinstaking, "
|
||||||
"intercity/streekvervoer/veerdienst/buurtbus/belbus, 'lijn 12'\n"
|
"intercity/streekvervoer/veerdienst/buurtbus/belbus, 'lijn 12'\n"
|
||||||
"- Medium (2): tram, metro, openbaar vervoer, lightrail, halte, pont, ov-chipkaart/ovpay, ov-staking, conducteur, "
|
"- Medium (2): tram, metro, openbaar vervoer, lightrail, halte, pont, spoorbrug, ov-chipkaart/ovpay, ov-staking, conducteur, "
|
||||||
"trein-/bus-/metrostation — één medium-hit volstaat niet, moet combineren met een andere OV-familie; "
|
"trein-/bus-/metrostation — één medium-hit volstaat niet, moet combineren met een andere OV-familie; "
|
||||||
"medium + zwak uitsluitend in de samenvatting (geen hit in de titel) telt niet\n"
|
"medium + zwak uitsluitend in de samenvatting (geen hit in de titel) telt niet\n"
|
||||||
"- Zwak (1): losse 'bus' (niet ná een koppelteken), 'pendelbus'/'shuttlebus', 'trein', 'station(s)', 'breng', 'overweg', 'overwegen', "
|
"- Zwak (1): losse 'bus' (niet ná een koppelteken), 'pendelbus'/'shuttlebus', 'trein', 'station(s)', 'breng', 'overweg', 'overwegen', "
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
id: nl.eddydevink.rss
|
id: nl.eddydevink.rss
|
||||||
version: 1.10.0
|
version: 1.10.1
|
||||||
modules:
|
modules:
|
||||||
- buzzrss
|
- buzzrss
|
||||||
main_class: RSSBot
|
main_class: RSSBot
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ UNAMBIGUOUS = [
|
||||||
"spoorstoring", "spoorlijn", "perron", "bushalte", "bushokje",
|
"spoorstoring", "spoorlijn", "perron", "bushalte", "bushokje",
|
||||||
"conducteur", "ovpay", "ns", "prorail",
|
"conducteur", "ovpay", "ns", "prorail",
|
||||||
"treinstoring", "halte", "openbaar vervoer", "intercity", "buurtbus",
|
"treinstoring", "halte", "openbaar vervoer", "intercity", "buurtbus",
|
||||||
"veerdienst", "lijn 12", "ov-chipkaart",
|
"veerdienst", "lijn 12", "ov-chipkaart", "spoorbrug",
|
||||||
]
|
]
|
||||||
print(f"== invariant 2: {len(UNAMBIGUOUS)} onmiskenbare OV-termen -> sterk/medium of whitelist ==")
|
print(f"== invariant 2: {len(UNAMBIGUOUS)} onmiskenbare OV-termen -> sterk/medium of whitelist ==")
|
||||||
for w in UNAMBIGUOUS:
|
for w in UNAMBIGUOUS:
|
||||||
|
|
@ -166,6 +166,14 @@ GOLDEN = [
|
||||||
"De gemeente stopt vanaf januari met de gratis reizen voor 65-plussers.", True),
|
"De gemeente stopt vanaf januari met de gratis reizen voor 65-plussers.", True),
|
||||||
# busstation mag niet dubbel meetellen via 'bus' én 'station' (was 2×3=6→nu 1×2)
|
# busstation mag niet dubbel meetellen via 'bus' én 'station' (was 2×3=6→nu 1×2)
|
||||||
("Metrostation Centraal tijdelijk gesloten", "De metro's rijden niet.", True),
|
("Metrostation Centraal tijdelijk gesloten", "De metro's rijden niet.", True),
|
||||||
|
# fix 2026-09-12: 'spoorbrug' is medium (niet meer sterk/whitelist). Echte
|
||||||
|
# case: Omroep Brabant Stuifmail (12-09-2026) — een natuurverhaal waarin iemand
|
||||||
|
# 'bij de spoorbrug' een waterschildpad zag; dat passeerde voorheen op één
|
||||||
|
# sterke spoorbrug-hit in de samenvatting.
|
||||||
|
("Frans weet wat voor warrig beestje Mony heeft gefilmd",
|
||||||
|
"Ruud Klomp zag in de Dommel bij de spoorbrug tussen Liempde en Boxtel een waterschildpad.", False),
|
||||||
|
("Spoorbrug in Boxtel wordt aangepakt", "De werkzaamheden duren tot het najaar.", False), # één medium-hit in de titel: 2 < 3
|
||||||
|
("Spoorbrug wordt verhoogd voor treinen", "De brug gaat omhoog zodat er hogere treinen onderdoor kunnen.", True), # spoorbrug(2) + trein(1) = 3 → door
|
||||||
("NS verlengt noodregeling op traject Zwolle", "Reizigers moeten rekening houden met minder treinen.", True),
|
("NS verlengt noodregeling op traject Zwolle", "Reizigers moeten rekening houden met minder treinen.", True),
|
||||||
("Spoorstoring bij Utrecht opgeheven", "ProRail heeft de wisselstoring verholpen.", True),
|
("Spoorstoring bij Utrecht opgeheven", "ProRail heeft de wisselstoring verholpen.", True),
|
||||||
("Nieuwe intercity naar Berlijn", "De trein rijdt vanaf december vier keer per dag.", True),
|
("Nieuwe intercity naar Berlijn", "De trein rijdt vanaf december vier keer per dag.", True),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue