diff --git a/Config.py b/Config.py index 92599b6c0bd107a97da1ca6fc6e655ed717312b7..52c8d23c1e768844b0ed07fc11110a34899b0444 100644 --- a/Config.py +++ b/Config.py @@ -19,6 +19,9 @@ class Config : self.historyHistory = set() self.historyPop = [] + def isPredicted(self, colname) : + return colname in self.predicted + def hasCol(self, colname) : return colname in self.col2index @@ -121,7 +124,7 @@ class Config : toPrint = [] for colIndex in range(len(self.lines[index])) : value = str(self.getAsFeature(index, self.index2col[colIndex])) - if value == "" : + if value == "" or value == "_" : value = "_" elif self.index2col[colIndex] == "HEAD" and value != "-1": value = self.getAsFeature(int(value), "ID") @@ -153,6 +156,7 @@ def readConllu(filename, predicted) : if head == "_" : continue if head == "0" : + configs[-1].set(index, "HEAD", -1, False) continue configs[-1].set(index, "HEAD", id2index[head], False) configs[-1].goldChilds[int(id2index[head])].append(index) diff --git a/Transition.py b/Transition.py index 7ad6dfb24c1d104583f2cfa3f196d87a4e627369..ca41bcf03b06e7badfc5058592ecaceae43ced58 100644 --- a/Transition.py +++ b/Transition.py @@ -266,7 +266,7 @@ def applyReduce(config) : ################################################################################ def applyEOS(config) : - if not config.hasCol("HEAD") : + if not config.hasCol("HEAD") or not config.isPredicted("HEAD") : return rootCandidates = [index for index in config.stack if not config.isMultiword(index) and isEmpty(config.getAsFeature(index, "HEAD"))]