def readframesfromfile(self, mymap): framedict = { } #Key is trigger ("trigger, active"), value is frame object triggerdict = { } #Key is trigger ("trigger"), value is ["POS", frame object] pattern = "" semprefs = [] frame = "" with open("./" + mymap + "myframes.out", 'r') as framefile: for line in framefile: if "\t\t" in line: #Found sempref semprefs.append(line.strip()) continue elif "\t" in line: #Found pattern if pattern: frame.addpattern(pattern, semprefs) pattern = "" semprefs = [] pattern = line.strip() continue elif "Trigger:" in line: if pattern: frame.addpattern(pattern, semprefs) pattern = "" semprefs = [] #add former pattern and sempref to list triggerandtype = line.strip()[9:] both = triggerandtype.split( ", ") #both[0] is trigger, both[1] is type frame = Frame(both[0], both[1]) framedict[triggerandtype] = frame triggerdict[both[0].strip()] = [both[1].strip(), frame] else: continue frame.addpattern(pattern, semprefs) framedict[triggerandtype] = frame both = triggerandtype.split(", ") triggerdict[both[0].strip()] = [both[1].strip(), frame] # Making the triggerdict for the translation part triggerlist = [] for key in framedict.keys(): trigger = key.split(", ")[0] triggerlist.append(trigger.strip()) return framedict, triggerdict
def mergepatterns(self, pattswithsempref): #Make triggerdict from bestpatterns triggerdict = {} frames = [] print len(pattswithsempref), len(self.bestpatterns) for pattern in self.bestpatterns: thistrigger = helpers.getpatterntrigger(pattern) if thistrigger not in triggerdict: triggerdict[thistrigger] = [] if pattern not in triggerdict[thistrigger]: triggerdict[thistrigger].append(pattern) #Merging patterns into frames, filling frames[] for trigger in triggerdict: activeframe = Frame(trigger, "active") passiveframe = Frame(trigger, "passive") nounframe = Frame(trigger, "noun") patternlist = triggerdict[trigger] for patt in patternlist: mytype = helpers.gettriggertype(patt) semprefs = pattswithsempref[patt] if mytype == "active": activeframe.addpattern(patt, semprefs) elif mytype == "passive": passiveframe.addpattern(patt, semprefs) elif mytype == "noun": nounframe.addpattern(patt, semprefs) else: print "Couldn't find triggertype, can't add pattern! Type: {}".format( mytype) if activeframe.isnotempty(): frames.append(activeframe) if passiveframe.isnotempty(): frames.append(passiveframe) if nounframe.isnotempty(): frames.append(nounframe) continue return frames