§
    �zIfê;  ã                   óH  — d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZmZ d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d d„Zd„ Zd!d„Z eddg¦  «        Z eg d¢¦  «        Z d„ Z!e"dk    r e¦   «          dS dS )"é    N)Útreebank)ÚBrillTaggerTrainerÚRegexpTaggerÚUnigramTagger)ÚPosÚWord)ÚTemplateÚ
error_listc                  ó"   — t          ¦   «          dS )z„
    Run a demo with defaults. See source comments for details,
    or docstrings of any of the more specific demo_* functions.
    N©Úpostag© ó    úA/var/www/piapp/venv/lib/python3.11/site-packages/nltk/tbl/demo.pyÚdemor      s   € õ
 �H„H€H€H€Hr   c                  ó&   — t          d¬¦  «         dS )úN
    Exemplify repr(Rule) (see also str(Rule) and Rule.format("verbose"))
    Úrepr©Ú
ruleformatNr   r   r   r   Údemo_repr_rule_formatr      s   € õ �fÐÑÔÐÐÐr   c                  ó&   — t          d¬¦  «         dS )r   Ústrr   Nr   r   r   r   Údemo_str_rule_formatr   $   s   € õ �eÐÑÔÐÐÐr   c                  ó&   — t          d¬¦  «         dS )z*
    Exemplify Rule.format("verbose")
    Úverboser   Nr   r   r   r   Údemo_verbose_rule_formatr   +   s   € õ �iÐ Ñ Ô Ð Ð Ð r   c                  ó`   — t          t          t          g d¢¦  «        ¦  «        g¬¦  «         dS )a¾  
    The feature/s of a template takes a list of positions
    relative to the current word where the feature should be
    looked for, conceptually joined by logical OR. For instance,
    Pos([-1, 1]), given a value V, will hold whenever V is found
    one step to the left and/or one step to the right.

    For contiguous ranges, a 2-arg form giving inclusive end
    points can also be used: Pos(-3, -1) is the same as the arg
    below.
    )éýÿÿÿéþÿÿÿéÿÿÿÿ©Ú	templatesN)r   r	   r   r   r   r   Údemo_multiposition_featurer$   2   s2   € õ •h�s < < <Ñ0Ô0Ñ1Ô1Ð2Ð3Ñ3Ô3Ð3Ð3Ð3r   c            	      ó~   — t          t          t          dg¦  «        t          ddg¦  «        ¦  «        g¬¦  «         dS )z8
    Templates can have more than a single feature.
    r   r    r!   r"   N)r   r	   r   r   r   r   r   Údemo_multifeature_templater&   A   s:   € õ •h�t Q C™yœy­#¨r°2¨h©-¬-Ñ8Ô8Ð9Ð:Ñ:Ô:Ð:Ð:Ð:r   c                  ó(   — t          dd¬¦  «         dS )ah  
    Show aggregate statistics per template. Little used templates are
    candidates for deletion, much used templates may possibly be refined.

    Deleting unused templates is mostly about saving time and/or space:
    training is basically O(T) in the number of templates T
    (also in terms of memory usage, which often will be the limiting factor).
    T)Úincremental_statsÚtemplate_statsNr   r   r   r   Údemo_template_statisticsr*   H   s   € õ ˜T°$Ð7Ñ7Ô7Ð7Ð7Ð7r   c                  ó>  — t          j        g d¢ddgd¬¦  «        } t          j        g d¢ddgd¬¦  «        }t          t	          j        | |gd¬	¦  «        ¦  «        }t          d
                     t          |¦  «        ¦  «        ¦  «         t          |dd¬¦  «         dS )a	  
    Template.expand and Feature.expand are class methods facilitating
    generating large amounts of templates. See their documentation for
    details.

    Note: training with 500 templates can easily fill all available
    even on relatively small corpora
    )r!   r   é   r,   é   F)Úexcludezero)r    r!   r   r,   T)r,   é   )Úcombinationsz8Generated {} templates for transformation-based learning)r#   r(   r)   N)	r   Úexpandr   Úlistr	   ÚprintÚformatÚlenr   )ÚwordtplsÚtagtplsr#   s      r   Údemo_generated_templatesr8   T   s¬   € õ Œ{˜:˜:˜:¨¨1 v¸5ÐAÑAÔA€HÝŒj˜˜˜¨!¨Q¨¸TÐBÑBÔB€GÝ•X”_ h°Ð%8ÀvÐNÑNÔNÑOÔO€IÝ	ØB×IÒIÝ�	‰NŒNñ	
ô 	
ñô ð õ
 �Y°$ÀtÐLÑLÔLÐLÐLÐLr   c                  ó*   — t          ddd¬¦  «         dS )z‚
    Plot a learning curve -- the contribution on tagging accuracy of
    the individual rules.
    Note: requires matplotlib
    Tzlearningcurve.png)r(   Úseparate_baseline_dataÚlearning_curve_outputNr   r   r   r   Údemo_learning_curver<   h   s.   € õ ØØ#Ø1ðñ ô ð ð ð r   c                  ó&   — t          d¬¦  «         dS )zW
    Writes a file with context for each erroneous word after tagging testing data
    z
errors.txt)Úerror_outputNr   r   r   r   Údemo_error_analysisr?   u   s   € õ ˜Ð%Ñ%Ô%Ð%Ð%Ð%r   c                  ó&   — t          d¬¦  «         dS )zm
    Serializes the learned tagger to a file in pickle format; reloads it
    and validates the process.
    z
tagger.pcl)Úserialize_outputNr   r   r   r   Údemo_serialize_taggerrB   |   s   € õ
 ˜LÐ)Ñ)Ô)Ð)Ð)Ð)r   c                  ó*   — t          ddd¬¦  «         dS )z˜
    Discard rules with low accuracy. This may hurt performance a bit,
    but will often produce rules which are more interesting read to a human.
    i¸  g¸…ëQ¸î?é
   )Ú	num_sentsÚmin_accÚ	min_scoreNr   r   r   r   Údemo_high_accuracy_rulesrH   „   s   € õ
 �T 4°2Ð6Ñ6Ô6Ð6Ð6Ð6r   éè  é,  r/   çš™™™™™é?Fr   c           	      ó®	  — |pt           }| €ddlm}m}  |¦   «         } t	          |||||¦  «        \  }}}}|rÝt
          j                             |¦  «        spt          ||¬¦  «        }t          |d¦  «        5 }t          j        ||¦  «         ddd¦  «         n# 1 swxY w Y   t          d                     |¦  «        ¦  «         t          |¦  «        5 }t          j        |¦  «        }t          d|› �¦  «         ddd¦  «         n# 1 swxY w Y   n t          ||¬¦  «        }t          d¦  «         |r5t          d	                     |                     |¦  «        ¦  «        ¦  «         t!          j        ¦   «         }t#          || ||	¬
¦  «        }t          d¦  «         |                     ||||¦  «        }t          dt!          j        ¦   «         |z
  d›d�¦  «         |r%t          d|                     |¦  «        z  ¦  «         |dk    r`t          d¦  «         t'          |                     ¦   «         d¦  «        D ].\  }}t          |d›d|                     |	¦  «        d›�¦  «         Œ/|
