MakeInstruction / main.py
DSXiangLi
a
1cabc1d
# -*-coding:utf-8 -*-
"""
Run SELF
"""
import numpy as np
from self.generate import SELF
threshold = 0.7 # 当最近几个指令相似度都很高的时候停止
def main(seed_file, output_file, openai_key, n_human, n_machine, n_instruct, max_iter, max_gen):
instance = SELF(seed_file, openai_key, n_human, n_machine, n_instruct, None)
n_iter = 0
while n_iter < max_iter and instance.n_keep < max_gen:
instance.step()
n_iter +=1
print(f'已生成{instance.n_gen} 可用{instance.n_keep}')
if n_iter >3 and np.average([i['avg_similarity_score'] for i in instance.machine_instruction_data[-5:]] )> threshold:
break
# dump file
instance.dump_file(output_file)
if __name__ == '__main__':
seed_file = './ape/data/seed_task.json'
openai_key ='a'
n_human=2
n_machine=1
n_instruct=4
instance = SELF(seed_file, openai_key, n_human, n_machine, n_instruct, None)
scorer = rouge_scorer.RougeScorer(['rougeL'], use_stemmer=False, tokenizer=ChineseTokenizer())
inst_tokens = scorer._tokenizer.tokenize('诊断患者')
with Pool(os.cpu_count()) as p:
rouge_scores = p.map(partial(rouge_scorer._score_lcs,inst_tokens), instance.all_instruction_tokens)
rouge_l = [score.fmeasure for score in rouge_scores]