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
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
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
29 interactions = self.removeChildren(sentenceElement, ["pair", "interaction"])
30
31 newEntityIdCount = IDUtils.getNextFreeId(sentenceElement.findall("entity"))
32 nonNameEntities = self.removeNonNameEntities(sentenceElement)
33
34
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
55 if sentenceAnalysesElement != None:
56 sentenceElement.append(sentenceAnalysesElement)
57