r›t          d¦  «         |                     ||¦  «        \  } }!t          d¦  «         |st          d¦  «         |                     ¦   «         }"|r|                     |!¦  «         |r%t1          ||!|"|¬¦  «         t          d|› �¦  «         n:t          d¦  «         |                     |¦  «        } |r|                     ¦   «          |�žt          |d¦  «        5 }#|#                     d|z  ¦  «         |#                     d                     t9          || ¦  «        ¦  «                             d¦  «        dz   ¦  «         ddd¦  «         n# 1 swxY w Y   t          d|› �¦  «         |�î|                     |¦  «        } t          |d¦  «        5 }t          j        ||¦  «         ddd¦  «         n# 1 swxY w Y   t          d|› �¦  «         t          |¦  «        5 }t          j        |¦  «        }$ddd¦  «         n# 1 swxY w Y   t          d|› �¦  «         |                     |¦  «        }%| |%k    rt          d ¦  «         dS t          d!¦  «         dS dS )"a’
  
    Brill Tagger Demonstration
    :param templates: how many sentences of training and testing data to use
    :type templates: list of Template

    :param tagged_data: maximum number of rule instances to create
    :type tagged_data: C{int}

    :param num_sents: how many sentences of training and testing data to use
    :type num_sents: C{int}

    :param max_rules: maximum number of rule instances to create
    :type max_rules: C{int}

    :param min_score: the minimum score for a rule in order for it to be considered
    :type min_score: C{int}

    :param min_acc: the minimum score for a rule in order for it to be considered
    :type min_acc: C{float}

    :param train: the fraction of the the corpus to be used for training (1=all)
    :type train: C{float}

    :param trace: the level of diagnostic tracing output to produce (0-4)
    :type trace: C{int}

    :param randomize: whether the training data should be a random subset of the corpus
    :type randomize: C{bool}

    :param ruleformat: rule output format, one of "str", "repr", "verbose"
    :type ruleformat: C{str}

    :param incremental_stats: if true, will tag incrementally and collect stats for each rule (rather slow)
    :type incremental_stats: C{bool}

    :param template_stats: if true, will print per-template statistics collected in training and (optionally) testing
    :type template_stats: C{bool}

    :param error_output: the file where errors will be saved
    :type error_output: C{string}

    :param serialize_output: the file where the learned tbl tagger will be saved
    :type serialize_output: C{string}

    :param learning_curve_output: filename of plot of learning curve(s) (train and also test, if available)
    :type learning_curve_output: C{string}

    :param learning_curve_take: how many rules plotted
    :type learning_curve_take: C{int}

    :param baseline_backoff_tagger: the file where rules will be saved
    :type baseline_backoff_tagger: tagger

    :param separate_baseline_data: use a fraction of the training data exclusively for training baseline
    :type separate_baseline_data: C{bool}

    :param cache_baseline_tagger: cache baseline tagger to this file (only interesting as a temporary workaround to get
                                  deterministic output from the baseline unigram tagger between python versions)
    :type cache_baseline_tagger: C{string}


    Note on separate_baseline_data: if True, reuse training data both for baseline and rule learner. This
    is fast and fine for a demo, but is likely to generalize worse on unseen data.
    Also cannot be sensibly used for learning curves on training data (the baseline will be artificially high).
    Nr   )Úbrill24Údescribe_template_sets)ÚbackoffÚwz)Trained baseline tagger, pickled it to {}zReloaded pickled tagger from zTrained baseline taggerz!    Accuracy on test set: {:0.4f}r   zTraining tbl tagger...zTrained tbl tagger in z0.2fz secondsz    Accuracy on test set: %.4fr,   z
