in src/models/struxgpt_v2.py [0:0]
def refine_struct_result(self, raw_query: str, slice_sent_num: int = 0, num_threads: int = 0,
timeout: int = 3, return_json: bool = True):
if slice_sent_num == 0:
struct_res = self.generate_struct(raw_query, timeout=timeout)
else:
assert isinstance(slice_sent_num, int) and slice_sent_num > 0
sent_list = self.remapping_sentence(raw_query)
ns, rs = len(sent_list), slice_sent_num
if ns > rs:
if num_threads > 1:
struct_args_list = []
for i in range(0, ns, rs):
sent_sublist = sent_list[i:i+rs]
sentences_str = self.mapping_sentence(sent_sublist)
struct_args_list.append((sentences_str, timeout))
struct_res_list = multiprocess_call(self.generate_struct, struct_args_list,
num_threads=min(num_threads, len(struct_args_list)))
else:
struct_res_list = []
for i in range(0, ns, rs):
sent_sublist = sent_list[i:i+rs]
sentences_str = self.mapping_sentence(sent_sublist)
struct_res_list.append(self.generate_struct(sentences_str, timeout=timeout))
scope = self.summarize_sentence_scope(raw_query)
struct_res = StructItem.merge_struct(scope, struct_res_list, mode='concat')
else:
struct_res = self.generate_struct(raw_query, timeout=timeout)
return struct_res.to_json() if return_json else struct_res