@@ -91,8 +91,8 @@ public void trigramPatterns(Annotation doc) {
91
91
continue ;
92
92
}
93
93
//VPQ
94
- if (lastPronounIndex == quoteBeginTokenIndex - 1 - offset
95
- && docTokens .get (quoteBeginTokenIndex - 2 - offset ).tag ().startsWith ("V" )) {
94
+ if (lastPronounIndex == quoteBeginTokenIndex - 1 - offset &&
95
+ docTokens .get (quoteBeginTokenIndex - 2 - offset ).tag ().startsWith ("V" )) {
96
96
fillInMention (quote , tokenRangeToString (lastPronounIndex ), lastPronounIndex , lastPronounIndex , "trigram VPQ" , PRONOUN );
97
97
continue ;
98
98
}
@@ -106,17 +106,19 @@ public void trigramPatterns(Annotation doc) {
106
106
ArrayList <String > names = namesAndNameIndices .first ;
107
107
ArrayList <Pair <Integer , Integer >> nameIndices = namesAndNameIndices .second ;
108
108
109
- if (names .size () > 0 ) {
109
+ if (names .size () > 0 &&
110
+ docTokens .size () > quoteEndTokenIndex + 1 ) {
110
111
Pair <Integer , Integer > firstNameIndex = nameIndices .get (0 );
111
112
CoreLabel nextToken = docTokens .get (quoteEndTokenIndex + 1 );
112
113
//QVC
113
- if (nextToken .tag ().startsWith ("V" ) // verb!
114
- && firstNameIndex .first .equals (quoteEndTokenIndex + 2 )) {
114
+ if (nextToken .tag ().startsWith ("V" ) && // verb!
115
+ firstNameIndex .first .equals (quoteEndTokenIndex + 2 )) {
115
116
fillInMention (quote , names .get (0 ), firstNameIndex .first , firstNameIndex .second , "trigram QVC" , NAME );
116
117
continue ;
117
118
}
118
119
//QCV
119
- if (firstNameIndex .first .equals (quoteEndTokenIndex + 1 )) {
120
+ if (firstNameIndex .first .equals (quoteEndTokenIndex + 1 ) &&
121
+ docTokens .size () > firstNameIndex .second + 1 ) {
120
122
CoreLabel secondNextToken = docTokens .get (firstNameIndex .second + 1 );
121
123
if (secondNextToken .tag ().startsWith ("V" )) {
122
124
fillInMention (quote , names .get (0 ), firstNameIndex .first , firstNameIndex .second , "trigram QCV" , NAME );
@@ -126,7 +128,8 @@ public void trigramPatterns(Annotation doc) {
126
128
}
127
129
128
130
ArrayList <Integer > pronounsIndices = scanForPronouns (followingTokenRange );
129
- if (pronounsIndices .size () > 0 ) {
131
+ if (pronounsIndices .size () > 0 &&
132
+ docTokens .size () > quoteEndTokenIndex + 1 ) {
130
133
CoreLabel nextToken = docTokens .get (quoteEndTokenIndex + 1 );
131
134
int firstPronounIndex = pronounsIndices .get (0 );
132
135
//QVP
@@ -135,15 +138,15 @@ public void trigramPatterns(Annotation doc) {
135
138
continue ;
136
139
}
137
140
//QPV
138
- if (firstPronounIndex == quoteEndTokenIndex + 1
139
- && docTokens .get (quoteEndTokenIndex + 2 ).tag ().startsWith ("V" )) {
141
+ if (firstPronounIndex == quoteEndTokenIndex + 1 &&
142
+ docTokens .size () > quoteEndTokenIndex + 2 &&
143
+ docTokens .get (quoteEndTokenIndex + 2 ).tag ().startsWith ("V" )) {
140
144
fillInMention (quote , tokenRangeToString (pronounsIndices .get (pronounsIndices .size () - 1 )), firstPronounIndex ,
141
- firstPronounIndex , "trigram QPV" , PRONOUN );
145
+ firstPronounIndex , "trigram QPV" , PRONOUN );
142
146
continue ;
143
147
}
144
148
}
145
149
}
146
150
}
147
151
}
148
-
149
152
}
0 commit comments