def METHOD_NAME():
    from multiprocessing import Pool
    args = get_args()
    target_ids = get_target_sequences(args.manifest, args.prompts_description)
    with open(args.asr_transcript, 'r') as fin:
        lines = fin.readlines()
    terms = [x.strip().split() for x in lines]
    filtered = []
    for term in terms:
        line_id = int(term[-1].split('-')[1][:-1])
        if line_id in target_ids:
            filtered.append(term)
    terms = filtered
    if args.cut_id:
        terms = [x[1:] for x in terms]
    if args.cut_tail:
        terms = [x[:-1] for x in terms]
    if args.debug:
        terms = terms[:10]
    tasks = [
        ('Self-BLEU2-arithmetic', get_self_bleu2_arithmetic),
        ('Self-BLEU2-geometric', get_self_bleu2_geometric),
        ('Auto-BLEU2-arithmetic', get_auto_bleu2_arithmetic),
        ('Auto-BLEU2-geometric', get_auto_bleu2_geometric),
        ('Self-BLEU3-arithmetic', get_self_bleu3_arithmetic),
        ('Self-BLEU3-geometric', get_self_bleu3_geometric),
        ('Auto-BLEU3-arithmetic', get_auto_bleu3_arithmetic),
        ('Auto-BLEU3-geometric', get_auto_bleu3_geometric),
    ]
    n_processes = min(16, len(tasks))
    with Pool(n_processes) as pool:
        metrics = pool.map(run_f, [(t[1], terms) for t in tasks])
    for (metric_name, _), metric in zip(tasks, metrics):
        metric, sem = np.mean(metric), np.std(metric) / np.sqrt(len(metric))
        metric, sem = [
            round(100 * x, 2) for x in [metric, sem]
        ]
        print(f'{metric_name} {metric} +- {sem}')