o
    rZhi                     @   s   d dl Z d dlZd dlmZ zd dlZW n	 ey   Y nw dadddZdd Zdd Z	d	d
 Z
dd Zdd ZedkrEe  e  dS dS )    N)find_binaryc                 C   s   t d| dgdgddad S )NZtadmZTADMzhttp://tadm.sf.net)Zenv_varsZbinary_namesurl)r   	_tadm_bin)bin r   A/var/www/auris/lib/python3.10/site-packages/nltk/classify/tadm.pyconfig_tadm   s   
r   c           
   	   C   sz   |  }| D ]4\}}dt| }|| |D ]"}|||}dt||kt|ddd |D f }	||	 qqdS )aT  
    Generate an input file for ``tadm`` based on the given corpus of
    classified tokens.

    :type train_toks: list(tuple(dict, str))
    :param train_toks: Training data, represented as a list of
        pairs, the first member of which is a feature dictionary,
        and the second of which is a classification label.
    :type encoding: TadmEventMaxentFeatureEncoding
    :param encoding: A feature encoding, used to convert featuresets
        into feature vectors.
    :type stream: stream
    :param stream: The stream to which the ``tadm`` input file should be
        written.
    z%d
z	%d %d %s
 c                 s   s    | ]}d | V  qdS )z%d %dNr   ).0ur   r   r   	<genexpr>9   s    z"write_tadm_file.<locals>.<genexpr>N)labelslenwriteencodeintjoin)
Z
train_toksencodingstreamr   Z
featuresetlabelZlength_lineZknown_labelvliner   r   r   write_tadm_file   s   

r   c                 C   s,   g }| D ]}| t|  qt|dS )z
    Given the stdout output generated by ``tadm`` when training a
    model, return a ``numpy`` array containing the corresponding weight
    vector.
    d)appendfloatstripnumpyarray)Z	paramfileweightsr   r   r   r   parse_tadm_weights>   s   r    c                 C   sj   t | tr	tdtdu rt  tg|  }tj|tjd}|	 \}}|j
dkr3t  t| tddS )z<
    Call the ``tadm`` binary with the given arguments.
    z args should be a list of stringsN)stdoutr   ztadm command failed!)
isinstancestr	TypeErrorr   r   
subprocessPopensysr!   communicate
returncodeprintOSError)argscmdpr!   stderrr   r   r   	call_tadmJ   s   


r0   c                  C   s&   ddl m}  ddlm} || j}d S )Nr   )TadmMaxentClassifier)
names_demo)nltk.classify.maxentr1   Znltk.classify.utilr2   train)r1   r2   Z
classifierr   r   r   r2   _   s   r2   c                  C   s   dd l } ddlm} dddddfdddddfddddd	dfg}||}t||| j t  t| D ]}td
|	||f  q7t  d S )Nr   )TadmEventMaxentFeatureEncoding   )f0f1f3A)r7   f2f4B   )r7   r;   r9   r<   z	%s --> %d)
r'   r3   r5   r4   r   r!   r*   rangelengthZdescribe)r'   r5   tokensr   ir   r   r   encoding_demof   s   

rC   __main__)N)r%   r'   Znltk.internalsr   r   ImportErrorr   r   r   r    r0   r2   rC   __name__r   r   r   r   <module>   s&   
"
