Esempio n. 1
0
 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
Esempio n. 2
0
 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