@@ -161,25 +161,36 @@ def _get_initial_static_html(column: Union["SpanArray", "TokenSpanArray"],
161
161
162
162
# Generate a dictionary to store span information, including relationships with spans occupying the same region.
163
163
spans = {}
164
+ sorted_span_ids = []
164
165
for i in range (len (document )):
165
166
166
167
span_data = {}
167
168
span_data ["id" ] = i
168
169
span_data ["begin" ] = document [i ].begin
169
170
span_data ["end" ] = document [i ].end
170
171
span_data ["sets" ] = []
172
+ spans [i ] = span_data
173
+
174
+ sorted_span_ids .append (i )
175
+
176
+ # Sort IDs
177
+ sorted_span_ids .sort (key = lambda id : (spans [id ]["begin" ], - spans [id ]["end" ]))
171
178
172
- for j in range (i + 1 , len (document )):
179
+ for i in range (len (sorted_span_ids )):
180
+ span_data = spans [sorted_span_ids [i ]]
181
+
182
+ for j in range (i + 1 , len (sorted_span_ids )):
183
+ sub_span_data = spans [sorted_span_ids [j ]]
173
184
# If the spans do not overlap, exit the sub-loop
174
- if (document [ j ]. begin >= document [ i ]. end ):
185
+ if (sub_span_data [ " begin" ] >= span_data [ " end" ] ):
175
186
break
176
187
else :
177
- if (document [ j ]. end <= document [ i ]. end ):
178
- span_data ["sets" ].append ({"type" : SetType .NESTED , "id" : j })
188
+ if (sub_span_data [ " end" ] <= span_data [ " end" ] ):
189
+ span_data ["sets" ].append ({"type" : SetType .NESTED , "id" : sub_span_data [ "id" ] })
179
190
else :
180
- span_data ["sets" ].append ({"type" : SetType .OVERLAP , "id" : j })
191
+ span_data ["sets" ].append ({"type" : SetType .OVERLAP , "id" : sub_span_data [ "id" ] })
181
192
182
- spans [i ] = span_data
193
+ spans [sorted_span_ids [ i ] ] = span_data
183
194
184
195
185
196
# Generate the table rows DOM string from span data.
0 commit comments