ó <¿CVc@s™dZddlmZd„Zed„Zed„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zedkr•eƒndS(sÎ Distance Metrics. Compute the distance between two items (usually strings). As metrics, they must satisfy the following three requirements: 1. d(a, a) = 0 2. d(a, b) >= 0 3. d(a, c) <= d(a, b) + d(b, c) iÿÿÿÿ(tprint_functioncCsg}x(t|ƒD]}|jdg|ƒqWx"t|ƒD]}|||dWx"t|ƒD]}||d| "sain" -> "shin" -> "shine". These operations could have been done in other orders, but at least three steps are needed. This also optionally allows transposition edits (e.g., "ab" -> "ba"), though this is disabled by default. :param s1, s2: The strings to be analysed :param transpositions: Whether to allow transposition edits :type s1: str :type s2: str :type transpositions: bool :rtype int iR (tlenRRR(R R R RRRRR((sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pyt edit_distance9s  ,cCs||krdSdS(sØSimple equality test. 0.0 if the labels are identical, 1.0 if they are different. >>> from nltk.metrics import binary_distance >>> binary_distance(1,1) 0.0 >>> binary_distance(1,3) 1.0 ggð?((tlabel1tlabel2((sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pytbinary_distanceYs cCs?t|j|ƒƒt|j|ƒƒtt|j|ƒƒƒS(s/Distance metric comparing set-similarity. (Rtuniont intersectiontfloat(RR((sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pytjaccard_distanceiscCs²t|j|ƒƒ}t|j|ƒƒ}t|ƒ}t|ƒ}||krc||krcd}n9|t||ƒkrd}n|dkr–d}nd}d|t|ƒ|S(sHDistance metric that takes into account partial agreement when multiple labels are assigned. >>> from nltk.metrics import masi_distance >>> masi_distance(set([1, 2]), set([1, 2, 3, 4])) 0.665... Passonneau 2006, Measuring Agreement on Set-Valued Items (MASI) for Semantic and Pragmatic Annotation. igq= ×£på?ig…ëQ¸Õ?(RRRR R(RRtlen_intersectiont len_uniont len_label1t len_label2tm((sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pyt masi_distanceps       cCs-yt||dƒSWntdƒnXdS(sÔKrippendorff's interval distance metric >>> from nltk.metrics import interval_distance >>> interval_distance(1,10) 81 Krippendorff 1980, Content Analysis: An Introduction to its Methodology is7non-numeric labels not supported with interval distanceN(tpowtprint(RR((sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pytinterval_distanceŒs cs ‡fd†S(s<Higher-order function to test presence of a given label csdˆ|kˆ|kkS(Ngð?((txty(tlabel(sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pyt¡s((R(((R(sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pytpresencescs ‡fd†S(Ncs¾ttdt|ƒƒtdt|ƒƒƒˆ|koBˆ|kp½dˆ|ko^ˆ|kp½ttdt|ƒƒƒˆ|koˆ|kp½tdt|ƒƒˆ|ko¼ˆ|kS(Ngð?g(tabsRR(R&R'(R((sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pyR)¥sF2((R(((R(sg/private/var/folders/cc/xm4nqn811x9b50x1q_zpkmvdjlphkp/T/pip-build-FUwmDn/nltk/nltk/metrics/distance.pytfractional_presence¤sc s”i‰t|dƒp}xf|D]^}|jƒjdƒ\}}}t|gƒ}t|gƒ}t|ƒˆt||gƒs