
    kh              	          d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ 	 ej                  j!                  ej                  j#                  e            Z e
ej                  j)                  ed            Zd	 Z G d
 de      Z G d de      Z e	ej                  j)                  ed      ej                  j)                  ed      ej                  j)                  ed      ej                  j)                  ed      d      Z eedd      Z eej                  j)                  ed      dddd ej2                  d      Zd Zd Zd Zd%dZd&d Zd! Z d" Z!d# Z"d'd$Z#y#  dZY xY w)(zWThis file is based on pattern.en. See the bundled NOTICE file for
license information.
    N)CHUNKPENNPNPPOS	UNIVERSALWORDLexiconSpelling)Parser)	Sentiment zen-spelling.txt)pathc                     | D ]e  }|d   |d   |d   }}}|dk(  rt        |      }|j                  d      rt        |t              xs |}|j	                  |j                                g | S )zAnnotates the tokens with lemmata for plural nouns and conjugated verbs,
    where each token is a [word, part-of-speech] list.
    r      NNS)VBMD)singularize
startswith	conjugate
INFINITIVEappendlower)tokenstokenwordposlemmas        P/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/textblob/en/__init__.pyfind_lemmatar       ss      $ 8U1XuQx5c%<%E>>,'dJ/74EU[[]#$ M    c                       e Zd Zd Zd Zy)r   c                     t        |      S N)r    selfr   kwargss      r   r    zParser.find_lemmata%   s    F##r!   c                     |j                  d      t        d fv r|j                  dd        |j                  d      t        k(  r|j                  dd        t	        j
                  | |fi |S )Ntagsetmapc                 
    | |fS r$    r   tags     r   <lambda>z"Parser.find_tags.<locals>.<lambda>*   s
     r!   c                     t        | |      S r$   )penntreebank2universalr-   s     r   r/   z"Parser.find_tags.<locals>.<lambda>-   s    *@*L r!   )getr   
setdefaultr   _Parser	find_tagsr%   s      r   r5   zParser.find_tags(   sg    ::hD$</e%DE::h9,L   v888r!   N)__name__
__module____qualname__r    r5   r,   r!   r   r   r   $   s    $9r!   r   c                       e Zd ZddZy)r   Nc                 ,   t        j                  | |       |s|t        t        j	                  |             D ]Z  \  }}d|v s|j                  d      r|d d dz   }|j                  d      r|d d }|d   \  }}}| j                  |dz   d|||       \ y y )	NJJyilelyRB)
_Sentimentloadlistdictitemsendswithannotate)r&   r   wr   psr>   s          r   rD   zSentiment.load3   s    d#tzz$/0 ;33;zz#crFSLzz$'crF!$iGAq!MM!d(D!Q:; r!   r$   )r6   r7   r8   rD   r,   r!   r   r   r   2   s    ;r!   r   zen-lexicon.txtzen-morphology.txtzen-context.txtzen-entities.txten)r   
morphologycontextentitieslanguage)NNNNPCD)lexicondefaultrQ   zen-sentiment.xml
wordnet_id)nonotzn'tnever)rB   c                 $    | j                  d      S )NrA   )rH   rJ   s    r   r/   r/   O   s    qzz$' r!   )r   synset	negations	modifiersmodifier	tokenizerrQ   c                 F    t        j                  t        |       g|i |S )zPReturns a list of sentences, where punctuation marks have been split from words.)parserfind_tokensstrrL   argsr'   s      r   tokenizerh   U   s!    c!f6t6v66r!   c                 F    t        j                  t        |       g|i |S )zReturns a tagged str string.)rc   parsere   rf   s      r   rj   rj   Z   s    <<A0000r!   c                 D    t        t        t        |       g|i |      S )z,Returns a parsed Text from the given string.)Textrj   re   rf   s      r   	parsetreerm   _   s     c!f.t.v.//r!   c                 \    |t         t        t        t        g}t	        t        |       |      S )z3Returns a parsed Text from the given parsed string.)r   r   r   r   rl   re   )rL   r   s     r   splitro   d   s&    }sE3'Ar!   c           	          g }t        | |dddd|      j                         D ]"  }|D ]  }|j                  |d   |d   f        $ |S )z<Returns a list of (token, tag)-tuples from the given string.TFr   r   )rj   ro   r   )rL   rh   encodingtagssentencer   s         r   r.   r.   k   s_    D!XtUE5(KQQS . 	.EKKq58,-	.. Kr!   c                 ,    t         j                  |       S )zDReturns a list of (word, confidence)-tuples of spelling corrections.)spellingsuggestr\   s    r   rv   rv   t   s    Ar!   c                 2    t        t        |       fi |d   S )zGReturns the sentence polarity (positive/negative) between -1.0 and 1.0.r   	sentimentre   rL   r'   s     r   polarityr{   y       SV&v&q))r!   c                 2    t        t        |       fi |d   S )zMReturns the sentence subjectivity (objective/subjective) between 0.0 and 1.0.r   rx   rz   s     r   subjectivityr~   ~   r|   r!   c                 2    t        t        |       fi ||k\  S )zTReturns True if the given sentence has a positive sentiment (polarity >= threshold).)r{   re   )rL   	thresholdr'   s      r   positiver      s    CF%f%22r!   r$   )Tzutf-8)g?)$__doc__ostextblob._textr   r   r   r   r   r   r	   r
   r   r4   r   rC   r   dirnameabspath__file__MODULEjoinru   r    rU   rc   rd   ry   rh   rj   rm   ro   r.   rv   r{   r~   r   r,   r!   r   <module>r      sV   
 T T T , 2WW__RWW__X67F f.?@A
 9W 9;
 ; 	f.	/ww||F$78GGLL!12WW\\&"34 
)<t	L	f0	1+'  	7
1
0

*
*
3oFs   4E+ +E2