Package TEES :: Package ExampleWriters :: Module PhraseTriggerExampleWriter
[hide private]

Source Code for Module TEES.ExampleWriters.PhraseTriggerExampleWriter

 1  import sys 
 2  from SentenceExampleWriter import SentenceExampleWriter 
 3  import Utils.InteractionXML.IDUtils as IDUtils 
 4  try: 
 5      import xml.etree.cElementTree as ET 
 6  except ImportError: 
 7      import cElementTree as ET 
 8  import Utils.Range as Range 
 9   
10 -class PhraseTriggerExampleWriter(SentenceExampleWriter):
11 - def __init__(self):
12 self.xType = "phrase" 13 SentenceExampleWriter.__init__(self)
14
15 - def writeXMLSentence(self, examples, predictionsByExample, sentenceObject, classSet, classIds, goldSentence=None, exampleStyle=None):
16 self.assertSameSentence(examples) 17 18 sentenceElement = sentenceObject.sentence 19 sentenceId = sentenceElement.get("id") 20 sentenceText = sentenceElement.get("text") 21 # detach analyses-element 22 sentenceAnalysesElement = None 23 sentenceAnalysesElement = sentenceElement.find("sentenceanalyses") 24 if sentenceAnalysesElement == None: 25 sentenceAnalysesElement = sentenceElement.find("analyses") 26 if sentenceAnalysesElement != None: 27 sentenceElement.remove(sentenceAnalysesElement) 28 # remove pairs and interactions 29 interactions = self.removeChildren(sentenceElement, ["pair", "interaction"]) 30 # remove entities 31 newEntityIdCount = IDUtils.getNextFreeId(sentenceElement.findall("entity")) 32 nonNameEntities = self.removeNonNameEntities(sentenceElement) 33 34 # add new pairs 35 for example in examples: 36 prediction = predictionsByExample[example[0]] 37 entityElement = ET.Element("entity") 38 entityElement.attrib["isName"] = "False" 39 headToken = example[3]["t"] 40 for token in sentenceObject.tokens: 41 if token.get("id") == headToken: 42 headToken = token 43 break 44 entityElement.set("charOffset", example[3]["charOffset"]) 45 entityElement.set("headOffset", headToken.get("charOffset")) 46 entityElement.set("phraseType", example[3]["ptype"]) 47 entOffset = Range.charOffsetToSingleTuple(example[3]["charOffset"]) 48 entityElement.set("text", sentenceText[entOffset[0]:entOffset[1]+1]) 49 entityElement.set("id", sentenceId + ".e" + str(newEntityIdCount)) 50 self.setElementType(entityElement, prediction, classSet, classIds) 51 newEntityIdCount += 1 52 sentenceElement.append(entityElement) 53 54 # re-attach the analyses-element 55 if sentenceAnalysesElement != None: 56 sentenceElement.append(sentenceAnalysesElement)
57