
    g                         d dl mZ ddZy)    )wordnetNc                     t        |       |t        j                  ||      }|r,|D cg c]!  }t        |j	                               |k(  s |# }}|syt        fd|D              \  }}|S c c}w )a  Return a synset for an ambiguous word in a context.

    :param iter context_sentence: The context sentence where the ambiguous word
         occurs, passed as an iterable of words.
    :param str ambiguous_word: The ambiguous word that requires WSD.
    :param str pos: A specified Part-of-Speech (POS).
    :param iter synsets: Possible synsets of the ambiguous word.
    :param str lang: WordNet language.
    :return: ``lesk_sense`` The Synset() object with the highest signature overlaps.

    This function is an implementation of the original Lesk algorithm (1986) [1].

    Usage example::

        >>> lesk(['I', 'went', 'to', 'the', 'bank', 'to', 'deposit', 'money', '.'], 'bank', 'n')
        Synset('savings_bank.n.02')

    [1] Lesk, Michael. "Automatic sense disambiguation using machine
    readable dictionaries: how to tell a pine cone from an ice cream
    cone." Proceedings of the 5th Annual International Conference on
    Systems Documentation. ACM, 1986.
    https://dl.acm.org/citation.cfm?id=318728
    N)langc              3      K   | ]<  }t        j                  |j                         j                                     |f > y w)N)lenintersection
definitionsplit).0sscontexts     =/var/www/openai/venv/lib/python3.12/site-packages/nltk/wsd.py	<genexpr>zlesk.<locals>.<genexpr>0   s9      KRRW!!"--/"7"7"9:	;R@7s   AA)setr   synsetsstrposmax)	context_sentenceambiguous_wordr   r   r   r   _senser   s	           @r   leskr      s{    2 "#G//.t<
 '@"3rvvx=C+?2@ KR HAu L As   !A0A0)NNeng)nltk.corpusr   r        r   <module>r      s     'r   