o
    7ti
                     @   s>   d dl mZ d dlmZ d	ddZeeddZeeddZdS )
    )partial)Datasetboolc                    st   g d dd fdd}| j | fdd| j D d} i }| j D ]}d	d | | D ||< q't|S )
Ntitleabstractquestionansweranswer_typec                 S   s   | d rd}d}||fS | d rd}d}||fS | d r&| d }d}||fS | d r4| d }d}||fS | d du rBd	}d}||fS d S )
Nunanswerableyes_noyesr   free_form_answerfree form answerextractive_spansFno )answer_blobr	   r
   r   r   N/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/tasks/qasper/utils.py_categorise_answer	   s*   z(process_docs.<locals>._categorise_answerc           	         s   g g g g g d}|  d}|  d}t| d d | d d D ]B\}}|d D ]9} |\}}|kr`|d | |d | |d | |d | t|trYd	|}|d | q'q|S )
a  Given a `doc`, flatten it out so that each JSON blob
        contains exactly one question and one answer. Logic taken from
        the reference implementation available at
        https://github.com/allenai/qasper-led-baseline/blob/main/scripts/evaluator.py
        r   r   r   qasr   answersr	   r
   z, )popzipappend
isinstancelistjoin)	docobs_listr   r   r   answer_listr   r	   r
   )r   set_answer_typer   r   _flatten   s,   

"

zprocess_docs.<locals>._flattenc                    s   g | ]}| vr|qS r   r   ).0key)FEATURESr   r   
<listcomp>>   s    z process_docs.<locals>.<listcomp>)remove_columnsc                 S   s   g | ]	}|D ]}|qqS r   r   )r#   rowxr   r   r   r&   B   s    )mapfeatureskeysr   	from_dict)datasetr!   r"   new_datasetr$   r   )r%   r   r!   r   process_docs   s   
r0   )r!   r   N)r   )	functoolsr   datasetsr   r0   process_docs_boolprocess_docs_freeformr   r   r   r   <module>   s
    
A