o
    6ti	                     @   s   d dl Z d dlmZ d dlZd dlm  m  mZ d dlm	Z	 dd Z
dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd ZdS )    N)product)general_detokenizec                 C   s   | d   | dd   S )Nr      )lower)text r   U/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/tasks/catalan_bench/utils.pylowercase_first_letter
   s   r	   c                 C      dd }|  |S )Nc                 S   s   t | d  | d< t | d  | d< | d dr#| d d d n| d | d< t| d | d< | d ds>| d d n| d | d< | S )Npremise
hypothesis).,!?r   )r   stripendswithr	   docr   r   r   
process_fn   s   z#process_doc_nli.<locals>.process_fnmapdatasetr   r   r   r   process_doc_nli   s   
r   c                    sd  t | d }| d d |d  g}| d}|r<| D ]\}}|d |d   ttj|vr;||d |d   q|}|d  dd  d}d}	t |dkrt	t |D ]*}
|d|
 ||
d d   }|	t
 fd	d
|D 7 }	|t
 fdd
|D 7 }qYn|	t
 fdd
|D 7 }	|t
 fdd
|D 7 }|	t
dt | |t
dt | dS )N	questionsanswers
input_textr   additional_answersr   
g        c                 3       | ]	}t | V  qd S Nsquad_metricscompute_exact.0apredr   r   	<genexpr><       z)process_results_coqcat.<locals>.<genexpr>c                 3   r!   r"   r$   
compute_f1r&   r)   r   r   r+   =   r,   c                 3   r!   r"   r#   r&   r)   r   r   r+   ?   r,   c                 3   r!   r"   r-   r&   r)   r   r   r+   @   r,   )emf1)lengetitemsr   r   strappendr   splitrangemax)r   resultsturn_idr   additional_answers_listkeyr   	gold_listf1_sumem_sumigold_answersr   r)   r   process_results_coqcat&   s2   
rB   c                 C   s:   |d }| d d d }t ||}t ||}||dS )Nr   r   r   )r0   exact_match)r$   r.   r%   )r   r9   preds	referencer>   rC   r   r   r   process_results_qaH   s
   
rF   c                 C   r
   )Nc                 S   s\   t dd| d | d< tg dg dD ]\}}t dd| d | | | d | |< q| S )Nz + content)abstractive
extractiveextreme)a1a2a3	summaries)resubr   )r   summary_typeindexr   r   r   r   R   s   z&process_doc_cabreu.<locals>.process_fnr   r   r   r   r   process_doc_cabreuQ   s   
rT   c                    s$   g   fdd}|  dd |S )Nc                    s   | d dvr;| d dvr;t | d  | d< t | d  | d< | d dr1| d d d | d< t| d | d< | S  |  | S )N	sentence1N 	sentence2)r   r   ;r   )r   r   r   r	   r5   r   
empty_docsr   r   _process_docc   s   
z.process_docs_paraphrases.<locals>._process_docc                 S   s   | d dvo| d dvS )NrU   rV   rX   r   r   r   r   r   <lambda>r   s    z*process_docs_paraphrases.<locals>.<lambda>)filterr   r   r\   r   rZ   r   process_docs_paraphrases`   s   r`   c                 C   r
   )Nc                 S   s$   t | d | d< t | d | d< | S )Nchoice1choice2)r	   r   r   r   r   r\   x   s   z*process_docs_copa_ca.<locals>._process_docr   r_   r   r   r   process_docs_copa_caw   s   
rc   c                 C   s   | S )z&
    # passthrough for efficiency
    r   )r3   r   r   r   rouge1   s   rd   c                 C   s<   t t|  d }t t|  d }td}|j||dd S )z
    Higher is better
    r   r   rouge)predictions
referencesrd   )listzipevaluateloadcompute)r3   refsrD   rouge_scorerr   r   r   
rouge1_agg   s   
ro   )rP   	itertoolsr   rj   'transformers.data.metrics.squad_metricsdatametricsr$   lm_eval.utilsr   r	   r   rB   rF   rT   r`   rc   rd   ro   r   r   r   r   <module>   s    "		