o
    LÎµiA
  ã                   @   s(   d dl Z G dd„ dƒZG dd„ dƒZdS )é    Nc                   @   s   e Zd ZdZdd„ ZdS )Ú
ParsedDumpaJ  
    CRFsuite model parameters. Objects of this type are returned by
    :meth:`pycrfsuite.Tagger.info()` method.

    Attributes
    ----------

    transitions : dict
        ``{(from_label, to_label): weight}`` dict with learned transition weights

    state_features : dict
        ``{(attribute, label): weight}`` dict with learned ``(attribute, label)`` weights

    header : dict
        Metadata from the file header

    labels : dict
        ``{name: internal_id}`` dict with model labels

    attributes : dict
        ``{name: internal_id}`` dict with known attributes

    c                 C   s"   i | _ i | _i | _i | _i | _d S ©N)ÚheaderÚlabelsÚ
attributesÚtransitionsÚstate_features©Úself© r   úJ/home/ubuntu/.local/lib/python3.10/site-packages/pycrfsuite/_dumpparser.pyÚ__init__   s
   
zParsedDump.__init__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      s    r   c                   @   sH   e Zd Z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 )ÚCRFsuiteDumpParserz¹
    A hack: parser for `crfsuite dump` results.

    Obtaining coefficients "the proper way" is quite hard otherwise
    because in CRFsuite they are hidden in private structures.
    c                 C   s   d | _ tƒ | _d S r   )Ústater   Úresultr	   r   r   r   r   -   s   zCRFsuiteDumpParser.__init__c                 C   s`   |  ¡  d¡}|sd S t d|¡}|r| d¡| _d S |dkr$d | _d S t| d| j ƒ|ƒ d S )Nz
z=(FILEHEADER|LABELS|ATTRIBUTES|TRANSITIONS|STATE_FEATURES) = {é   Ú}zparse_%s)ÚlstripÚrstripÚreÚmatchÚgroupr   Úgetattr©r
   ÚlineÚmr   r   r   Úfeed1   s   ÿ
zCRFsuiteDumpParser.feedc                 C   ó(   t  d|¡}| d¡| jj| d¡< d S )Nz(\w+): (.*)é   r   )r   r   r   r   r   r   r   r   r   Úparse_FILEHEADERA   ó   z#CRFsuiteDumpParser.parse_FILEHEADERc                 C   r!   ©Nz(\d+): (.*)r   r"   )r   r   r   r   r   r   r   r   r   Úparse_LABELSE   r$   zCRFsuiteDumpParser.parse_LABELSc                 C   r!   r%   )r   r   r   r   r   r   r   r   r   Úparse_ATTRIBUTESI   r$   z#CRFsuiteDumpParser.parse_ATTRIBUTESc                 C   s`   t  d|¡}| d¡| d¡}}|| jjv sJ ‚|| jjv s!J ‚t| d¡ƒ| jj||f< d S ©Nz&\(\d+\) (.+) --> (.+): ([+-]?\d+\.\d+)r   r"   é   )r   r   r   r   r   Úfloatr   )r
   r   r   Úfrom_Úto_r   r   r   Úparse_TRANSITIONSM   ó
   z$CRFsuiteDumpParser.parse_TRANSITIONSc                 C   s`   t  d|¡}| d¡| d¡}}|| jjv sJ ‚|| jjv s!J ‚t| d¡ƒ| jj||f< d S r(   )r   r   r   r   r   r   r*   r   )r
   r   r   ÚattrÚlabelr   r   r   Úparse_STATE_FEATUREST   r.   z'CRFsuiteDumpParser.parse_STATE_FEATURESN)r   r   r   r   r   r    r#   r&   r'   r-   r1   r   r   r   r   r   %   s    r   )r   r   r   r   r   r   r   Ú<module>   s    !