Learned rules: Ú4dú ÚszJIncrementally tagging the test data, collecting individual rule statisticsz    Rule statistics collectedzbWARNING: train_stats asked for separate_baseline_data=True; the baseline will be artificially high)Útakez Wrote plot of learning curve to zTagging the test datazErrors for Brill Tagger %r

ú
zutf-8z)Wrote tagger errors including context to zWrote pickled tagger to z4Reloaded tagger tried on test set, results identicalz;PROBLEM: Reloaded tagger gave different results on test set)ÚREGEXP_TAGGERÚnltk.tag.brillrM   rN   Ú_demo_prepare_dataÚosÚpathÚexistsr   ÚopenÚpickleÚdumpr3   r4   ÚloadÚaccuracyÚtimer   ÚtrainÚ	enumerateÚrulesÚbatch_tag_incrementalÚtrain_statsÚprint_template_statisticsÚ
_demo_plotÚ	tag_sentsÚwriteÚjoinr
   Úencode)&r#   Útagged_datarE   Ú	max_rulesrG   rF   rb   ÚtraceÚ	randomizer   r(   r)   r>   rA   r;   Úlearning_curve_takeÚbaseline_backoff_taggerr:   Úcache_baseline_taggerrM   rN   Útraining_dataÚbaseline_dataÚ	gold_dataÚtesting_dataÚbaseline_taggerÚprint_rulesÚtbrillÚtrainerÚbrill_taggerÚrulenoÚruleÚ
