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

Source Code for Module TEES.ExampleWriters.EdgeExampleWriter

 1  import sys 
 2  from SentenceExampleWriter import SentenceExampleWriter 
 3  try: 
 4      import xml.etree.cElementTree as ET 
 5  except ImportError: 
 6      import cElementTree as ET 
 7   
8 -class EdgeExampleWriter(SentenceExampleWriter):
9 - def __init__(self):
10 self.xType = "edge" 11 self.removeEdges = True 12 SentenceExampleWriter.__init__(self)
13
14 - def writeXMLSentence(self, examples, predictionsByExample, sentenceObject, classSet, classIds, goldSentence=None, exampleStyle=None):
15 self.assertSameSentence(examples) 16 17 sentenceElement = sentenceObject.sentence 18 sentenceId = sentenceElement.get("id") 19 # detach analyses-element 20 sentenceAnalysesElement = None 21 sentenceAnalysesElement = sentenceElement.find("sentenceanalyses") 22 if sentenceAnalysesElement == None: 23 sentenceAnalysesElement = sentenceElement.find("analyses") 24 if sentenceAnalysesElement != None: 25 sentenceElement.remove(sentenceAnalysesElement) 26 # remove pairs and interactions 27 if self.removeEdges: 28 removed = self.removeChildren(sentenceElement, ["pair", "interaction"]) 29 30 causeAfterTheme = False 31 pairCount = 0 32 for example in examples: 33 if example[3].has_key("causeAfterTheme"): 34 causeAfterTheme = True 35 prediction = predictionsByExample[example[0]] 36 predictionString = self.getPredictionStrengthString(prediction, classSet, classIds) 37 for iType in self.getElementTypes(prediction, classSet, classIds): # split merged classes 38 pairElement = ET.Element("interaction") 39 pairElement.set("directed", "Unknown") 40 pairElement.set("e1", example[3]["e1"]) #.attrib["id"] 41 if "e1DuplicateIds" in example[3]: 42 pairElement.set("e1DuplicateIds", example[3]["e1DuplicateIds"]) 43 pairElement.set("e2", example[3]["e2"]) #.attrib["id"] 44 if "e2DuplicateIds" in example[3]: 45 pairElement.set("e2DuplicateIds", example[3]["e2DuplicateIds"]) 46 pairElement.set("id", sentenceId + ".i" + str(pairCount)) 47 pairElement.set("type", iType) 48 pairElement.set("predictions", predictionString) 49 #self.setElementType(pairElement, prediction, classSet, classIds) 50 if pairElement.get("type") != "neg": 51 sentenceElement.append(pairElement) 52 pairCount += 1 53 54 # Re-attach original themes, if needed 55 if causeAfterTheme: 56 for interaction in removed: 57 if interaction.get("type") == "Theme": 58 interaction.set("id", sentenceId + ".i" + str(pairCount)) 59 sentenceElement.append(interaction) 60 pairCount += 1 61 62 # re-attach the analyses-element 63 if sentenceAnalysesElement != None: 64 sentenceElement.append(sentenceAnalysesElement)
65