summaryrefslogtreecommitdiff
path: root/stanford_parser/standoff.py
diff options
context:
space:
mode:
authorYuval Adam <yuv.adm@gmail.com>2011-04-29 17:41:58 +0300
committerYuval Adam <yuv.adm@gmail.com>2011-04-29 17:41:58 +0300
commitc7659d077c9ce8fe84ff91297d9bf0e4a5cfd689 (patch)
tree25bc7ff83587ac30dce669fdf80ca0ef372e3b46 /stanford_parser/standoff.py
parente57b3885abecfd4ce6db8a1a670322ec940eca65 (diff)
added jpype stuffjpype
Diffstat (limited to 'stanford_parser/standoff.py')
-rw-r--r--stanford_parser/standoff.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/stanford_parser/standoff.py b/stanford_parser/standoff.py
new file mode 100644
index 0000000..76eef4d
--- /dev/null
+++ b/stanford_parser/standoff.py
@@ -0,0 +1,80 @@
+
+class TextStandoff:
+ def __init__(self, text, range):
+ self.entireText = text
+
+ self.range = range
+
+ def asPrimitives(self):
+ return (self.entireText, self.range)
+
+ @staticmethod
+ def fromPrimitives(args):
+ return TextStandoff(*args)
+
+ def isNull(self):
+ return self.range == (0, 0)
+
+ @property
+ def text(self):
+ start, end = self.range
+ return self.entireText[start:end]
+ @property
+ def length(self):
+ start, end = self.range
+ return end - start
+ @property
+ def end(self):
+ start, end = self.range
+ return end
+ @property
+ def start(self):
+ start, end = self.range
+ return start
+
+ def overlaps(self, standoff):
+ if self.start < standoff.end and standoff.start < self.end:
+ return True
+ else:
+ return False
+ def contains(self, standoff):
+ start, end = standoff
+ return self.start <= start and self.end >= end
+ def before(self, standoff):
+ if self.end <= standoff.start:
+ return True
+ else:
+ return False
+ def degreeOfOverlap(self, standoff):
+ """
+ Returns the size of the overlapping range of two tags. Returns
+ zero if they do not overlap.
+ """
+ start, end = standoff
+ if self.overlaps(standoff):
+ return min(end, self.end) - max(start, self.start)
+ else:
+ return 0
+
+ def __iter__(self):
+ return iter((self.start, self.end))
+ def toXml(self, standoff):
+ standoff.setAttribute("start", str(self.start))
+ standoff.setAttribute("end", str(self.end))
+
+ def __repr__(self):
+ return 'TextStandoff("%s", (%d, %d))' % (self.entireText, self.start, self.end)
+
+ def __str__(self):
+ return '("%s", (%d, %d))' % (self.text, self.start, self.end)
+
+ def __eq__(self, obj):
+ if isinstance(obj, TextStandoff):
+ if self.range == obj.range and self.entireText == obj.entireText:
+ return True
+ return False
+
+ def __hash__(self):
+ return hash(self.entireText) * 17 + hash(self.range)
+
+