o
    Ph                     @   sh   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 G dd dZ
ded	ed
e	eef fddZdS )z
Evaluating strings similarity
    )Counter)sqrt)
itemgetter)ListTuplec                   @   s2   e Zd Zd	dededdfddZdefddZdS )
StringVectorNstringdatareturnc                 C   sn   t || _|d ur|d | _|d | _|d | _d S t| j| _t| j| _ttdd | j D | _d S )Nslcc                 s   s    | ]}|d  V  qdS )   N ).0
char_countr   r   W/var/www/html/env_mimamsha/lib/python3.10/site-packages/translatepy/utils/similarity.py	<genexpr>   s    z(StringVector.__init__.<locals>.<genexpr>)	strr   setlengthcounterr   r   sumvalues)selfr   r	   r   r   r   __init__   s   


"zStringVector.__init__c                 C   s
   d| j  S )NzVector: )r   )r   r   r   r   __repr__   s   
zStringVector.__repr__N)__name__
__module____qualname__r   dictr   r   r   r   r   r   r      s    r   search_sourcequeryr
   c                    s   i }t | | D ]'t fddj jD }j j }|dkr'dn|| }||< qt| tddd }|j|| fS )z'
    Finds the most similar string
    c                 3   s$    | ]}j |  j |  V  qd S r   )r   )r   	characterInputQueryVectorvectorr   r   r   $   s   " zfuzzy_search.<locals>.<genexpr>r      )key)	r   r   r   intersectionr   maxitemsr   r   )r"   r#   results_dict	summationr   
similarity
bestResultr   r%   r   fuzzy_search   s   "
r1   N)__doc__collectionsr   mathr   operatorr   translatepy.utils.annotationsr   r   r   r   floatr1   r   r   r   r   <module>   s    "