{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": true }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Jaccard similarity" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align*}\n", "J &= \\frac{|s_1 \\cap s_2|}{|s_1 \\cup s_2|} = \\frac{|s_1 \\cap s_2|}{|s_1| + |s_2| - |s_1 \\cap s_2|} \\\\\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Simon similarity" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another similar similarity, basedon http://www.catalysoft.com/articles/StrikeAMatch.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$ S = 2 \\times \\frac{|s_1 \\cap s_2|}{|s_1| + |s_2|}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some simple transformation results in" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$ S = 2 - \\frac{2}{1 + J}$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def j2s(j):\n", " \"\"\"jaccard similarity to simon similarity\"\"\"\n", " return 2 - 2 / (1 + j)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "xs = np.arange(0, 1.01, 0.01)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Delta')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(6, 3))\n", "plt.plot(xs, j2s(xs) - xs)\n", "# plt.plot(xs, xs, '--')\n", "plt.grid()\n", "plt.xlabel('Simon similarity - Jaccard similarity')\n", "plt.ylabel('Delta')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Simon similarity')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAE9CAYAAAAGZmUpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd3hU1dbA4d9K6L2H3jvSQ1PBgAiIChaQIiCIYrlYruVeVK69e+0dBUGkd5QiAgZUBOkEQguhhRZqIAlpM/v74wzfjZjAJJmZM5NZ7/PkYebMKWsTyMo+++y1xRiDUkqp4BVidwBKKaXspYlAKaWCnCYCpZQKcpoIlFIqyGkiUEqpIKeJQCmlglwBuwPIqQoVKpjatWvn6tikpCSKFy/u2YD8nLY5OGibg0Ne2rxx48ZTxpiKWX0WcImgdu3abNiwIVfHRkZGEhER4dmA/Jy2OThom4NDXtosIgez+0xvDSmlVJDTRKCUUkFOE4FSSgU5TQRKKRXkNBEopVSQ00SglFJBThOBUkoFOa8lAhGZICLxIrI9m89FRD4WkRgR2SYibbwVi1JKqex5s0cwEeh1hc9vBhq4vkYBX3gxFqWUUtnwWiIwxqwGzlxhl77Ad8ayFigjIlW8FY9SSgWqpJQ0Zv6+k1MXnV45v50lJqoBhzO9j3NtO3b5jiIyCqvXQFhYGJGRkbm6YGJiYq6PDVTa5uCgbc6f4i44WXPwAn3jP6UW55lZ5VkqeKHNAVFryBgzDhgHEB4ebnJba0NrkwQHbXNwyK9tTs1wsHT7cb5fe5D1B87yVKEF3BSygSPtnuXWoqW80mY7E8ERoEam99Vd25RSKugcOXeRqesOMmP9YU4lplGvXEGe692Yfi0/IuTcA9So1Yl9XuoB2ZkIFgKjRWQ60AFIMMb87baQUkrlV8YYfo85zaQ/DrBi5wkAujWqxJjyq6h3cCbS7icoWhJKd/JqHF5LBCIyDYgAKohIHPAiUBDAGPMlsBjoDcQAycAIb8WilFL+5EJKOnM2xvHd2oPEnkyifPFCPHRDPQa3DaP672Nh4/fQ6BYI8c3v6l67ijFm0FU+N8A/vHV9pZTyNzHxiXz3xwHmbIwjKc1Bqxpl+GBAS3o3r0Lh5HiY0Q+ObIAb/g03jIEQ38z5DYjBYqWUClROp+GX3fFMXHOAX/eeolBoCLe2rMK9nWrTskaZ/+245BmI3wl3fwdN+/o0Rk0ESinlBRdS0pm5IY7v/jjAwdPJVC5VhKd7NGRg+5pUKFH4fzs60iG0IPR+D5JPQVgzn8eqiUAppTzowKkkJq45wKwNh0lKc9C2Vlme6dmIns0qUzA0060eRwb8/B84uQsGz4KSYdaXDTQRKKVUHhlj+CP2NBN+28+KXfEUCBFua1GVEdfVoXn10n8/IPkMzB4BsZHQ4WGfx3s5TQRKKZVLqRkOFm45yvjf9rPr+AXKFS/Eo13rM6RjLSqVKpL1QSeiYfogOH8U+n4GrYf4NugsaCJQSqkcOpOUxpS1B5n0x0FOJabSMKwEb9/VnL6tqlGkYGj2BzodMGs4pKfA8MVQo53PYr4STQRKKeWm2JOJjP9tP3M2xZGS7uSGhhW5v3Mdrq9fARHJ/kCnE4wTQgtAvwlQrDyU8p8am5oIlFLqCowxrD9wlnGrY1mx6wQFQ0O4s3U17ru+Dg3DSl79BKkXYN5DUKYW9HoDKl/j/aBzSBOBUkplweE0/LTjOF+tjmXr4XOULVaQR7vWZ2in2lQsWfjqJwA4EwvTBsOpPdDzde8GnAeaCJRSKpOUdAezNsbxza+xHDydTK3yxXi1bzP6ta1B0UJXuP9/uX2/WOMBIjBkDtTr6rWY80oTgVJKAeeS0/juj4NMWnOA00lptKxRhjG9GtOjWWVCQ65w/z8ryWdgxhAoUxMGToVydbwTtIdoIlBKBbWj5y7yza/7mb7+EMlpDro1rsSDXerSvk65Kw8AZ8WRYQ0IFysHg2dAlVZQuIR3AvcgTQRKqaAUE3+BL1fFMn/zEQzQt2VVRt1Ql8aVS+XuhOePWr2A8PusuQG1r/dovN6kiUApFVS2Hj7H55ExLIs+QeECIQzpWIv7O9ehetliuT/p4fUw4x5IS4IiZa6+v5/RRKCUyvculYD4/Jd9/BZzilJFCjC6a32GX1ub8iXcfAIoO5u/hx//CaWqwtD5ENbUM0H7kCYCpVS+ZYxVAvrTlTFsOnSOCiUK8+zNjRncoSYlixTM+wWOboEF/4C6EdDvW2tsIABpIlBK5TtOp2HpjuN8ujKG6GPnqVamKK/2bUb/8BpXLgHh9gUcEBIKVVvB4JlQ70ZrkDhABW7kSil1mQyHkx+3HePTX2KIiU+kToXivNuvBbe3rvbXEtB5cXy7NT/g9s+hRnto2NMz57WRJgKlVMDLcDiZv+Uon/0Sw/5TSTQMK8HHg1pzS/MqOZ8DcCU75sP8h6FIaatHkE9oIlBKBax0h5N5m47w6S8xHDqTTNMqpfhySBt6NK1MiCcTgNMJkW/A6nehensYMBlKVvbc+W2miUApFXDSHU5WHU7nP+9FcvjMRZpXK83Xw8Lp3qRSzieBuSNqppUEWg+FW96DAnl80sjPaCJQSgWMdIeTuZvi+GRlDHFn02hZvTSv9LmGiEYVvZMALg0KN78bCpeERr2t2kH5jCYCpZTfy3A4mbf5CJ+stG4Btahemn51nDze/zrvJACAmOWw9DkYOg9KV4PGt3jnOn5AE4FSym85nIaFW4/w0fK9HDidTPNqpZkwPJyujSqxatUq7yQBY2DNJ7D8RajUFJwZnr+Gn9FEoJTyO06nYfH2Y3zw8x72nUyiSZVS3h0DuCT9Iix8zBoTaNoX+n4eEEXj8koTgVLKbxhjWL4znveW7WbX8Qs0qFSCz+9pQ69mHn4KKDuRb1pJoNtY6Px0vhwPyIomAqWU7Ywx/B5zmneX7Wbr4XPULl+Mjwa24tYWVT07DyA7TieEhFg//Ot0gfrdvX9NP6KJQCllq02HzvLu0t38EXuaqqWL8NadzbmrbXXPzQS+mo0TYfMUGLYAipQKuiQAmgiUUjbZffwC7/60m+U7T1ChRCFevK0pg9rX9EwtIHc40mHps7D+a6jXDRxpQB5KUQcwTQRKKZ86fCaZD5bvYd7mI5QoVICnezRkxHV1KF7Yhz+Okk7BzHvh4G/QaTR0fzmgi8blVfC2XCnlU6cTU/lkZQxT1h0kRIRRnevycEQ9yhQr5Ptg5j8McevhjnHQcoDvr+9nNBEopbwqKTWD8b/t56tV+0jJcHJ3eHUeu7EBVUoX9X0wlwaFe70FKQlQrY3vY/BDmgiUUl6R7nAyY/1hPly+l1OJqfRsFsYzPRtTv5INz+U7nfDLa3D2INz1DZSv5/sY/JgmAqWURxljWBZ9greX7iL2ZBLtapflq6FtaVurrD0BpSTA3FGwZym0GWbVDwri8YCs6N+GUspjNh06yxuLdrLh4FnqVyrhm9nAV3IqBqYPgjOx0Pu/0O7+oJkklhOaCJRSeXbwdBLvLN3NoqhjVChRmDfuaM7d4dUp4Ku5AFlxZMCUuyD1gjVHoPb19sXi5zQRKKVyLSE5nU9W7mXSHwcoEBLC4zc2YFSXur59FPRyxlh/hhaA27+EUlWhbC374gkAmgiUUjmW7nAyZe1BPlyxl4SL6fRvW52nejQirFQRmwO7CAsftaqGdn4SanWyN54AoYlAKeU2Ywwrd8Xz+uKdxJ5M4rr65Xm+d1OaVi1ld2hw7jDMuAeObYMbX7A7moCiiUAp5Zbdxy/w2qJoft17iroVijP+3nC6NbZxIDizg2tg5jBIT4FB06FRL7sjCiheTQQi0gv4CAgFvjHGvHXZ5zWBSUAZ1z5jjDGLvRmTUipnziSl8f7Pu5m67hAlixTkhVubMrRTLd8VhbuaxHiYfKe1itjwxVCxod0RBRyvJQIRCQU+A24C4oD1IrLQGBOdabexwExjzBci0hRYDNT2VkxKKfelO5xM/uMgHy7fQ1Kag6Eda/FE94aULW5DSYisXBoULlEJ+k2AWtdC0TL2xhSgvNkjaA/EGGNiAURkOtAXyJwIDHDp5mJp4KgX41FKuWn1npO88mM0MfGJdG5QgRdubUqDsJJ2h/U/iSdptWUsVB0LjW6Gxr3tjiigeTMRVAMOZ3ofB3S4bJ+XgGUi8ihQHAi+QuBK+ZFDp5N5dVE0P0efoFb5YnwzLJwb7ZwQlpWjW2DGEEpeOGE9JaTyTMyl7pWnTyzSD+hljLnf9X4o0MEYMzrTPk+6YnhPRDoB44FrjDHOy841ChgFEBYW1nb69Om5iikxMZESJfL/+qOZaZuDQ17bnOow/BibzpL96YQK9KlXkB61C1LQF6uD5UClE6tptPsT0guWYn3dJ3CENbc7JJ/Ky/e5a9euG40x4Vl95s0ewRGgRqb31V3bMhsJ9AIwxvwhIkWACkB85p2MMeOAcQDh4eEmIiIiVwFFRkaS22MDlbY5OOS2zcYYlmw/zuuLdnLkXDp9W1Xl2ZubULm0zfMBsnL4T4h8D2p2IvTuyTg27NDvs4d4MxGsBxqISB2sBDAQGHzZPoeAG4GJItIEKAKc9GJMSimXmPhEXlq4g99iTtG4cklmPtiJ9nXK2R3W3xlj1Qeq3s5aP6DZHVDATwas8wmvJQJjTIaIjAZ+wno0dIIxZoeIvAJsMMYsBJ4CvhaRf2INHA833rpXpZQCrPUBPlkZw/jfYilSMJSX+zTjng417a0LlJ2Te2DeKLj9C6jURBeR8RKvziNwzQlYfNm2FzK9jgau82YMSimLMYal24/zyo/RHEtIoX/b6vz75sZUKFHY7tCytucnmHM/hBayCscpr9GZxUoFgQOnknhx4Q5W7TlJkyql+HRwa9rW8sPbQGDdCvrtfVjxKlRpAQOmQJkaVz9O5ZomAqXysdQMB19GxvJZZAyFQkN48bamDO1Yyz9vA12y6TtY8Qpc0w/6fAKFitkdUb6niUCpfOr3mFOMnb+d/aeSuLVFFf5za1P7q4NeyaVB4ZYDrdtBLQfqIjI+oolAqXzmVGIqr/0YzfwtR6lVvhjf3deeLg0r2h3WlR34DZa/BINnQrFy0GqQ3REFFU0ESuUTTqdh5obDvLlkF8lpGTzWrT6PdK1PkYKhdoeWPWNgw3hY8m8oW8daX7iYn45d5GOaCJTKB44mOhkw7g/WHzhLhzrleP2O5tSv5OezqzPSYMkzsHEiNOgJd30NRUrbHVVQ0kSgVABLzXDw2S/7+Oz3i5QsmsE7/VrQv211/6oNlJ2fX7CSwPVPQrexEOLHPZd8ThOBUgFq/YEzjJmzjX0nk+hYJZRPR97gv3MCMrs0KHxpKcmmfe2OKOhpIlAqwFxISeetJbuYsu4Q1coUZeKIdnAsOjCSwLaZsH2ONTegRCVNAn5CE4FSAWTFzhM8P2878RdSGHl9HZ68qSHFCxcg8lj01Q+2k9MBy1+ENZ9AresgLVEXkfEjmgiUCgCnE1N5+YdoFm49SqOwknw5tC2tagTID9KLZ2H2SNi3AtrdD73egtCCdkelMtFEoJQfM8bww7ZjvLRwBxdS0vln94Y8HFGPQgX8eGbw5Wbeay0uf9tH0Ha43dGoLGgiUMpPxZ9P4fn52/k5+gQtq5fmnX4daVTZj5aLvJpLg8I3vQIZKVCzo90RqWxoIlDKzxhjmLf5CC//EE1KuoNnb27MyOvr+Hd9oMyMgdX/hYtnoNebULWV3RGpq9BEoJQfOXE+hefmRrFiVzxta5XlnX4tqFfRzyeGZZaaCAsegegF0Pxua5BY5wf4PU0ESvkBYwzztxzhxQU7SM1wMvaWJoy4rg6hfrZm8BWdPQDT74H4aLjpVbj2US0aFyA0EShls5MXUnluXhQ/R5+gba2yvNuvBXUDqRcAkJEKE2+F1PNwzyyo393uiFQOaCJQykaLo47x/LwoktIcPNe7MSOvrxtYvYBLChSGW96D8vWhfD27o1E5pIlAKRucS07jxYU7WLDlKC2ql+b9u1tSv1IAPREEVi9g0ZNQowO0GQYNe9odkcolTQRK+djqPSd5ZvZWTiem8c/uDXmkaz0KBsoTQZdcOA4zhkLcn1Cmlt3RqDzSRKCUjySnZfDm4l1MXnuQ+pVK8M2wdjSvHoBll+M2wox7rLUD+k+CZrfbHZHKI00ESvnAlsPneHLGFmJPJTHy+jo807ORfy8Yk52EOJjY2yoYN/JnqHyN3REpD9BEoJQXZTicfPbLPj5euZewkoWZen8Hrq1fwe6wcq90dbjlfWjYC4qXtzsa5SGaCJTykkOnk3lixmY2HTrH7a2q8nLfayhdNACLrSWfgXkPWesH1OwIre+xOyLlYZoIlPIwYwyzN8bx0sIdhIQIHw9qTZ+WVe0OK3fid8K0gZBwBJr313pB+ZQmAqU8KCE5nefmR7Fo2zE61CnH+wNaUa1MUbvDyp2dP8K8B6FQcRi+CGp2sDsi5SWaCJTykD/3n+GJ6ZuJv5DKMz0b8dAN9QJzchjA/tXWk0FV28DAKVAqQHs0yi2aCJTKowyHk49XxvDpyr3UKFeM2Q9fGziLxmSn1vXQ621r/YCCReyORnlZgM1iUcq/xJ1NZuC4tXy8Yi+3t67Gosc6B24SOLMfJvWBc4chJAQ6PqRJIEhctUcgIs2NMVG+CEapQLJ0+zH+NXsbTgMfDmjF7a2r2R1S7sVGwqzh1loCCXFQpobdESkfcufW0OciUhiYCEwxxiR4NySl/FtKuoPXFkXz/dpDtKxemo8HtaZW+eJ2h5U7xsC6L+Gn56FCQxg0FcrVtTsq5WNXTQTGmM4i0gC4D9goIn8C3xpjfvZ6dEr5mZj4REZP3cSu4xcY1aUuT/doFFjrB19u/TewdAw0vhXu+BIKB1jhO+URbg0WG2P2ishYYAPwMdBaRAR4zhgz15sBKuUv5m6KY+z87RQuEMK3w9vRtXElu0PKu5YDwTih3QPWuIAKSlf9zotICxH5ANgJdANuM8Y0cb3+wMvxKWW7i2kO/jV7K0/O3Mo1VUuz5PEugZ0E4jbAlP6Qlmz1ADo8qEkgyLnTI/gE+Abrt/+LlzYaY466eglK5Vsx8Yn8Y8om9sRf4NFu9Xn8xgaBs4h8VjZPgR+fgJJVIPG4jgcowL1EMM8YMznzBhF53Bjz0eXblcpPFmw5wrNzoyhSMJRJI9rTpWFFu0PKPUcGLBsL676AOjdA/4lQrJzdUSk/4c6vNsOy2Dbcw3Eo5TdS0h08Py+Kx6dvoVnVUix+rHNgJwGApf+2kkDHR2DIXE0C6i+y7RGIyCBgMFBHRBZm+qgkcMbbgSllh8NnknlkyiaijiTw4A11eaZHo8C+FXRJp9FQvZ01OKzUZa50a2gNcAyoALyXafsFYJs3g1LKDit3neCJ6VswwNfDwrmpaZjdIeVN9ALYswz6fgrl6lhfSmUh20RgjDkIHAQ6+S4cpXzP4TR8uHwPn6yMoWmVUnw5pC01yxezO6zcczph1Vuw6m2oFg6pF6BIKbujUn4s2z6viPzm+vOCiJzP9HVBRM67c3IR6SUiu0UkRkTGZLPP3SISLSI7RGRq7pqhVO6cTUpj+Ld/8snKGO4Or87cR64N7CSQegFmDLGSQKshVvloTQLqKq7UI7je9WeuphqKSCjwGXATEAesF5GFxpjoTPs0AJ4FrjPGnBWRAH44WwWa7UcSeHDyRk4mpvLWnc0Z2L6m3SHljTEwdQAcWgs3vwPtR4EEaBls5VNXfHzU9cN8hzGmcS7O3R6IMcbEus41HegLRGfa5wHgM2PMWQBjTHwurqNUjs3acJjn52+nQvFCzHqwEy0DtWJoZiIQMcaaKVw3wu5oVAC5YiIwxjhct3ZqGmMO5fDc1YDDmd7HAZcvcdQQQER+B0KBl4wxS3N4HaXclpbh5NUfo5m89iDX1ivPJ4NaU75EYbvDyj1j4I/PqHlwFxABdbrYHZEKQO5MKCsL7HAVm0u6tNEY08dD128ARADVgdWustfnMu8kIqOAUQBhYWFERkbm6mKJiYm5PjZQaZv/51yqk8+3pLLnrJNetQvSv95Fojb84fsAPSTEkUrDPZ9T+UQkRcq2J/KXlSD54FFXN+m/bc9xJxH8J5fnPgJkLmpe3bUtszhgnTEmHdgvInuwEsP6zDsZY8YB4wDCw8NNRERErgKKjIwkt8cGKm2zZcvhc4yZvJFzFwnsxeQvSThiLSV5YjN0fZ49znAiunazOyqf0n/bnuNOGepVuTz3eqCBiNTBSgADsSaoZTYfGAR8KyIVsG4VxebyekplafbGOJ6bG0WlUoWZ+/B1NK0a4E/RpCXD+JsgJQEGToXGt0CQ/WasPMudFco6YhWeawIUwrqXn2SMueL/JmNMhoiMBn5yHTPBGLNDRF4BNhhjFro+6yEi0YADeMYYczpPLVLKJcPh5I3Fu5jw+36urVeezwa3oWzxQnaHlXeFisGNL0KVFlCpid3RqHzAnVtDn2L9Nj8LCMeqPdTQnZMbYxYDiy/b9kKm1wZ40vWllMecS05j9NTN/BZzihHX1eb53k0Cu1SEI91aRazuDVYPoOUAuyNS+Yhb/zOMMTFAqDHGYYz5Fujl3bCUyr0jiU76fvY7f+4/wzv9WvDibc0COwkknYbJd8CfX8HRzXZHo/Ihd3oEySJSCNgiIu9g1R8K4P9VKj9buesEr/5xkRJFCzNtVAfa1grwKpvHo2DaYEg8AXd8pUXjlFe48wN9KNY9/tFYj4/WAO7yZlBK5ZQxhq9XxzJy0gbCioewcPR1gZ8EzsTC+B7gTIf7lmgSUF7jzlNDB10vLwIvezccpXIuLcPJ8/OimLUxjt7NK9M37DxVyxS1O6y8K1sHuj4HzftDycp2R6PysSutRxAFmOw+N8a08EpESuXAmaQ0Hvp+I3/uP8Nj3erzRPeGrF6d2yee/UDKeWspyc5PQ1hTuPZRuyNSQeBKPYJbfRaFUrmw72Qi901cz7GEFD4a2Iq+rarZHVLenN4H0wbB6Rho0MNKBEr5wNXWI1DKL62JOcVD32+kYGgI0x7oSNtaZe0OKW9ilsPs+yCkAAxbAHU62x2RCiJXujX0mzHmehG5wF9vEQnWFIAAn56pAtXM9Yd5bl4UdSsWZ/y97ahRLoDXDwDYtxKm9IdKzWDgFChby+6IVJDx2noESnma02l47+fdfPbLPjo3qMBn97ShVJGCdoeVd7WuhxvGwLWjoVBxu6NRQcideQSISFmsx0b/f39jzCZvBaXU5VLSHTw9ays/bjvGoPY1eKXvNRQM5EliCXGw9Fm49UMoXh4i/m13RCqIuVNr6FVgOFYxOKdrswGCq9Shss3ZpDRGTd7A+gNnGXNzYx7sUhcJ5JW3Dv4BM4dCegqc2g3Fr7U7IhXk3OkR3A3UM8akeTsYpS536HQyw7/9k7hzF/l0cGtubRHg5aM3ToRFT0OZmtZ6whUb2R2RUm4lgu1AGUCXkVQ+tfXwOe6buB6HMUy5vwPtagf4TOF1X8GSf0G9G6HfeCga4E86qXzDnUTwJrBZRLYDqZc2emiFMqWytGLnCUZP3UyFkoWYOKI99SqWsDukvGt2J6Seh+ufhJBQu6NR6v+5kwgmAW8DUfxvjEApr5m67hBj50fRrGppJgxvR8WSAbym8LGtsPYL6PMJlKgIXZ6xOyKl/sat6qPGmI+9HokKesYYPli+l49X7KVro4p8OrgNxQu79WCbf9o+B+b/A4qVs54SKlfH7oiUypI7/8t+FZE3gYX89daQPj6qPCbD4WTs/O1MX3+Y/m2r88adzQP38VCnA1a+Br+9DzU7wd3fQYlKdkelVLbcSQStXX92zLRNHx9VHnMxzcGj0zazfOcJRnetz1M9Ggb246GLnoKN30Lb4XDzu1AgHyyPqfI1d8pQd/VFICo4JSSnM3LSejYeOssrfZsxrFNtu0PKu/D7oPI1ED4SAjmhqaBxpVpDQ4wx34tIlusJG2Pe915YKhgcT0jh3gl/EnsqkU8GBfgcgT3L4ODvcNPL1qLyVbRKuwocV7oJe6noSclsvpTKtf2nkrjrizXEnU1m4oj2gZsEjIFf34epd8O+FZCaaHdESuXYlYrOfeX6U1clUx61/UgC9074EwNMH9WJ5tVL2x1S7qQlw8LR1tNBze6Evp9BoQCvhKqC0lUfyxCRd0SklIgUFJEVInJSRIb4IjiV/6yLPc2gcWspUjCUWQ8FcBIwBr6/C7bPhe4vQb8JmgRUwHLn+bwexpjzWCuWHQDqAzorRuXYyl0nGDbhTyqVKsyshzoF9mxhEej0CAyeCdf/UweFVUBz5/HRS/vcAswyxiQE9KN9yhYLtx7lyRlbaFq1FBNHtKdc8QB9pHL9eGsVsbb3QpPb7I5GKY9wp0fwo4jsAtoCK0SkIpDi3bBUfjJ13SEen76ZNrXKMuX+DoGZBDLS4IfHYdGTsOcn69aQUvmEO/MIxojIO0CCMcYhIslAX++HpvKDb36N5bVFO+naqCJfDGlLkYIBWGwtMR5mDIXDa63bQN3+o7eCVL7iViEXY8yZTK+TgCSvRaTyBWMMH6+I4YPle7ileRU+GNCKQgUCsGRE6gX4uhsknYK7xkPzfnZHpJTHBXBFL+WvjDG8tWQXX62O5a421Xn7ruYUCNS6QYVLQqd/WDWDqrayOxqlvCJA/3cqf+V0Gl5cuIOvVscytGMt3u3XIvCSgNMBy1+CA79b7zs+rElA5WvuLl5fDajFXxevX+2toFRgcjgNz8+LYvr6wzzQuQ7P9W4SeMXjLp6DOSMhZjkgUPs6uyNSyuvcWbz+bWAAEA04XJsNoIlA/b8Mh5N/zd7G3M1HeLRbfZ68KQAriJ7cA9MGwrlDcOuHED7C7oiU8gl3egS3A42MMalX3VMFpQyHk3/O3MoPW4/y1E0NefTGBnaHlHOn9lqDwgWLwL0/QK1OdkeklM+4kwhigYJkWpRGqUvSHU4en76ZxVHHGXNzYx66oZ7dIeVOuXrQ/gGrhHSZGnZHo5RPubVUJbBFRFbw1xXKHvNaVCogpGU4eXTaJn7acYKxtzTh/s517Q4pZ9KSYOmz0OVpKFMTuiAdHD4AABzYSURBVL9od0RK2cKdRLDQ9aXU/0vLcPKPqZv4OfoEL97WlBHXBdh6vGcPwvTBEB9tPRraqqbdESllG3dmFk8SkUJAQ9em3caYdO+GpfxZ5iQQkKuK7f8VZg6zHhMdPAsadLc7IqVs5c5TQxHAJKzKowLUEJF79fHR4BTwSWDvzzB1AJSvBwOnQYX6dkeklO3cuTX0HlYp6t0AItIQmIZVhE4FkXSHk9GBnATAug3U4UGIeBaKlLI7GqX8gjtTPgteSgIAxpg9WE8RqSCS7nDy2LTNLIs+wUu3NQ2sJHDhBCx81BocLlwCer2pSUCpTNxJBBtE5BsRiXB9fQ1s8HZgyn9kOJw8MWMLS7YfZ+wtTRgeSAPDRzbCuAiImg3Ho+yORim/5E4ieBhrVvFjrq9o17arEpFeIrJbRGJEZMwV9rtLRIyIhLtzXuU7DqfhqVlbWbTtGM/1bhxYj4hunQETbrYWkhm5DGp2tDsipfySO08NpQLvu77cJiKhwGfATUAcsF5EFhpjoi/bryTwOLAuJ+dX3ud0Gp6du40FW47yTM9GjOoSQJPF1n4BS8dA7c7QfxIUL293REr5LXcWr79VRDaLyBkROS8iF0TkvBvnbg/EGGNijTFpwHSyXtDmVeBtdNUzv2KM4YWF25m5IY7HbmzAP7oG2NM1jW6G656AofM0CSh1Fe7cGvoQuBcob4wpZYwpaYxxZ6StGnA40/s417b/JyJtgBrGmEXuBqy8zxjD64t28v3aQzx4Q13+2T1AagfF74Slz1nLSJatDTe9DKH6XINSV+PO46OHge3GeHaRVhEJwbrdNNyNfUcBowDCwsKIjIzM1TUTExNzfWygyk2b5+1NY8G+dLrXLEDHIsdZteqEd4LzoPKn1tFk5/s4Q4qQ0bihfp+DgLbZc9xJBP8CFovIKv5aa+hqYwZHgMzVu6q7tl1SErgGiHSVK64MLBSRPsaYvzyVZIwZB4wDCA8PNxEREW6E/XeRkZHk9thAldM2f7lqHwv27eLu8Oq8dWcLQkL8vJS00wm//he2vwFVW8OAKRTYvFe/z0FA2+w57iSC14FEoAhQKAfnXg80EJE6WAlgIDD40ofGmASgwqX3IhIJPH15ElC+M/mPA7y1ZBe3tazKm4GQBAAW/RM2ToQWA+C2j6BgUWCv3VEpFVDcSQRVjTHX5PTExpgMERkN/ASEAhOMMTtE5BVggzFGC9n5kXmb4/jPgh10b1KJ9+9uSWggJAGAa/pB+QbWusKBthCOUn7CnUSwWER6GGOW5fTkxpjFwOLLtr2Qzb4ROT2/8oxlO47z9KxtXFuvPJ8ObkNBf19jOHaVNTns2tFQp7P1pZTKNXcnlC0VkYs5fHxUBYA1MacYPXUzzauV5uth4RQpGGp3SNkzBtZ9BZPvgC1TIF2fOFbKE9yZUFbSF4Eo39t6+BwPfLeBOhWKM3FEO4oXdqeDaJOMVPjxSdjyPTS6Be78ylpWUimVZ9n+zxeRxsaYXa5n/f/GGLPJe2Epb4uJv8Dwb/+kXIlCTB7ZnjLFcvIcgI85nfDd7XBoDXT5l1U5NMTPb18pFUCu9Cvgk1jP7r+XxWcG6OaViJTXHTl3kaHj/6RAaAjfj+xApVJ+/pt1SAi0HAAdH4KmWU1OV0rlRbaJwBgzyvVnV9+Fo7ztTFIaQ8evIzE1g5kPdqJW+eJ2h5S9LVOhcElochu0HW53NErlW9n2r0WknYhUzvR+mIgsEJGPRaScb8JTnpSUmsGIies5cvYi4+9tR5MqflqT35FhLSo//2ErGSilvOpKN1q/AtIARKQL8BbwHZCAa5avChxpGU4enrKJqLhzfDq4De3r+GkuTz4DU+6CtZ9Dh4fh7sl2R6RUvnelMYJQY8wZ1+sBwDhjzBxgjohs8X5oylOcTsO/52xj9Z6TvH1Xc25qGmZ3SFm7eBa+7grnj0Lfz6D1ELsjUiooXDERiEgBY0wGcCOuom9uHKf8zNs/7WLe5iM83aMhA9rVtDuc7BUtC837Q4OeUKOd3dEoFTSu9AN9GrBKRE4BF4FfAUSkPtbtIRUAfj6QzpRdsQztWMs/1xRwOuHX96z1AypfA93G2h2RUkHnSk8NvS4iK4AqwLJMZahDgEd9EZzKm8VRx5i6K42ezcJ4qU8zxN9q8aRegHkPwa4fIT3ZSgRKKZ+74i0eY8zaLLbt8V44ylPWHzjDEzO2UL9MCB8NbO1/ReTOxMK0wXBqN/R8Azo+YndESgUtvdefD8XEJ3L/pA1UL1uUx5sb/6sfFL8TJvSyXg+ZC/V0qopSdtJ5+vlM/IUUhn/7JwVDhUkj2lOikJ/1BADK14dmt8OoXzQJKOUHNBHkI8lpGdw/aQOnE9OYMLwdNcoVszuk/0lPgWVjIemUtY7wbR9Bubp2R6WUQhNBvuFwGh6btoXtRxL4ZFBrWlQvY3dI/3P+KHx7M6z5BGKW2x2NUuoyOkaQT7z6YzTLd57g5T7N6O5PE8YO/wkzhkBaEgyYAk1utTsipdRlNBHkA9/+vp+Jaw4w8vo63HttbbvD+Z89y2DGPVCqKgydD2FN7Y5IKZUFTQQBbsXOE7z6YzQ3NQ3jud5N7A7nr6q1sWYK93gNivlpbSOllI4RBLLoo+d5dNpmmlYtxUcDW/nHXIGk07DsP+BIh+IV4PbPNQko5ec0EQSo+PMpjJy0nlJFCjL+3nYUK+QHnbvj2+HrCGtd4aOb7Y5GKeUmTQQB6GKag/u/20DCxXTGDw8nzB9WGIteAON7WD2BEUugRnu7I1JKuckPfo1UOeF0Gp6etZWoIwmMGxpOs6ql7Q4J1n4JS/8N1dvBgO+hZOWrH6OU8huaCALMRyv2sijqGM/e3Nh/1hWofT20u9+qGVSgsN3RKKVySG8NBZAfth7loxV76de2OqO62Dwr9/Q+q3w0WFVDb3lPk4BSAUp7BAEiKi6Bp2dtJbxWWV6/4xp7S0rHLIfZ94GEQsvBUKqKfbEopfJMewQBIP5CCg98t4EKJQrz5dC2FC5gUzVRY6wyEVP6Q+kaVtE4TQJKBTztEfi5lHQHD07eSMLFdGY/3IkKJWy8/bLoSdgwAZr0gdu/gMIl7ItFKeUxmgj8mDGG5+dtZ/Ohc3xxTxv7nxCq1w1KVoUuT4O/rXamlMo1TQR+7NvfDzBnUxyP39iAm5vbdAvm0Do4sw9aDYYmt1lfSql8RccI/NSamFO8vngnPZqG8fiNDewJYuNEmHgL/PYhZKTZE4NSyuu0R+CHDp9J5h9TN1G3QnHeH9CKEF/XEHKkw9JnYf3X1u2gfhOgQCHfxqCU8hlNBH7mYpqDUZM34nAavh4WTonCPv4WOTJg8h1w4Fe49lHo/jKE+Nmax0opj9JE4EeMMYyZu41dx8/z7fB21K5Q3PdBhBawegFthkGLu31/faWUz2ki8CMTfj/Agi1HeaZnIyIaVfLtxbfPheIVoU5n6Pykb6+tlLKVDhb7iTX7TvHG4p30bBbGIxH1fHdhpwOWvwyzR8DaL3x3XaWU39AegR84lnCRR6dupnb5Yvy3f0vflY9ISYC5o2DPUmhzL/T+r2+uq5TyK5oIbJaa4eDh7zeRku7gq6GdKFmkoG8unHQKvr0ZzsRaCaDd/TpJTKkgpYnAZq/9uJMth8/x+T1tqF/JhyUbipaDWtfCrR9YZaSVUkFLxwhsNHdTHJPXHmRUl7r09sXMYWPgj8/h7AEICYHbPtIkoJTybiIQkV4isltEYkRkTBafPyki0SKyTURWiEgtb8bjT3YdP89z86LoUKcc/+rZyPsXTEuGOffDT8/Cpu+8fz2lVMDwWiIQkVDgM+BmoCkwSESaXrbbZiDcGNMCmA284614/MmFlHQe/n4TJYsU5JPBrSkQ6uWO2bnD8G0v2D4HbnwBuv3Hu9dTSgUUb/4Eag/EGGNijTFpwHSgb+YdjDG/GGOSXW/XAtW9GI9fMMYwZk4Uh84k8+mg1lQq6d2F54snHoCvu8LpWBg0HTo/pYPCSqm/8GYiqAYczvQ+zrUtOyOBJV6Mxy9MXHOARVHHeKZnIzrULe/1610sWhlqdoIHVkCjXl6/nlIq8IgxxjsnFukH9DLG3O96PxToYIwZncW+Q4DRwA3GmNQsPh8FjAIICwtrO3369FzFlJiYSIkS9i2mEnvOwevrUmheIZTH2hQmxEu/mYsznZqH5hFX/TYSUhy2ttkOdn+f7aBtDg55aXPXrl03GmPCs/rMm4+PHgFqZHpf3bXtL0SkO/A82SQBAGPMOGAcQHh4uImIiMhVQJGRkeT22Lw6l5zG8x//RuXSRZn0cGdKF/PSfIHEkzBzGBxaQ502EUSeqWRbm+1i5/fZLtrm4OCtNnvz1tB6oIGI1BGRQsBAYGHmHUSkNfAV0McYE+/FWGxljOHpWduIv5DCZ/e08V4SOLoFxkXA0U1w13gtGqeUcovXEoExJgPrds9PwE5gpjFmh4i8IiJ9XLu9C5QAZonIFhFZmM3pAtr43/azfOcJnr25Ca1qlPHORfYsgwmuMYD7foLm/bxzHaVUvuPVmcXGmMXA4su2vZDpdXdvXt8fbD50lreW7KJH0zBGXFfbexeq1Bjq3wi3fgglKnrvOkqpfEdnFntRwsV0Hp22mbBSRXi3nxeKyaUkwK/vg9MJZWrCwCmaBJRSOaa1hrzEGMOzc7dxLCGFmQ928vy4wKm9MG0QnN0PdW+Aam09e36lVNDQHoGXTFl3iMVRx3m6RyPa1irr2ZPv+Qm+7gYXz8K9P2gSUErliSYCL9h1/Dyv/hhNl4YVebBLXc+efN04mDoAytaGUZFWBVGllMoDvTXkYRfTHDw2bTMlixTkvf4tCQnx8LhA5WugxQCrfHShYp49t1IqKGki8LDXFkWz50Qi393XnoolC3vmpOcOQcwKCB9h9QC0F6CU8iBNBB60dPsxpqw7xINd6tKloYee3jnwO8wcCs4MaHIbFK/gmfMqpZSLjhF4yNFzF/n3nChaVC/NUz08sL6AMbD+G/iuj7Wa2P0rNAkopbxCewQe4HAanpy5hXSHk48HtqZQAQ/k1yX/gj/HQYOecNfXUKR03s+plFJZ0ETgAeNWx7I29gzv9GtB7QrFPXPSSk3h+ieh21gICfXMOZVSKguaCPIoKi6B95btpnfzyvRvm8d1dY5uhvPHoHFva2BYKaV8QBNBHiSnZfD49M1ULFmYN+5onrcSEttmwsJHoUwtaNADQvVbo5TyDR0szoPXF+1k/+kk3ru7JWWKFcrdSZwOWDYW5j5gzRAesViTgFLKp/QnTi6t3HWCKesOMapLXa6tl8uneTLSYNpA2LcC2j0Avd6EUC+tVaCUUtnQRJALpxNT+dfsKBpXLslTPRrm/kQFCkHFRtC0D7Qd7rH4lFIqJzQR5JBVVTSK8xfT+f7+9hQukIsnenYvgdLVoXJzqxeglFI20jGCHJq9MY5l0Sd4pmcjGlculbODjYHV71rlo1e9450AlVIqh7RHkANxZ5N5+YdoOtQpx8jr6+Ts4NREWPAIRC+A5ndDn4+9E6RSSuWQJgI3OZ2GZ2ZtwxjDf3NaVTQxHibfAfHR0OM16DQaPL1amVJK5ZImAjdNXHOAP2JP89adzalRLofln4uWhXJ14KaXoX6+X6ZZKRVgdIzADftOJvL20l10a1yJAe1quHeQMbBxEiSdsh4JHfC9JgGllF/SRHAVDqfhqZlbKVIwlLfudHP2cEaqNUv4h8eswnFKKeXH9NbQVXz9ayxbDp/jo4GtqFSqyNUPuHAcZgyFuD+hyzNwwxjvB6mUUnmgieAK9p64wPvL9tCrWWX6tKx69QNO7IDv74KUBOg/CZrd7v0glVIqjzQRZCPD4eSpWVspUaQAr91xjXu3hEpWgQoNoOeb1trCSikVAHSMIBtfrY5lW1wCr/RtRoUSV1h72JEB676y6gYVKwf3/qBJQCkVULRHkIW9Jy7w0fK99G5emVtbXOGWUPIZmH0fxP4CxSvCNXf6LkillPIQTQSXcTgNz8zeRvHCobzS9wq/2cfvtCqHnj8KfT7VJKCUCliaCC4z/rf/PSWU7S2hvcth1r1QqDgMXwQ12vs2SKWU8iBNBJnEnkzkvWV76NE07MpPCZWqAtXawB1fQSk3niZSSik/poPFLk6nYcycKAoXCOG127N4Sig1ETZ8a80YDmtmDQprElBK5QPaI3CZ8uch/jxwhnf6tfj7xLEz+2H6YDi5C6q306eClFL5iiYC4Oi5i7y9ZBfX169A/7bV//phbCTMGm71BIbM1SSglMp3gv7WkDGGsfO343Aa3ry8ltD6b2DynVCiMoz6Bep1tS9QpZTykqBPBAu3HmXlrnie7tno7+WlS1aBRjfD/T9Dubr2BKiUUl4W1IngXHIar/wQTcsaZRh+bW1r4/ljsGO+9brxLVb56MIlbYtRKaW8LajHCF5ftJOEi+l8f2dzQkMEDq+HGUMg4yLUjYCiZXQlMaVUvhe0PYI1MaeYtTGOB7rUpUmVUrD5e5jYGwoUhhFLrCSglFJBICh7BCnpDp6bF0Wt8sV4vFt9WPosrP3c6gX0+9YqHqeUUkEiKBPBpytjOHA6mSn3d6BIoQJQtBx0/Afc9AqEBuVfiVIqiAXdT729Jy7w1ep9/KNJCtcV2A1UgC5P61iAUipoeXWMQER6ichuEYkRkb+t2SgihUVkhuvzdSJS25vxOI3h+Xnbua3QRp6OGw2LnwGnU5OAUiqoeS0RiEgo8BlwM9AUGCQiTS/bbSRw1hhTH/gAeNtb8QD8FpfGdXFf8b75L1KpKQyZAyFBO16ulFKAd3sE7YEYY0ysMSYNmA70vWyfvsAk1+vZwI3i1pqQOXf6XALXxbzN4wXmYVoOtspHl6rijUsppVRA8eYYQTXgcKb3cUCH7PYxxmSISAJQHjiVeScRGQWMAggLCyMyMjLHwczZnUp3Z2E21B5JYpnb4Pe1OT5HIEpMTMzV31cg0zYHB22z5wTEYLExZhwwDiA8PNxERETk+BzXdXYyYX4ofe/q7uHo/FtkZCS5+fsKZNrm4KBt9hxv3ho6AtTI9L66a1uW+4hIAaA0cNobwRQMDaFR+YDIe0op5VPeTATrgQYiUkdECgEDgYWX7bMQuNf1uh+w0hhjvBiTUkqpy3jtV2TXPf/RwE9AKDDBGLNDRF4BNhhjFgLjgckiEgOcwUoWSimlfMir90qMMYuBxZdteyHT6xSgvzdjUEopdWX6EL1SSgU5TQRKKRXkNBEopVSQ00SglFJBThOBUkoFOU0ESikV5DQRKKVUkJNAm8grIieBg7k8vAKXFbQLAtrm4KBtDg55aXMtY0zFrD4IuESQFyKywRgTbnccvqRtDg7a5uDgrTbrrSGllApymgiUUirIBVsiGGd3ADbQNgcHbXNw8Eqbg2qMQCml1N8FW49AKaXUZfJlIhCRXiKyW0RiRGRMFp8XFpEZrs/XiUht30fpWW60+UkRiRaRbSKyQkRq2RGnJ12tzZn2u0tEjIgE/BMm7rRZRO52fa93iMhUX8foaW78264pIr+IyGbXv+/edsTpKSIyQUTiRWR7Np+LiHzs+vvYJiJt8nxRY0y++sJaBGcfUBcoBGwFml62zyPAl67XA4EZdsftgzZ3BYq5Xj8cDG127VcSWA2sBcLtjtsH3+cGwGagrOt9Jbvj9kGbxwEPu143BQ7YHXce29wFaANsz+bz3sASQICOwLq8XjM/9gjaAzHGmFhjTBowHeh72T59gUmu17OBG0VEfBijp121zcaYX4wxya63a7HWkA5k7nyfAV4F3gZSfBmcl7jT5geAz4wxZwGMMfE+jtHT3GmzAUq5XpcGjvowPo8zxqzGWrExO32B74xlLVBGRKrk5Zr5MRFUAw5neh/n2pblPsaYDCABKO+T6LzDnTZnNhLrN4pAdtU2u7rMNYwxi3wZmBe5831uCDQUkd9FZK2I9PJZdN7hTptfAoaISBzWioiP+iY02+T0//tVeXWpSuV/RGQIEA7cYHcs3iQiIcD7wHCbQ/G1Ali3hyKwen2rRaS5MeacrVF51yBgojHmPRHphLUO+jXGGKfdgQWK/NgjOALUyPS+umtblvuISAGs7uRpn0TnHe60GRHpDjwP9DHGpPooNm+5WptLAtcAkSJyAOte6sIAHzB25/scByw0xqQbY/YDe7ASQ6Byp80jgZkAxpg/gCJYNXnyK7f+v+dEfkwE64EGIlJHRAphDQYvvGyfhcC9rtf9gJXGNQoToK7aZhFpDXyFlQQC/b4xXKXNxpgEY0wFY0xtY0xtrHGRPsaYDfaE6xHu/Nuej9UbQEQqYN0qivVlkB7mTpsPATcCiEgTrERw0qdR+tZCYJjr6aGOQIIx5lheTpjvbg0ZYzJEZDTwE9YTBxOMMTtE5BVggzFmITAeq/sYgzUoM9C+iPPOzTa/C5QAZrnGxQ8ZY/rYFnQeudnmfMXNNv8E9BCRaMABPGOMCdjerpttfgr4WkT+iTVwPDyQf7ETkWlYybyCa9zjRaAggDHmS6xxkN5ADJAMjMjzNQP470sppZQH5MdbQ0oppXJAE4FSSgU5TQRKKRXkNBEopVSQ00SglFJBThOBCggikmjz9SNE5Mcc7L8mh+d/SESGuV5PFJF+eTh+uIhUzcnxKrjlu3kESnmCiIQaYxy5Pd4Yc20O9/8yt9cSkQKXHT8c2E6AF19TvqM9AhUwRKSEay2FTSISJSJ9M302zFWbfauITHZtCxORea5tW0XkWtf2+SKy0VWvf1SmcySKyHsishXo5KqDv0tENgF3ZhNTMxH5U0S2uK7f4NK5XH9GiMgqEVkgIrEi8paI3OM6JkpE6rn2e0lEns7i/C+IyHoR2S4i4y5VyRWRSBH5UEQ2AI9fOt7VkwgHprhiukVE5mc6300iMi+P3wqVz2giUIEkBbjDGNMGa32F91zT7JsBY4FuxpiWwOOu/T8GVrm2tQF2uLbfZ4xpi/UD8zERuVR5tjhWbfeWwAbga+A2oC1QOZuYHgI+Msa0cp0vLot9Wrr2awIMBRoaY9oD33D1SpmfGmPaGWOuAYoCt2b6rJAxJtwY896lDcaY2a7Y73HFtBhoLCIVXbuMACZc5ZoqyGgiUIFEgDdEZBuwHKv0bhjQDZhljDkFYIy5VMu9G/CFa5vDGJPg2v6Y67f+tVjFuy4VZXMAc1yvGwP7jTF7XeUKvs8mpj+A50Tk30AtY8zFLPZZb4w55ir0tw9Y5toeBdS+Spu7irWKXpSrPc0yfTbjKsfiin0yVpnmMkAnAr8EufIwHSNQgeQeoCLQ1hiT7qoqWiQnJxCRCKA70MkYkywikZnOkZLTcQFjzFQRWQfcAiwWkQeNMSsv2y1zpVdnpvdOrvB/UESKAJ9jrax2WERe4q/tTXIzzG+BH7B6VLNca3Ao9f+0R6ACSWkg3pUEugKX1l1eCfS/dItHRMq5tq/AWpYTEQkVkdKuc5x1JYHGWOWps7ILqH3pHj5Wzfu/EZG6QKwx5mNgAdAiTy38q0s/9E+JSAmsSrnuuIBVhhsAY8xRrIHjsVhJQam/0ESg/J5Ya0akAlOAcNdtkmFYP6wxxuwAXgdWuW75vO869HGsWytRwEas9WyXAgVEZCfwFtbtob8xxqQAo4BFrsHi7Ep33w1sF5EtWOsffJfH5maO4RzWOMV2rOqb6908dCLwpWuwuKhr2xTgsDFmp6fiU/mHVh9Vfk9EWgJfuwZYVS6IyKfAZmPMeLtjUf5HxwiUXxORh4DHgCfsjiVQichGrPGEp+yORfkn7REopVSQ0zECpZQKcpoIlFIqyGkiUEqpIKeJQCmlgpwmAqWUCnKaCJRSKsj9HzIIbiIPwebzAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(6, 5))\n", "plt.plot(xs, j2s(xs))\n", "plt.plot(xs, xs, '--')\n", "plt.grid()\n", "plt.xlabel('Jaccard similarity')\n", "plt.ylabel('Simon similarity')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Proof by contradiction for $1 - S$ NOT being a proper distance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since $1 - J$ is a proper distance:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align*}\n", "1 - J_{AB} &\\le (1 - J_{AC}) + (1 - J_{CB}) \\\\\n", "J_{AC} + J_{CB} &\\le J_{AB} + 1\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assume $1 - S$ is also a proper distance, then" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align*}\n", "S_{AC} + S_{CB} &\\le S_{AB} + 1 \\\\\n", "2 - \\frac{2}{1 + J_{AC}} + 2 - \\frac{2}{1 + J_{CB}} &\\le 2 - \\frac{2}{1 + J_{AB}} + 1 \\\\\n", "\\frac{2}{1 + J_{AC}} + \\frac{2}{1 + J_{CB}} & \\ge \\frac{2}{1 + J_{AB}} + 1 \\\\\n", "\\frac{2 + J_{AC} + J_{CB}}{(1 + J_{AC})(1 + J_{CB})} &\\ge \\frac{3 + J_{AB}}{2(1 + J_{AB})}\\\\\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since $J_{AC} + J_{CB} \\le J_{AB} + 1$, so" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align*}\n", "\\frac{3 + J_{AB}}{(1 + J_{AC})(1 + J_{CB})} &\\ge \\frac{2 + J_{AC} + J_{CB}}{(1 + J_{AC})(1 + J_{CB})} \\ge \\frac{3 + J_{AB}}{2(1 + J_{AB})}\\\\\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we only need to show $(1 + J_{AC})(1 + J_{CB}) \\le 2(1 + J_{AB})$," ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align*}\n", "(1 + J_{AC})(1 + J_{CB}) &\\le 2(1 + J_{AB}) \\\\\n", "1 + J_{AC} + J_{CB} + J_{AC}J_{CB} &\\le 2 + J_{AB} + J_{AC}J_{CB} \\le 2 + 2 J_{AB} \\\\\n", "J_{AC}J_{CB} &\\le J_{AB}\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last inequality obviously doesn't always hold, so $S_{AC} + S_{CB} \\le S_{AB} + 1$ doesn't always hold, hence $S$ isn't a proper distance." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.1" } }, "nbformat": 4, "nbformat_minor": 2 }