
    Ng                     n    d dl Z d dlZd dlmZ d dlmZ d dlmZ  G d d          Z G d d          Z	dS )	    N)FreqDist)NgramCounter
everygramsc                   X    e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 ZdS )TestNgramCounterzATests for NgramCounter that only involve lookup, no modification.c                     t          d          t          d          g}t          d |D                       | _        t          d |D                       | _        t	          j                    | _        d S )Nabcdegdbec              3   8   K   | ]}t          |d           V  dS )   max_lenNr   .0sents     Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/nltk/test/unit/lm/test_counter.py	<genexpr>z/TestNgramCounter.setup_class.<locals>.<genexpr>   s@       ,
 ,
,0JtQ''',
 ,
 ,
 ,
 ,
 ,
    c              3   8   K   | ]}t          |d           V  dS )   r   Nr   r   s     r   r   z/TestNgramCounter.setup_class.<locals>.<genexpr>   s/      *X*X4:dA+F+F+F*X*X*X*X*X*Xr   )listr   trigram_counterbigram_counterunittestTestCasecase)selftexts     r   setup_classzTestNgramCounter.setup_class   s|    Vd7mm,+ ,
 ,
48,
 ,
 ,
  
  
 +*X*XSW*X*X*XXX%''			r   c                     | j                                         dk    sJ | j                                        dk    sJ d S )N      )r   Nr   r   s    r   test_NzTestNgramCounter.test_N   sH    "$$&&",,,,#%%''2------r   c                     t          | j                  dk    sJ | j        d          t          | j                  dk    sJ d S )Nr   2   r   )lenr   r%   s    r   $test_counter_len_changes_with_lookupz5TestNgramCounter.test_counter_len_changes_with_lookup!   sN    4&''1,,,,B4&''1,,,,,,r   c                 @    | j         d         | j         j        k    sJ d S )N   )r   unigramsr%   s    r    test_ngram_order_access_unigramsz1TestNgramCounter.test_ngram_order_access_unigrams&   s'    "1%)<)EEEEEEEr   c                 $   t          j                    }g d}g d}| j        d         }| j        d         }| j                            ||                                           | j                            ||                                           d S )N)ab)r2   c)eg)r5   d)r6   r2   )r1   )r2   )r6   )r4   r3   )r5   r   r   )r   r   r   r   assertCountEqual
conditions)r   r   expected_trigram_contextsexpected_bigram_contextsbigramstrigramss         r   test_ngram_conditional_freqdistz0TestNgramCounter.test_ngram_conditional_freqdist)   s     ""%
 %
 %
! $T#S#S &q)'*	""#;W=O=O=Q=QRRR	""#<h>Q>Q>S>STTTTTr   c                 n    | j         dg         d         dk    sJ | j         dg         d         dk    sJ d S )Nr1   r2   r,   r3   r   r%   s    r   test_bigram_counts_seen_ngramsz/TestNgramCounter.test_bigram_counts_seen_ngrams:   sH    "C5)#.!3333"C5)#.!333333r   c                 :    | j         dg         d         dk    sJ d S )Nr2   zr   rA   r%   s    r    test_bigram_counts_unseen_ngramsz1TestNgramCounter.test_bigram_counts_unseen_ngrams>   s(    "C5)#.!333333r   c                 ,    | j         d         dk    sJ d S )Nr2   r   rA   r%   s    r   test_unigram_counts_seen_wordsz/TestNgramCounter.test_unigram_counts_seen_wordsA   !    "3'1,,,,,,r   c                 ,    | j         d         dk    sJ d S )NrD   r   rA   r%   s    r   +test_unigram_counts_completely_unseen_wordsz<TestNgramCounter.test_unigram_counts_completely_unseen_wordsD   rH   r   N)__name__
__module____qualname____doc__classmethodr    r&   r*   r.   r?   rB   rE   rG   rJ    r   r   r   r      s        KK( ( [(. . .- - -
F F FU U U"4 4 44 4 4- - -- - - - -r   r   c                       e Zd Zed             Zej                            ddg dg          d             Zd Z	d Z
d Zd	 ZdS )
TestNgramCounterTrainingc                 \    t                      | _        t          j                    | _        d S )N)r   counterr   r   r   r%   s    r   r    z$TestNgramCounterTraining.setup_classI   s!    #~~%''			r   r    Nc                 d    t          |          }d|vsJ |d         t                      k    sJ d S )Nr   r,   )r   r   )r   r   tests      r   test_empty_inputsz*TestNgramCounterTraining.test_empty_inputsN   s;    D!!}}}}Aw(**$$$$$$r   c                     t          d          }t          d |D             g          }|d         rJ |d         rJ | j                            ||d                                                    d S )Nr
   c                     g | ]}|fS rP   rP   )r   ws     r   
<listcomp>zCTestNgramCounterTraining.test_train_on_unigrams.<locals>.<listcomp>V   s     5 5 5!! 5 5 5r   r   r   r,   )r   r   r   r9   keys)r   wordsrT   s      r   test_train_on_unigramsz/TestNgramCounterTraining.test_train_on_unigramsT   sx    V 5 5u 5 5 56771:1:	""5'!*//*;*;<<<<<r   c                 *   g d}ddgddgddgg}t          j        t                    5  t          |g           d d d            n# 1 swxY w Y   t          j        t                    5  t          |g           d d d            d S # 1 swxY w Y   d S )N)Checkthisout!ra   rb   rc   rd   )pytestraises	TypeErrorr   )r   str_sent	list_sents      r   test_train_on_illegal_sentencesz8TestNgramCounterTraining.test_train_on_illegal_sentences\   s!   000v&%F	]9%% 	% 	%($$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ]9%% 	& 	&)%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s#   AA
A
*BBBc                 \    ddg}t          |g          }t          |d                   rJ d S )Nr0   r3   r6   r   )r   bool)r   bigram_sentrT   s      r   test_train_on_bigramsz.TestNgramCounterTraining.test_train_on_bigramsf   s9    !:.}--
#######r   c                 t   g d}t          |g          }dg}ddg}dg}| j                            ||d                                                    | j                            ||d                                                    | j                            ||d                                                    d S )	N)r0   rl   )r4   fr5   )hrr   r7   r8   )r4   rq   r,   r   r   )r   r   r9   r]   )r   
mixed_sentrT   r-   bigram_contextstrigram_contextss         r   test_train_on_mixz*TestNgramCounterTraining.test_train_on_mixk   s    FFF

|,,5!6*&<	""8WQZ__->->???	""?GAJOO4E4EFFF	""#3WQZ__5F5FGGGGGr   )rK   rL   rM   rO   r    re   markparametrizerX   r_   rj   ro   rv   rP   r   r   rR   rR   H   s        ( ( [( [Vb"d^44% % 54%
= = =& & &$ $ $
	H 	H 	H 	H 	Hr   rR   )
r   re   nltkr   nltk.lmr   	nltk.utilr   r   rR   rP   r   r   <module>r|      s                                   4- 4- 4- 4- 4- 4- 4- 4-n,H ,H ,H ,H ,H ,H ,H ,H ,H ,Hr   