taggedtestÚ	teststatsÚ
trainstatsÚfÚbrill_tagger_reloadedÚtaggedtest_reloadeds&                                         r   r   r   Œ   sÚ  € ðp 6ÐF½ÐØÐØBÐBÐBÐBÐBÐBÐBÐBð
 �G‘I”Iˆ	Ý>PØ�U˜I yÐ2Hñ?ô ?Ñ;€]�M 9¨lð ð )ÝŒw�~Š~Ð3Ñ4Ô4ð 
	Ý+ØÐ'>ðñ ô ˆOõ Ð+¨SÑ1Ô1ð :°[Ý”˜O¨[Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :åØ;×BÒBØ)ñô ñô ð õ
 Ð'Ñ(Ô(ð 	K¨KÝ$œk¨+Ñ6Ô6ˆOÝÐIÐ2GÐIÐIÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Køõ (¨Ð?VÐWÑWÔWˆÝÐ'Ñ(Ô(Ð(Øð 
ÝØ/×6Ò6Ø×(Ò(¨Ñ3Ô3ñô ñ	
ô 	
ð 	
õ ŒY‰[Œ[€FÝ Ø˜ E°jðñ ô €Gõ 
Ð
"Ñ#Ô#Ð#Ø—=’= °	¸9ÀgÑNÔN€LÝ	Ð
F¥4¤9¡;¤;°Ñ#7Ð
FÐ
FÐ
FÐ
FÑGÔGÐGØð SÝÐ.°×1FÒ1FÀyÑ1QÔ1QÑQÑRÔRÐRð �‚z€zÝÐ!Ñ"Ô"Ð"Ý'¨×(:Ò(:Ñ(<Ô(<¸aÑ@Ô@ð 	>ð 	>‰NˆV�TÝ�VÐ<Ð<Ð< §¢¨ZÑ!8Ô!8Ð<Ð<Ð<Ñ=Ô=Ð=Ð=ð ð 5ÝØXñ	
ô 	
ð 	
ð #/×"DÒ"DØ˜)ñ#
ô #
Ñˆ�Yõ 	Ð-Ñ.Ô.Ð.Ø%ð 	Ýð,ñô ð ð "×-Ò-Ñ/Ô/ˆ
Øð 	>Ø×2Ò2°9Ñ=Ô=Ð=Ø ð 	NÝØ% y°*ÐCVðñ ô ð õ ÐLÐ5JÐLÐLÑMÔMÐMøåÐ%Ñ&Ô&Ð&Ø!×+Ò+¨LÑ9Ô9ˆ
Øð 	5Ø×2Ò2Ñ4Ô4Ð4ð ÐÝ�, Ñ$Ô$ð 	Y¨Ø�GŠGÐ4Ð7GÑGÑHÔHÐHØ�GŠG�D—I’I�j¨°JÑ?Ô?Ñ@Ô@×GÒGÈÑPÔPÐSWÑWÑXÔXÐXð	Yð 	Yð 	Yñ 	Yô 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yøøøð 	Yð 	Yð 	Yð 	Yõ 	ÐH¸,ÐHÐHÑIÔIÐIð Ð#Ø!×+Ò+¨LÑ9Ô9ˆ
ÝÐ" CÑ(Ô(ð 	3¨KÝŒK˜ kÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3åÐ;Ð)9Ð;Ð;Ñ<Ô<Ð<ÝÐ"Ñ#Ô#ð 	= {Ý$*¤K°Ñ$<Ô$<Ð!ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=åÐ@Ð.>Ð@Ð@ÑAÔAÐAØ*×4Ò4°\ÑBÔBÐØÐ,Ò,Ð,ÝÐHÑIÔIÐIÐIÐIåÐOÑPÔPÐPÐPÐPð $Ð#s[   Á8BÂBÂ!BÃ'D	Ä	DÄDÍA%OÏOÏOÐP.Ð.P2Ð5P2ÑQ;Ñ;Q?ÒQ?c                 óâ  — | €"t          d¦  «         t          j        ¦   «         } |�t          | ¦  «        |k    rt          | ¦  «        }|r5t	          j        t          | ¦  «        ¦  «         t	          j        | ¦  «         t          ||z  ¦  «        }| d |…         }| ||…         }d„ |D ¦   «         }|s|}	n&t          |¦  «        dz  }
|d |
…         ||
d …         }}	t          |¦  «        \  }}t          |¦  «        \  }}t          |	¦  «        \  }}t          d|d›d|d›d�¦  «         t          d|d›d|d›d�¦  «         t          d	 	                    |||rd
nd¦  «        ¦  «         ||	||fS )Nz%Loading tagged data from treebank... c                 ó&   — g | ]}d „ |D ¦   «         ‘ŒS )c                 ó   — g | ]
}|d          ‘ŒS )r   r   )Ú.0Úts     r   ú
<listcomp>z1_demo_prepare_data.<locals>.<listcomp>.<listcomp>a  s   € Ð(Ð(Ð(˜a�Q�q”TÐ(Ð(Ð(r   r   )rˆ   Úsents     r   rŠ   z&_demo_prepare_data.<locals>.<listcomp>a  s'   € Ð?Ð?Ð?¨TÐ(Ð( 4Ð(Ñ(Ô(Ð?Ð?Ð?r   r/   zRead testing data (Údz sents/z wds)zRead training data (z-Read baseline data ({:d} sents/{:d} wds) {:s}Ú z[reused the training set])
r3   r   Útagged_sentsr5   ÚrandomÚseedÚshuffleÚintÚcorpus_sizer4   )rm   rb   rE   rp   r:   Úcutoffrt   rv   rw   ru   Ú	bl_cutoffÚ	trainseqsÚtraintokensÚtestseqsÚ
testtokensÚbltrainseqsÚbltraintokenss                    r   rX   rX   Q  sÏ  € ð
 ÐÝÐ5Ñ6Ô6Ð6ÝÔ+Ñ-Ô-ˆØÐ�C Ñ,Ô,°	Ò9Ð9Ý˜Ñ$Ô$ˆ	Øð $ÝŒ•C˜Ñ$Ô$Ñ%Ô%Ð%ÝŒ�{Ñ#Ô#Ð#Ý�˜UÑ"Ñ#Ô#€FØ   Ô(€MØ˜F 9Ð,Ô-€IØ?Ð?°YÐ?Ñ?Ô?€LØ!ð 
Ø%ˆˆå˜Ñ&Ô&¨!Ñ+ˆ	à˜*˜9˜*Ô%Ø˜)˜*˜*Ô%ð &ˆõ  +¨=Ñ9Ô9Ñ€Y�Ý(¨Ñ6Ô6Ñ€XˆzÝ#.¨}Ñ#=Ô#=Ñ €[�-Ý	Ð
F Ð
FÐ
FÐ
F°:Ð
FÐ
FÐ
FÐ
FÑGÔGÐGÝ	Ð
I Ð
IÐ
IÐ
I°[Ð
IÐ
IÐ
IÐ
IÑJÔJÐJÝ	Ø7×>Ò>ØØØ(ÐIˆBˆBÐ.Iñ	
ô 	
ñô ð ð ˜=¨)°\ÐBÐBr   c                 ó  ‡‡— ‰d         g}‰d         D ] }|                      |d         |z
  ¦  «         Œ!ˆfd„|d |…         D ¦   «         }‰d         g}‰d         D ] }|                      |d         |z
  ¦  «         Œ!ˆfd„|d |…         D ¦   «         }dd lm} t          t	          t          |¦  «        ¦  «        ¦  «        }|                     ||||¦  «         |                     g d¢¦  «         |                     | ¦  «         d S )NÚinitialerrorsÚ
