TheNetherWatcher's picture
Upload folder using huggingface_hub
d0ffe9c verified
import glob
import os
import random
import re
wild_card_regex = r'(\A|\W)__([\w-]+)__(\W|\Z)'
def create_wild_card_map(wild_card_dir):
result = {}
if os.path.isdir(wild_card_dir):
txt_list = glob.glob( os.path.join(wild_card_dir ,"**/*.txt"), recursive=True)
for txt in txt_list:
basename_without_ext = os.path.splitext(os.path.basename(txt))[0]
with open(txt, encoding='utf-8') as f:
try:
result[basename_without_ext] = [s.rstrip() for s in f.readlines()]
except Exception as e:
print(e)
print("can not read ", txt)
return result
def replace_wild_card_token(match_obj, wild_card_map):
m1 = match_obj.group(1)
m3 = match_obj.group(3)
dict_name = match_obj.group(2)
if dict_name in wild_card_map:
token_list = wild_card_map[dict_name]
token = token_list[random.randint(0,len(token_list)-1)]
return m1+token+m3
else:
return match_obj.group(0)
def replace_wild_card(prompt, wild_card_dir):
wild_card_map = create_wild_card_map(wild_card_dir)
prompt = re.sub(wild_card_regex, lambda x: replace_wild_card_token(x, wild_card_map ), prompt)
return prompt