b82853a95b
4-signal matcher: category (0.2), keywords (0.2), zone (0.3), scenario similarity (0.3). Scenario signal extracts action words (eingeklemmt vs herabfallend vs durchschlaegt) to differentiate similar-looking hazards at the same component. Split benchmark_synonyms.go (70 lines) from benchmark_matcher.go (516→450 lines) to stay under 500-line cap. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
69 lines
3.4 KiB
Go
69 lines
3.4 KiB
Go
package iace
|
|
|
|
// synonymSets groups equivalent hazard terms for keyword matching.
|
|
var synonymSets = [][]string{
|
|
{"quetsch", "crush", "einklemm", "klemm"},
|
|
{"scher", "shear", "absch"},
|
|
{"schneid", "cut", "schnitt"},
|
|
{"stoss", "schlag", "impact", "treff", "aufprall"},
|
|
{"einzug", "fang", "erfass", "entangle", "wickel"},
|
|
{"elektrisch", "stromschlag", "electric", "beruehr", "spannungsfuehr", "koerperdurchstroemung"},
|
|
{"brand", "feuer", "fire", "kabelbrand", "kurzschluss", "ueberlast", "ueberstrom"},
|
|
{"verbrenn", "burn", "heiss", "thermisch", "lichtbogen"},
|
|
{"laerm", "noise", "gehoer", "schall", "dezibel"},
|
|
{"vibration", "schwing"},
|
|
{"ergonom", "haltung", "handhabung", "bedien", "bewegungsapparat"},
|
|
{"kuehlschmierstoff", "kss", "aerosol", "coolant"},
|
|
{"pneumat", "druckluft", "compressed"},
|
|
{"hydraul", "druck", "pressure"},
|
|
{"roboter", "robot", "roboterarm"},
|
|
{"greifer", "gripper", "schunk"},
|
|
{"foerderband", "transport", "conveyor"},
|
|
{"schutzzaun", "schutzgitter", "fence", "guard"},
|
|
{"werkzeugmaschine", "robodrill", "bearbeitungszentrum", "wzm"},
|
|
{"stolper", "rutsch", "slip", "trip"},
|
|
{"leckage", "austreten", "leak"},
|
|
{"einstich", "puncture", "spritz"},
|
|
{"isolat", "kriechstrom", "schutzleiter", "erdung", "indirekt"},
|
|
{"luft", "kriechstreck", "beruehrer", "oberflaeche", "leitfaehig"},
|
|
{"emv", "strahlung", "radiation", "elektromagnet", "stoereinfluss"},
|
|
{"eingeschlossen", "eingesperrt", "wiederanlauf", "quittier"},
|
|
{"zentriergreifer", "zentriereinheit", "zentrieren"},
|
|
{"beladetuer", "schutztuer", "zugangstuer", "tuerposition"},
|
|
{"werkstueck", "rohteil", "rohling"},
|
|
{"ergonom", "einlege", "bedienelemente", "arbeitshoehe", "haltung"},
|
|
{"boden", "tragfaehig", "einbrech", "fundamentierr"},
|
|
{"spritzer", "auge", "augenverletz"},
|
|
{"bersten", "platzen", "abspring"},
|
|
{"durchschlag", "durchbrech", "begrenz", "bewegungsbereich"},
|
|
{"potentialausgleich", "potentialunter", "bezugspotential"},
|
|
{"kriechstreck", "luft-", "kriechst", "dimensionie"},
|
|
{"kuehlschmierstoff", "kss", "bettspuel", "kuehlung"},
|
|
{"rutsch", "ausrutsch", "stolper", "gleiten", "nassrutsch"},
|
|
}
|
|
|
|
// wrongMachineTerms are words in an engine hazard that indicate it's about
|
|
// a completely different machine type.
|
|
var wrongMachineTerms = []string{
|
|
"spielplatz", "fahrtreppe", "trommelwaschmaschine", "umreifungsband",
|
|
"drehteller", "rundtaktanlage", "exzentrisch", "webstuhl",
|
|
"aufzug", "rolltreppe", "bagger", "kettensaege", "kreissaege",
|
|
"druckmaschine", "zentrifuge", "autoklav", "hobel",
|
|
"naehmaschine", "strickmaschine", "schleifmaschine",
|
|
"gabelstapler", "flurfoerder", "erntemaschine",
|
|
"kollision zweier roboter",
|
|
}
|
|
|
|
// categoryMap maps GT hazard_group (German) to engine category prefixes.
|
|
var categoryMap = map[string][]string{
|
|
"mechanische gefaehrdungen": {"mechanical"},
|
|
"elektrische gefaehrdungen": {"electrical"},
|
|
"thermische gefaehrdungen": {"thermal"},
|
|
"gefaehrdungen durch laerm": {"noise", "ergonomic"},
|
|
"gefaehrdungen durch vibration": {"noise", "vibration"},
|
|
"gefaehrdungen durch strahlung": {"radiation", "emc"},
|
|
"gefaehrdungen durch materialien und substanzen": {"material", "environmental"},
|
|
"ergonomische gefaehrdungen": {"ergonomic"},
|
|
"gefaehrdungen im zusammenhang mit der einsatzumgebung": {"environmental"},
|
|
}
|