rulescoresr!   c                 ó,   •— g | ]}d |‰d         z  z
  ‘ŒS ©r,   Ú
tokencountr   )rˆ   Úxr€   s     €r   rŠ   z_demo_plot.<locals>.<listcomp>}  s(   ø€ ÐKÐKÐK°Q��Q˜ <Ô0Ñ0Ñ0ÐKÐKÐKr   c                 ó,   •— g | ]}d |‰d         z  z
  ‘ŒS r    r   )rˆ   r¢   r�   s     €r   rŠ   z_demo_plot.<locals>.<listcomp>‚  s(   ø€ ÐNÐNÐN°q�!�a˜* \Ô2Ñ2Ñ2ÐNÐNÐNr   r   )NNNg      ð?)	ÚappendÚmatplotlib.pyplotÚpyplotr2   Úranger5   ÚplotÚaxisÚsavefig)	r;   r€   r�   rT   Ú	testcurveÚ	rulescoreÚ
traincurveÚpltÚrs	    ``      r   rh   rh   y  sA  øø€ Ø˜?Ô+Ð,€IØ˜|Ô,ð 4ð 4ˆ	Ø×Ò˜ 2œ¨Ñ2Ñ3Ô3Ð3Ð3ØKÐKÐKÐK¸)ÀEÀTÀEÔ:JÐKÑKÔK€Ià˜_Ô-Ð.€JØ Ô-ð 6ð 6ˆ	Ø×Ò˜* Rœ.¨9Ñ4Ñ5Ô5Ð5Ð5ØNÐNÐNÐN¸JÀuÈÀuÔ<MÐNÑNÔN€Jà#Ð#Ð#Ð#Ð#Ð#å�U•3�y‘>”>Ñ"Ô"Ñ#Ô#€AØ‡H‚HˆQ�	˜1˜jÑ)Ô)Ð)Ø‡H‚HÐ$Ð$Ð$Ñ%Ô%Ð%Ø‡K‚KÐ%Ñ&Ô&Ð&Ð&Ð&r   ©z^-?[0-9]+(\.[0-9]+)?$ÚCD©z.*ÚNN)	r°   )z(The|the|A|a|An|an)$ÚAT)z.*able$ÚJJ)z.*ness$r³   )z.*ly$ÚRB)z.*s$ÚNNS)z.*ing$ÚVBG)z.*ed$ÚVBDr²   c                 óR   — t          | ¦  «        t          d„ | D ¦   «         ¦  «        fS )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S )N)r5   )rˆ   r¢   s     r   ú	<genexpr>zcorpus_size.<locals>.<genexpr>ž  s(   è è € Ð0Ð0 a�3˜q™6œ6Ð0Ð0Ð0Ð0Ð0Ð0r   )r5   Úsum)Úseqss    r   r“   r“   �  s*   € Ý�‰IŒI•sÐ0Ð0¨4Ð0Ñ0Ô0Ñ0Ô0Ð1Ð1r   Ú__main__)NNrI   rJ   r/   NrK   r/   Fr   FFNNNrJ   NFN)NN)#rY   r]   r�   ra   Únltk.corpusr   Únltk.tagr   r   r   rW   r   r   Únltk.tblr	   r
   r   r   r   r   r$   r&   r*   r8   r<   r?   rB   rH   r   rX   rh   ÚNN_CD_TAGGERrV   r“   Ú__name__r   r   r   ú<module>rÅ      s1  ðð 
€	€	€	Ø €€€Ø €€€Ø €€€à  Ð  Ð  Ð  Ð  Ð  Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )ðð ð ðð ð ðð ð ð!ð !ð !ð4ð 4ð 4ð;ð ;ð ;ð	8ð 	8ð 	8ðMð Mð Mð(
ð 
ð 
ð&ð &ð &ð*ð *ð *ð7ð 7ð 7ð ØØØØØØ
Ø
ØØØØØØØØØ Ø Øð'BQð BQð BQð BQðJ%Cð %Cð %CðP'ð 'ð 'ð 'ð& ˆ|Ð=¸}ÐMÑNÔN€à�ð
ð 
ð 
ñô €ð2ð 2ð 2ð ˆzÒÐØÐÑÔÐÐÐð Ðr   