|
|
def get_prompt(ask_name, shot_type):
|
|
|
import pandas as pd
|
|
|
import random
|
|
|
if ask_name == 'yes_no':
|
|
|
|
|
|
data_path = './data/data.xlsx'
|
|
|
sheet_train = 'Yes or No Train'
|
|
|
sheet_test = 'Yes or No Test'
|
|
|
|
|
|
data_train = pd.read_excel(data_path, sheet_name=sheet_train)
|
|
|
data_test = pd.read_excel(data_path, sheet_name=sheet_test)
|
|
|
|
|
|
question_train = data_train['Question']
|
|
|
text_train = data_train['Text']
|
|
|
answer_train = data_train['Answer']
|
|
|
question_test = data_test['Question']
|
|
|
text_test = data_test['Text']
|
|
|
answer_test = data_test['Answer']
|
|
|
|
|
|
if shot_type == 'zero_shot':
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
给定文本:“''' + text_train + '''”'''+'\n'+'问题:“''' + question_train + '''”
|
|
|
请用Yes或No直接回答。
|
|
|
'''
|
|
|
elif shot_type == 'one_shot':
|
|
|
|
|
|
random_index = random.randint(0, len(data_test)-1)
|
|
|
example = '文本:' + str(text_test[random_index]) +'\n'+ '问题:' + str(question_test[random_index]) +'\n'+ '答案:' + str(answer_test[random_index])
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
''' + '\n' + '''例子如下:''' + '\n' + example + '''
|
|
|
''' + '\n' + '''给定文本:“''' + text_train + '''”'''+'\n'+'''问题:“''' + question_train + '”' + '''
|
|
|
请用Yes或No直接回答。
|
|
|
'''
|
|
|
elif shot_type == 'two_shot':
|
|
|
|
|
|
random_index1 = random.randint(0, len(data_test)-1)
|
|
|
random_index2 = random.randint(0, len(data_test)-1)
|
|
|
while random_index2 == random_index1:
|
|
|
random_index2 = random.randint(0, len(data_test)-1)
|
|
|
example1 = '文本:' + str(text_test[random_index1]) + '\n'+ '问题:' + str(question_test[random_index1]) + '\n'+ '答案:' + str(answer_test[random_index1])
|
|
|
example2 = '文本:' + str(text_test[random_index2]) + '\n'+ '问题:' + str(question_test[random_index2]) + '\n'+ '答案:' + str(answer_test[random_index2])
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
''' + '\n' + '''例子一如下:''' + '\n' + example1 + '''
|
|
|
''' + '\n' + '''例子二如下:''' + '\n' + example2 + '''
|
|
|
''' + '\n' + '''给定文本:“''' + text_train + '''”'''+'\n'+'''问题:“''' + question_train + '”' + '''
|
|
|
请用Yes或No直接回答。
|
|
|
'''
|
|
|
elif shot_type == 'three_shot':
|
|
|
|
|
|
random_index1 = random.randint(0, len(data_test)-1)
|
|
|
random_index2 = random.randint(0, len(data_test)-1)
|
|
|
random_index3 = random.randint(0, len(data_test)-1)
|
|
|
while random_index3 == random_index1 or random_index3 == random_index2:
|
|
|
random_index3 = random.randint(0, len(data_test)-1)
|
|
|
example1 = '文本:' + str(text_test[random_index1]) + '\n'+ '问题:' + str(question_test[random_index1]) + '\n'+ '答案:' + str(answer_test[random_index1])
|
|
|
example2 = '文本:' + str(text_test[random_index2]) + '\n'+ '问题:' + str(question_test[random_index2]) + '\n'+ '答案:' + str(answer_test[random_index2])
|
|
|
example3 = '文本:' + str(text_test[random_index3]) + '\n'+ '问题:' + str(question_test[random_index3]) + '\n'+ '答案:' + str(answer_test[random_index3])
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
''' + '\n' + '''例子一如下:''' + '\n' + example1 + '''
|
|
|
''' + '\n' + '''例子二如下:''' + '\n' + example2 + '''
|
|
|
''' + '\n' + '''例子三如下:''' + '\n' + example3 + '''
|
|
|
''' + '\n' + '''给定文本:“''' + text_train + '''”'''+'\n'+'''问题:“''' + question_train + '”' + '''
|
|
|
请用Yes或No直接回答。
|
|
|
'''
|
|
|
elif ask_name == 'factoid':
|
|
|
|
|
|
data_path = './data/data.xlsx'
|
|
|
sheet_train = 'Factoid Train'
|
|
|
sheet_test = 'Factoid Test'
|
|
|
data_train = pd.read_excel(data_path, sheet_name=sheet_train)
|
|
|
data_test = pd.read_excel(data_path, sheet_name=sheet_test)
|
|
|
|
|
|
question_train = data_train['Question']
|
|
|
text_train = data_train['Text']
|
|
|
answer_train = data_train['Answer']
|
|
|
question_test = data_test['Question']
|
|
|
text_test = data_test['Text']
|
|
|
answer_test = data_test['Answer']
|
|
|
if shot_type == 'zero_shot':
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
给定文本:“''' + text_train + '”' +'\n' +'''问题:“''' + question_train + '''”
|
|
|
请直接回答该问题。
|
|
|
'''
|
|
|
elif shot_type == 'one_shot':
|
|
|
|
|
|
random_index = random.randint(0, len(data_test)-1)
|
|
|
example = '文本:' + str(text_test[random_index]) + '\n'+ '问题:' + str(question_test[random_index]) + '\n'+ '答案:' + str(answer_test[random_index])
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
''' + '\n' + '''例子如下:''' + '\n' + example + '''
|
|
|
''' + '\n' + '''给定文本:“''' + text_train + '''”'''+'\n'+'''问题:“''' + question_train + '”' + '''
|
|
|
请直接回答该问题。
|
|
|
'''
|
|
|
elif shot_type == 'two_shot':
|
|
|
|
|
|
random_index1 = random.randint(0, len(data_test)-1)
|
|
|
random_index2 = random.randint(0, len(data_test)-1)
|
|
|
while random_index2 == random_index1:
|
|
|
random_index2 = random.randint(0, len(data_test)-1)
|
|
|
example1 = '文本:' + str(text_test[random_index1]) + '\n'+ '问题:' + str(question_test[random_index1]) + '\n'+ '答案:' + str(answer_test[random_index1])
|
|
|
example2 = '文本:' + str(text_test[random_index2]) + '\n'+ '问题:' + str(question_test[random_index2]) + '\n'+ '答案:' + str(answer_test[random_index2])
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
''' + '\n' + '''例子一如下:''' + '\n' + example1 + '''
|
|
|
''' + '\n' + '''例子二如下:''' + '\n' + example2 + '''
|
|
|
''' + '\n' + '''给定文本:“''' + text_train + '''”'''+'\n'+'''问题:“''' + question_train + '”' + '''
|
|
|
请直接回答该问题。
|
|
|
'''
|
|
|
elif shot_type == 'three_shot':
|
|
|
|
|
|
random_index1 = random.randint(0, len(data_test)-1)
|
|
|
random_index2 = random.randint(0, len(data_test)-1)
|
|
|
random_index3 = random.randint(0, len(data_test)-1)
|
|
|
while random_index3 == random_index1 or random_index3 == random_index2:
|
|
|
random_index3 = random.randint(0, len(data_test)-1)
|
|
|
example1 = '文本:' + str(text_test[random_index1]) + '\n'+ '问题:' + str(question_test[random_index1]) + '\n'+ '答案:' + str(answer_test[random_index1])
|
|
|
example2 = '文本:' + str(text_test[random_index2]) + '\n'+ '问题:' + str(question_test[random_index2]) + '\n'+ '答案:' + str(answer_test[random_index2])
|
|
|
example3 = '文本:' + str(text_test[random_index3]) + '\n'+ '问题:' + str(question_test[random_index3]) + '\n'+ '答案:' + str(answer_test[random_index3])
|
|
|
prompt = '''
|
|
|
请根据给定的文本回答问题,
|
|
|
''' + '\n' + '''例子一如下:''' + '\n' + example1 + '''
|
|
|
''' + '\n' + '''例子二如下:''' + '\n' + example2 + '''
|
|
|
''' + '\n' + '''例子三如下:''' + '\n' + example3 + '''
|
|
|
''' + '\n' + '''给定文本:“''' + text_train + '''”'''+'\n'+'''问题:“''' + question_train + '”' + '''
|
|
|
请直接回答该问题。
|
|
|
'''
|
|
|
return prompt
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
prompt = get_prompt('yes_no', 'zero_shot')
|
|
|
print('--------------------------------')
|
|
|
print(len(prompt))
|
|
|
print(prompt[0])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|