├── .gitignore ├── .readthedocs.yaml ├── .travis.yml ├── README.rst ├── RLdata ├── README.md ├── RLdata500.R ├── RLdata500.csv └── RLdata500dupes.csv ├── mergic ├── __init__.py ├── mergic.py └── test.py ├── setup.py └── tennis ├── .mergic_cache ├── README.md ├── Tennis-Major-Tournaments-Match-Statistics.zip ├── diff.json ├── edited.json ├── groups.json ├── merge.csv ├── names.txt ├── rebuilt.json ├── requirements.txt └── tennis_mergic.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pyc 2 | mergic.egg-info/ 3 | dist/ 4 | AusOpen-men-2013.csv 5 | AusOpen-women-2013.csv 6 | FrenchOpen-men-2013.csv 7 | FrenchOpen-women-2013.csv 8 | USOpen-men-2013.csv 9 | USOpen-women-2013.csv 10 | Wimbledon-men-2013.csv 11 | Wimbledon-women-2013.csv 12 | .mergic_cache 13 | .coverage 14 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # .readthedocs.yaml 2 | # Read the Docs configuration file 3 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 4 | 5 | # Required 6 | version: 2 7 | 8 | # Set the version of Python and other tools you might need 9 | build: 10 | os: ubuntu-22.04 11 | tools: 12 | python: "3.11" 13 | 14 | # Build documentation in the docs/ directory with Sphinx 15 | sphinx: 16 | configuration: docs/conf.py 17 | 18 | # We recommend specifying your dependencies to enable reproducible builds: 19 | # https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html 20 | # python: 21 | # install: 22 | # - requirements: docs/requirements.txt 23 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | # travis-ci.org configuration 2 | 3 | 4 | language: python 5 | 6 | 7 | python: 8 | - 2.7 9 | 10 | 11 | # integrate with coveralls.io: 12 | 13 | install: 14 | - pip install coveralls 15 | 16 | 17 | script: 18 | - coverage run --source=mergic --omit=*init* mergic/test.py 19 | 20 | 21 | after_success: 22 | coveralls 23 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | .. image:: https://travis-ci.org/ajschumacher/mergic.svg 2 | :target: https://travis-ci.org/ajschumacher/mergic 3 | :alt: Build Status 4 | 5 | .. image:: https://coveralls.io/repos/ajschumacher/mergic/badge.svg 6 | :target: https://coveralls.io/r/ajschumacher/mergic 7 | :alt: Test Coverage 8 | 9 | ====== 10 | mergic 11 | ====== 12 | ----------------------------------------------------------- 13 | workflow support for reproducible deduplication and merging 14 | ----------------------------------------------------------- 15 | 16 | Say you have a bunch of strings, and some of them are different but refer to the same thing. Maybe it's just some long list, maybe it's the contents of two key columns from data sets that you'd like to merge. 17 | 18 | :: 19 | 20 | David Copperfield 21 | Lance Burton 22 | Dave Copperfield 23 | Levar Burton 24 | 25 | Here's what you can do with ``mergic``: 26 | 27 | Give ``mergic`` all your identifiers, one per line. If they are in a file called ``originals.txt``: 28 | 29 | .. code:: bash 30 | 31 | mergic calc originals.txt 32 | 33 | You will see output about the possible groupings ``mergic`` can produce based on its default distance function. (It's easy to use a custom distance function—see below.) 34 | 35 | :: 36 | 37 | num groups, max group, num pairs, cutoff 38 | ---------------------------------------- 39 | 4, 1, 0, -0.909090909091 40 | 3, 2, 1, 0.0909090909091 41 | 2, 2, 2, 0.25 42 | 1, 4, 6, 0.714285714286 43 | 44 | There are 4 groupings that ``mergic`` can make with the given distance function, ranging from a group for every name to a single group for all four names. 45 | 46 | The ``num groups`` is the number of groups that ``mergic`` can make with the given ``cutoff``. 47 | 48 | The ``max group`` is the number of items in the largest group for that grouping. 49 | 50 | The ``num pairs`` column indicates the number of within-group links that correspond to the grouping. In some sense this represents how much work it is to check all the linkages that ``mergic`` is making. Thinking in groups is much better than thinking in individual pairwise comparisons, but the metric is useful for summarizing how much linking is happening. 51 | 52 | The ``cutoff`` determines which pairs of items are put in the same group. If the distance between two items is equal to or less than the ``cutoff``, those items will be grouped together. 53 | 54 | Select a cutoff to produce the grouping you would like to see. If you would like to use the cutoff 0.3 and put the results in a file called ``grouping.json``: 55 | 56 | .. code:: bash 57 | 58 | mergic make originals.txt 0.3 > grouping.json 59 | 60 | Now ``grouping.json`` contains a grouping of your original data, specified in `JSON `__. It's designed to be human-readable, and human-editable, so you can check it and improve it as needed. The largest groups will be at the top, and similar items will be near one another. 61 | 62 | :: 63 | 64 | { 65 | "Lance Burton": [ 66 | "Lance Burton", 67 | "Levar Burton" 68 | ], 69 | "David Copperfield": [ 70 | "Dave Copperfield", 71 | "David Copperfield" 72 | ] 73 | } 74 | 75 | There are two proposed groups, with proposed names "Lance Burton" and "David Copperfield". You probably want to copy the produced file and edit the copy. 76 | 77 | .. code:: bash 78 | 79 | cp grouping.json grouping_fixed.json 80 | # edit `grouping_fixed.json` 81 | 82 | You can edit the proposed group names—the keys of the object—if you like. The original values from the data are in the array values of the object, and you can move them around to correct the grouping. In this case you could also re-run ``mergic`` with a cutoff of 0.1 to get a correct grouping: 83 | 84 | :: 85 | 86 | { 87 | "David Copperfield": [ 88 | "Dave Copperfield", 89 | "David Copperfield" 90 | ], 91 | "Lance Burton": [ 92 | "Lance Burton" 93 | ], 94 | "Levar Burton": [ 95 | "Levar Burton" 96 | ] 97 | } 98 | 99 | Now that ``grouping_fixed.json`` is as perfect as it can be, you can move forward. 100 | 101 | You can also compare your two JSON grouping files and see what you changed: 102 | 103 | .. code:: bash 104 | 105 | mergic diff grouping.json grouping_fixed.json > diff.json 106 | 107 | Now the file ``diff.json`` contains just what's different between ``grouping.json`` and ``grouping_fixed.json``. The ``mergic diff`` command is analogous to regular ``diff`` for text files, but it is aware of the JSON partition format so it can capture changes intelligently. 108 | 109 | You can apply changes to a ``mergic``-produced file to recover your edited version. 110 | 111 | .. code:: bash 112 | 113 | mergic apply grouping.json diff.json > grouping_new.json 114 | 115 | Now ``grouping_new.json`` is equivalent to ``grouping_fixed.json``, as you can verify: 116 | 117 | .. code:: bash 118 | 119 | mergic diff grouping_fixed.json grouping_new.json 120 | # {} // (no changes) 121 | 122 | In this way you have a complete and verifiable record of your work, at the level of whole files and also at the level of changes made by hand. 123 | 124 | The JSON grouping format is very convenient for humans, but for tabular data a merge table is more useful. A merge table has one column with the original values from your data and one column with the new keys. These are named ``original`` and ``mergic`` in the output: 125 | 126 | .. code:: bash 127 | 128 | mergic table grouping_fixed.json > merge_table.csv 129 | 130 | The file ``merge_table.csv`` looks like this: 131 | 132 | :: 133 | 134 | original,mergic 135 | Lance Burton,Lance Burton 136 | Levar Burton,Levar Burton 137 | Dave Copperfield,David Copperfield 138 | David Copperfield,David Copperfield 139 | 140 | This merge table can now be used with any tabular data system. For merges, first merge it on to both tables and then merge by the ``mergic`` key. For deduplication, merge it on to the table(s) of interest and then use the ``mergic`` column as you would have used the original data. 141 | 142 | 143 | Installation 144 | ============ 145 | 146 | .. code:: bash 147 | 148 | pip install mergic 149 | 150 | 151 | Using a Custom Distance Function 152 | ================================ 153 | 154 | The ``mergic`` package provides a command-line script called ``mergic`` that uses Python's built-in ``difflib.SequenceMatcher.ratio()`` for calculating string distances, but a major strength of ``mergic`` is that it enables easy customization of the distance function via the ``mergic.Blender`` class. Making a custom ``mergic`` script is as easy as: 155 | 156 | .. code:: python 157 | 158 | #!/usr/bin/env python 159 | # custom_mergic.py 160 | import mergic 161 | 162 | # Any custom distance you want to try! e.g., 163 | def my_distance(a, b): 164 | return abs(len(a) - len(b)) 165 | 166 | mergic.Blender(my_distance).script() 167 | 168 | Now ``custom_mergic.py`` can be used just like the standard ``mergic`` script! 169 | 170 | There is also a function that determines how to make a key for a group. It takes a list and returns a string. By default ``mergic.Blender`` will use the longest of a group's values (the first longest, in stable sorted order). You can also supply a custom function for generating keys. 171 | 172 | 173 | Distances You Might Like 174 | ------------------------ 175 | 176 | `Levenshtein string edit distance `__: The classic! It has many implementations; one of them is `python-Levenshtein `__. 177 | 178 | .. code:: python 179 | 180 | # pip install python-Levenshtein 181 | import Levenshtein 182 | Levenshtein.distance("fuzzy", "wuzzy") 183 | # 1 184 | 185 | SeatGeek's `fuzzywuzzy `__: As described in their `blog post `__, some people have found these variants to work well in practice. Responses from ``fuzzywuzzy`` are phrased as integer percent similarities; one way to make a distance is to subtract from 100. 186 | 187 | .. code:: python 188 | 189 | # pip install fuzzywuzzy 190 | from fuzzywuzzy import fuzz 191 | 100 - fuzz.ratio("Levensthein", "Leviathan") 192 | # 50 193 | 194 | There are a ton of distances, even just within the two packages mentioned! 195 | 196 | You can also make your own! 197 | -------------------------------------------------------------------------------- /RLdata/README.md: -------------------------------------------------------------------------------- 1 | # RLdata 2 | 3 | Data from the `R` `RecordLinkage` package. 4 | -------------------------------------------------------------------------------- /RLdata/RLdata500.R: -------------------------------------------------------------------------------- 1 | # install.packages('RecordLinkage') 2 | library('RecordLinkage') 3 | data(RLdata500) 4 | write.table(RLdata500, "RLdata500.csv", 5 | row.names=FALSE, col.names=FALSE, 6 | quote=FALSE, sep=",", na="") 7 | 8 | RLdata500lines <- read.table("RLdata500.csv") 9 | RLdata500lines$id <- identity.RLdata500 10 | RLdata500pairs <- merge(RLdata500lines, RLdata500lines, by='id') 11 | RLdata500dupes <- subset(RLdata500pairs, V1.x != V1.y) 12 | RLdata500dupes <- subset(RLdata500dupes, !duplicated(id)) 13 | RLdata500dupes$id <- NULL 14 | write.table(RLdata500dupes, "RLdata500dupes.csv", 15 | row.names=FALSE, col.names=FALSE, 16 | sep=",") 17 | -------------------------------------------------------------------------------- /RLdata/RLdata500.csv: -------------------------------------------------------------------------------- 1 | CARSTEN,,MEIER,,1949,7,22 2 | GERD,,BAUER,,1968,7,27 3 | ROBERT,,HARTMANN,,1930,4,30 4 | STEFAN,,WOLFF,,1957,9,2 5 | RALF,,KRUEGER,,1966,1,13 6 | JUERGEN,,FRANKE,,1929,7,4 7 | GERD,,SCHAEFER,,1967,8,1 8 | UWE,,MEIER,,1942,9,20 9 | DANIEL,,SCHMIDT,,1978,3,4 10 | MICHAEL,,HAHN,,1971,2,27 11 | PETER,,JUNG,,1988,1,9 12 | MANFRED,,HOFFMANN,,1933,8,25 13 | MICHAEL,,FISCHER,,1951,7,1 14 | MANFRED,,BECKER,,1973,7,27 15 | WALTER,,SCHNEIDER,,1953,8,26 16 | MARTIN,,SCHROEDER,,1988,2,3 17 | ALEXANDER,,MUELLER,,1974,9,9 18 | HANS,,SCHAEFER,,2003,6,22 19 | STEFAN,,MUELLER,,1949,8,13 20 | GERHARD,,SCHAEFER,,1964,4,29 21 | DENNIS,,SCHAEFER,,1956,4,11 22 | THORSTEN,,KLEIN,,1966,9,20 23 | PETER,,BRANDT,,1997,4,1 24 | WALTER,,FISCHER,,1997,4,7 25 | MATTHIAS,,HAAS,,1955,7,8 26 | WOLFGANG,,WOLF,,1961,12,28 27 | BENJAMIN,,MUELLER,,1997,4,19 28 | JAN,JUERGEN,SCHAEFER,,1946,5,25 29 | PETER,,WINTER,,1958,8,18 30 | SVEN,,BRAUN,,1994,1,22 31 | WOLFGANG,,LEHMANN,,1971,1,3 32 | CHRISTIAN,JENS,SCHULZ,,2008,5,18 33 | ANDREAS,FRANK,SCHUMACHER,,1928,7,7 34 | HEINZ,,BOEHM,,1938,12,20 35 | HARALD,,BECKER,,1951,2,24 36 | KURT,,SCHMIDT,,1998,4,27 37 | HARTMHUT,,HOFFMSNN,,1929,12,29 38 | HORST,,ENGEL,,1999,2,27 39 | DIETER,,NEUMANN,,1994,6,20 40 | WOLFGANG,,SCHMITT,,1986,11,29 41 | SVEN,,SCHUMACHER,,2008,2,27 42 | DIETER,,WEISS,,1945,1,10 43 | GERD,,BAUERH,,1968,7,27 44 | THORSTEN,,HARTMANN,,1935,3,11 45 | FRIEDRICH,,PETERS,,1954,10,16 46 | HERMANN,,MAIER,,1999,10,12 47 | HELMUT,,MUELLER,,1930,7,30 48 | WERNER,,KOERTIG,,1965,11,28 49 | WOLFGANG,,SEIDEL,,1974,2,5 50 | STEFAN,,MUELLER,,1957,6,7 51 | DIETER,,WINTER,,2000,8,20 52 | HOLGER,,SCHNEIDER,,1931,4,2 53 | JUERGEN,,SCHMIDT,,1956,7,23 54 | THORSTEN,,WEBER,,1965,11,21 55 | JENS,,SCHMIDT,,1961,1,10 56 | PETER,GUENTHER,ZIMMERMANN,,1996,2,10 57 | MARTIN,,HERRMANN,,1944,8,13 58 | FRANK,,MUELLDR,,1978,5,20 59 | BERND,,JUNG,KLEIN,1935,1,14 60 | THORSTEN,,FUCHS,,1952,9,27 61 | ANDRE,,FISCHER,,1943,6,25 62 | SIEGFRIED,,BRANDT,,1982,2,14 63 | DIETER,,BOEHM,,1972,7,1 64 | JUERGEN,,MEIER,,1983,7,7 65 | OTTO,,WERNER,,1926,4,12 66 | KARL,,WEBER,,1934,10,14 67 | GERHARD,,MEYER,,1959,12,3 68 | PETEVR,,FUCHS,,1972,9,12 69 | GUENTHER,,ZIMMERMANN,,1999,1,19 70 | PETER,,SCHULZ,,1927,7,19 71 | CHRISTIAN,,GROSS,,1959,4,7 72 | HARTMUT,,HOFFMANN,,1929,12,29 73 | JUERGEN,,MUELLER,,1946,11,22 74 | JOHANNES,,MUELLER,,1963,12,16 75 | KARL,,KAISER,,1966,9,12 76 | ANDREAS,,ZIEGLER,,1964,5,5 77 | HOLGER,,FISCHER,,1984,4,15 78 | STEFAN,,BRAUN,,1997,12,30 79 | ANDREAS,,KUEHN,,1950,11,2 80 | HORST,,KRAUSE,,1946,8,28 81 | MANFRED,,KLEIN,,1969,8,3 82 | FRANK,,SCHMIDT,,2003,6,13 83 | STEFAN,,SCHULZ,,2001,9,12 84 | BERND,,SEIDEL,,2007,2,16 85 | THORSKTEN,,MARTIN,,1995,11,15 86 | GERHARD,,MEYER,,1941,11,25 87 | HANS,,SCHULZE,,1972,11,27 88 | KARL,,HOFFMANN,,1944,10,21 89 | DETLEF,,SCHMIDT,,1937,4,6 90 | MICHAEL,,SCHAEFER,,1991,5,30 91 | ANDREAS,,MAYER,,1959,12,24 92 | HEINZ,,LEHMANN,,1948,9,25 93 | MARTIN,,KUEHN,,1959,10,8 94 | BERND,,FRANK,,1933,1,30 95 | WERNER,,KRAEMER,,1938,1,1 96 | THOMAS,,HUBER,,1966,11,29 97 | RAINER,,KOCH,,1972,8,18 98 | JOERG,,KELLER,,1947,6,26 99 | KLAUS,,SCHUBERT,,1955,10,6 100 | WOLFGANG,,SCHMIDT,,2005,6,30 101 | MANFRED,ANDREAS,SCHULZ,,1998,4,9 102 | WALTER,,SCHMIDT,,1969,5,2 103 | KLAUS,,SCHUMACHER,,1929,6,18 104 | HORST,,RICHTER,,1930,5,27 105 | HORST,,SCHNEIDER,,1983,1,3 106 | ANDRE,,MUELLER,,1976,2,25 107 | MATTHIAS,,HAAS,,1955,8,8 108 | GERHARD,,FRIEDRICH,,1987,2,10 109 | GUENTHER,,STEIN,,1975,8,14 110 | MARTIN,,HOFFMANN,,1971,1,19 111 | HEINZ,,BOEHMR,,1938,12,20 112 | GERHARD,,ERNSR,,1980,12,16 113 | WOLFGANG,,VOGEL,,1995,1,4 114 | FRIEDRICH,,WEBER,,1948,8,24 115 | DIETER,,WINKLER,,1964,11,3 116 | GERHARD,,ERNST,,1980,12,16 117 | HANS,,SCHULZE,,1972,11,28 118 | WILFRIED,,HOFFMANN,,1994,10,20 119 | ALEXANDER,,FRIEDRICH,,1968,8,14 120 | FRANK,,BERGMANN,,1998,11,8 121 | HANS,,SCHMIDT,,1935,6,25 122 | THOMAS,,MAIER,,1941,4,5 123 | CHRISTIAN,,KOERTIG,,1967,9,11 124 | SIEGFRIED,,MUELLER,,1925,9,26 125 | CHRISTIAN,,MUELLEPR,,1974,8,9 126 | HEINZ,,SCHULZ,,1971,9,23 127 | KARL,,KLEIN,,2002,6,20 128 | FRANK,,KRUEGER,,1997,2,10 129 | MICHAEL,,VOGEL,,1967,8,26 130 | MICHAEL,,MEYER,,1988,1,31 131 | WERNER,,SCHMITZ,,1968,8,14 132 | THOMAS,,MOELLER,,1930,1,18 133 | STEFAN,,BRAUN,,1947,12,30 134 | THOMAS,,JUNG,,1949,9,30 135 | KARL,,SIMON,,1954,5,30 136 | KURT,,FISCHER,,1968,4,7 137 | FRIEDRICH,,SCHUBERT,,1930,8,15 138 | GUENTHER,,THOMAS,,1957,2,14 139 | GUENTHER,,HOFMANN,,1942,8,27 140 | BERND,,WOLF,,1940,8,30 141 | KLAUS,,MEIER,,1983,11,10 142 | KARL,,KLEIBN,,2002,6,29 143 | MANFRED,,WOLF,,1954,5,24 144 | WOLFGANG,,ENGEL,,1936,12,27 145 | HARALD,,WEBER,,1977,6,1 146 | ANDREAS,,ZIEGLER,,1962,12,6 147 | MICHAEL,,MYER,,1988,1,31 148 | FRANK,,MUELLER,,1978,5,20 149 | BERND,,FISCHER,,1947,3,20 150 | MICHAEL,,KELLER,,1965,3,19 151 | MARTIN,,BAUMANN,,1939,4,25 152 | WALTER,,SCHROEDER,,1998,3,28 153 | FRANK,,MUELLER,,2000,6,22 154 | HORST,,GUENTHER,,1926,7,2 155 | UWE,,KRAEMER,,1981,9,9 156 | ULRICH,,WEISS,,1992,7,19 157 | HELMUT,,ZIEGLER,,1971,8,11 158 | PETER,,BECKER,,1960,9,5 159 | SVEN,,STEIN,,1960,10,14 160 | WOLFGANG,,SCHULTE,,1963,9,4 161 | MANFRED,,SCHAEFER,,1983,3,11 162 | STEFAN,,MEYER,,1960,2,23 163 | RAINER,,ALBRECHT,,1976,11,10 164 | FLORIAN,,KLEIN,,1928,6,21 165 | FRANK,,BERGKANN,,1998,11,8 166 | BERNHARD,,WERNER,,1974,2,14 167 | KLAUS,,MOELLER,,1989,3,10 168 | INGO,,VOGEL,,1976,5,22 169 | GERD,,LUDWIG,,1953,12,25 170 | MARTIN,,HOFFMANN,,1935,11,26 171 | SVEN,,HUBER,,1951,10,1 172 | NORBERT,,BECK,,1980,10,2 173 | UWE,,WEBER,ENGEL,1952,7,7 174 | CARSTEN,,SCHMITT,,2001,6,27 175 | ANDRE,,MUELLER,,1976,1,25 176 | MANFRED,,MEYER,,1959,10,12 177 | JOHANNNES,,SCHULZ,,1974,1,17 178 | UWE,,ALBRECHT,,1967,1,8 179 | KLAUS,,BECKER,,1956,11,1 180 | DETLEF,,LANGE,,1970,10,19 181 | WERNER,,LANGE,,1997,3,26 182 | WERNER,,RICHTER,,1984,8,28 183 | ULRICH,,MUELLER,,1962,6,19 184 | MARCEL,,SCHMITZ,,1933,6,29 185 | ANDREAS,,MEIER,,1932,12,30 186 | FRANK,,SCHMIDT,,1988,12,22 187 | THORSTEN,,MARTIN,,1995,11,15 188 | MARKUS,,SAUER,,2003,6,5 189 | WOLFGANG,,WEBER,,1954,4,8 190 | PETER,,FUCHS,,1972,9,12 191 | MARKUS,,MUELLER,,1937,11,16 192 | DIETER,,SCHNEIDER,,1968,8,21 193 | CHRISTIAN,,MUELLER,,1974,8,9 194 | FRANK,,SIMON,,1935,9,20 195 | RUDOLF,,WOLFF,,1975,11,11 196 | DIETER,KLAUS,SCHMIDT,,1950,8,20 197 | JUERGEN,,FUCHS,,2007,9,20 198 | HANS,,SCHWARZ,,1926,1,18 199 | ERNST,,SCHROEDER,,1999,7,10 200 | GUENTHER,FRIEDRICH,WOLF,,1975,4,23 201 | HEINZ,,WAGNER,,1960,6,24 202 | KLAUS,,HARTMANN,,1992,11,1 203 | GERHARD,,FRIEDRICH,,1957,2,10 204 | CARSTEN,,BRANDT,,1938,1,14 205 | CHRISTIAN,,GROSS,,2008,4,7 206 | JAN,,SCHULZ,,1938,9,6 207 | JOHANNES,,SCHULZ,,1974,1,17 208 | KLAUS,,HOFFMANN,,1966,8,1 209 | ROLBF,,NEUMANN,,1967,3,29 210 | PETER,,SCHUBERT,,1961,12,3 211 | LARS,,MAYER,,1929,6,25 212 | STEFAN,,HOFFMANN,,2000,4,15 213 | UWE,,GROSS,,1982,5,27 214 | JENS,,WEBER,,1959,7,24 215 | STEFAN,,MUELLER,,2004,4,20 216 | DIETER,,SCHNNIDER,,1968,8,21 217 | HORST,,MEIER,,1977,6,6 218 | GUENTHER,,SCHMIDT,,2006,10,29 219 | KLAUS,,SCHMIDT,SCHMIDT,1997,12,15 220 | MICHAEL,,KUEHN,,1943,10,9 221 | PETER,,FRANKE,,1973,8,19 222 | HEINRICH,,SCHMITZ,,1957,5,31 223 | VOLKER,,GROSS,,1981,8,2 224 | KLAUS,,SCHMITT,,1980,4,23 225 | WILHELM,,MARTIN,,1964,12,22 226 | THOMAS,,SCHUSTER,,1978,7,25 227 | ROLF,,NEUMANN,,1967,3,29 228 | OLIVER,,HERRMANN,,1964,4,5 229 | PETERS,,BECKER,,1960,9,5 230 | BERND,,MUELLER,,1944,11,16 231 | MANFRED,,SCHAEFER,,2007,7,13 232 | MARTIN,,SCHMIDT,,1974,2,6 233 | THORSTEN,,FISCHER,,1937,7,19 234 | STEFAN,,MUELLER,,1957,6,1 235 | HARALD,,SCHNEIDER,,1983,5,17 236 | INGO,,FUCHS,,1941,1,15 237 | STEFAN,,KOEHLER,,1977,4,27 238 | WERNIER,,KOERTIG,,1965,11,28 239 | THORSTEN,,KRAUSE,,1975,6,19 240 | HARALD,,WEBER,,1977,6,2 241 | CHRISTIAN,ALEXANDER,HERRMANN,,1982,7,9 242 | BENJAMIN,,MUELLER,,2005,4,20 243 | WOLFGANG,,MUELLER,,1959,2,8 244 | DIETER,,MEYER,,1967,6,16 245 | FRIEDRICH,,MARTIN,,1938,1,20 246 | HANS,,BECKER,,1940,2,6 247 | DIETER,,SCHWARZ,,1996,6,12 248 | HORST,,MEIER,,1972,6,6 249 | ROLF,,KOERTIG,,1934,9,9 250 | GERHARD,,SCHWARZ,,1959,6,22 251 | BAERBEL,,JAEGER,,1956,6,26 252 | INGRID,,KOERTIG,,1960,5,6 253 | SABINE,,SCHULZ,,1996,5,15 254 | STEFANIE,,FISCHER,,1943,11,25 255 | ANNA,,SCHMIDT,,1976,3,1 256 | STEFANIE,,WEBER,,1964,11,24 257 | GERDA,,SCHWARZ,,1975,12,14 258 | SABINE,,HARTMANN,,1939,6,16 259 | GISELA,,BRAUN,,1949,12,22 260 | BRIGITTE,,JAEGER,,1982,12,15 261 | INGRID,,FRIEDRICH,,1949,6,15 262 | RENATE,,VOGT,,1956,9,17 263 | NICOLE,,WEBER,,1947,7,2 264 | HEIKE,,THOMAS,,1982,3,27 265 | MARIANNFE,,MOELLER,,1961,9,17 266 | KARIN,,HORN,,2002,6,4 267 | ANGELA,,STEIN,,2002,8,30 268 | GABRIELE,GISELA,MEIER,,1961,4,10 269 | RENATE,,KRAUSE,,1945,12,11 270 | MARION,,HOFMANN,,1964,5,12 271 | UTE,,BRAUN,,1975,3,3 272 | MONIKA,,WEISS,,1994,8,19 273 | ANGELIKA,,BERGER,,1994,10,12 274 | HILDEGARD,,POHL,,1985,7,11 275 | HELGA,,WOLF,,1980,2,17 276 | URSULA,,BECK,,1956,7,26 277 | ERIKA,EDITH,BECKER,,1970,7,12 278 | SABINE,,MAIER,,1950,4,19 279 | HERTHA,,MOELLER,,1988,10,12 280 | STEFANIE,,LANGE,,1978,11,10 281 | ERIKA,,FRIEDRICH,,1928,8,19 282 | GISELA,,KUHN,,1967,7,20 283 | ANNA,,LANGE,,1998,3,29 284 | RENATE,,ENGEL,,1975,2,19 285 | ERIKA,,WEBER,,1995,2,1 286 | MARIA,,SCHROEDER,,1955,1,11 287 | HELGA,,SAUER,,1946,8,27 288 | HILDEGARD,,MEYER,,1965,10,3 289 | CHRISTINE,,PETERS,,1993,2,5 290 | HELGA,ELFRIEDE,BERGER,,1989,1,18 291 | SABINE,,VOGT,,1968,4,8 292 | ANDREA,,SCHWARZ,,1949,6,17 293 | KARIN,,MARTIN,,1954,10,22 294 | HANNELORE,,WEBER,,1953,3,31 295 | HANNELORE,,BAUER,,1952,3,23 296 | HEIKE,,HARTMANN,,1948,12,27 297 | ANDREA,,WEBER,,1945,5,29 298 | SONJA,,FISCHER,,1989,7,17 299 | ERIKA,,SCHMITZ,,1936,12,10 300 | SABINE,ELKE,BRANDT,,1941,5,2 301 | MARIA,,WOLF,,1971,11,2 302 | ANKE,,KOCH,,1963,5,3 303 | BRIGITTE,,SCHUSTER,,1933,2,25 304 | ILSE,,SIMON,,1972,9,1 305 | CLAUDIA,,GUENTHER,,1934,5,27 306 | ANJA,,KLEIN,,1967,1,27 307 | ILSE,,SCHMIDT,,1924,12,26 308 | BRITTA,,VOGT,,1941,8,1 309 | KARIN,,MUELLER,,1947,8,29 310 | MONIKA,,SCHNEIDER,,1937,6,2 311 | BIRGIT,,KOCH,,1970,11,24 312 | STEFANIE,,WEISS,,1971,9,11 313 | URSULA,BIRGIT,MUELLRR,,1940,6,15 314 | RENATE,,SCHUTE,,1940,12,29 315 | ANNA,WALTRAUD,FISCHER,,1958,11,27 316 | URSULA,,FISCHER,,1995,5,21 317 | ANDREA,,FISCHER,,1956,2,14 318 | ANJA,,BRAUN,,1997,9,20 319 | HEIKE,,BAUER,,2008,7,2 320 | MONIKA,,FRANKE,,1970,1,6 321 | ANKE,,WAGNER,,1934,8,27 322 | ANNA,,LANGK,,1998,3,29 323 | GABRIELE,,BECKER,,1944,1,31 324 | GISELA,,BECKER,,1990,1,22 325 | PETRA,,MEIER,,1969,8,15 326 | GERTRUD,,WOLF,,1948,1,12 327 | CHRISTINA,,FRIEDRICH,,1968,10,1 328 | NICOLE,,SOMMER,,1929,7,29 329 | BAERBEL,,MUELLER,,1935,2,10 330 | MARIANNE,,FISCHER,,1941,12,8 331 | INGRID,,KRAJSE,,1985,9,3 332 | GERDA,,WERNER,,1982,9,25 333 | SILKE,,KOEHLER,,1967,2,14 334 | INGEBORG,,SCHMIDT,,1965,9,30 335 | ANDREA,,SCHMIDT,,1966,2,21 336 | JUTTA,,ROTH,SCHMITT,1995,2,4 337 | ELKE,,MUELLER,,1985,12,14 338 | GISELA,,MEYER,,1939,6,3 339 | HANNELORE,,KOERTIG,,1935,3,11 340 | SUSANNE,,WEBER,,1997,11,25 341 | BAERBEL,,WOLF,,1938,3,20 342 | GERTRUD,,MEYER,,1963,9,18 343 | HANNELORE,,MUELLER,,1934,7,31 344 | EDITH,,KRAUSE,,1937,2,28 345 | ANTJE,,LUDWIG,,1935,4,18 346 | URSULA,,FISCHER,,1950,9,1 347 | SABINE,,MUELLER,,1968,11,26 348 | URSULA,,RICHTER,,1947,3,30 349 | JUTTA,,KAISER,,1971,1,26 350 | GISELA,,SCHROEDER,,1929,2,4 351 | HELGA,,SCHNEIDER,,2000,4,5 352 | MONIKA,,SCHULTE,,1980,5,30 353 | INGE,,SEIDEL,,1949,9,4 354 | MARION,,NEUMANN,,1982,1,18 355 | INGEU,,SEIDEL,,1949,8,4 356 | BRIGITTE,EDITH,PETERS,,1956,8,21 357 | GERTRUD,,BAUMANN,,1926,5,26 358 | HELGA,ANNA,LANGE,,1965,9,7 359 | HELGA,,BRANDT,,1990,5,22 360 | BRIGITTE,,WAGNER,SCHULZE,1978,12,11 361 | GUDRUN,,MUELLER,,1957,10,2 362 | IRMGARD,,NEUMANN,,1940,12,9 363 | ELKE,,KOCH,,1935,2,5 364 | ANJA,,BECKER,,1947,5,25 365 | SABINE,,MEYER,,1989,5,22 366 | MONIKA,,RICHTER,,1936,1,31 367 | SABINE,,MEYER,,2006,3,17 368 | RENATE,,HOFFMANN,,1930,5,3 369 | ANGELIKA,,SIMON,,1990,6,2 370 | MONIKA,,MUELLER,,2000,8,26 371 | SABINE,,LANG,,1962,1,30 372 | ANGELIKA,,SCHROEDER,,1967,3,15 373 | INGRID,,HOFFMANN,,2005,9,18 374 | STEFANIE,,WEBER,,1972,9,7 375 | ANDREA,,FUCHS,,1959,11,12 376 | ANNA,BARBARA,FUCHS,,1991,8,27 377 | SABAINE,,OTTO,,1940,7,23 378 | MANUELA,,WINTER,,1960,8,30 379 | ERIKA,,WEBER,,1992,2,29 380 | ELKE,,SAUER,,1954,7,4 381 | ANGELIKA,NICOLE,FISCHER,,1989,10,15 382 | SABINE,,GRAF,,1980,9,5 383 | MARIA,,SCHROEDER,,1955,1,12 384 | JULIA,,HARTMANN,,1996,4,29 385 | ANGELA,,STEIN,,2062,8,30 386 | ERIKA,SABINE,NEUMANN,,1999,5,6 387 | PETRA,,FISCHER,,1979,5,22 388 | ANDREA,,WEBER,,1945,5,20 389 | URSULA,,HOFFMANN,,1929,5,12 390 | URSULA,,BERGER,,1970,10,23 391 | GABRIELE,,BECKER,,1990,3,27 392 | HELGA,,KOCH,,1957,9,2 393 | MONIKA,,KOEHLER,,1933,5,20 394 | ELISABETH,,SCHMIDT,,1960,12,1 395 | GISOELA,,BECK,,2003,4,16 396 | ANDREA,,KELLER,,1931,6,24 397 | BIRGIT,,BERGMANN,,2002,8,31 398 | MARION,,SCHMITZ,,1977,5,13 399 | CHRISTINE,,PETERS,,1993,2,6 400 | INGEBORG,,SEIDEL,,1960,1,4 401 | GABRIELE,,SAUER,,1972,6,1 402 | CHRISTA,,SCHWARZ,,1965,7,13 403 | HEIKE,,JUNG,,1932,10,12 404 | GISELA,,BECK,,2003,4,16 405 | PETRA,,GRAF,,1948,6,13 406 | MARGARETE,,FISCHER,,1971,8,12 407 | RENATE,,SCHULTE,,1940,12,29 408 | ANDREA,,SCHMIDT,,1945,2,20 409 | GISELA,ANGELIKA,WOLF,,1992,5,1 410 | ANDREA,,WEBER,,1961,5,19 411 | ANDREA,,FISCHER,,1931,9,7 412 | SILVIA,,WERNER,,1995,8,21 413 | KARIN,,FUCHS,,1961,5,7 414 | GERTRUD,,BAUMANN,,1926,5,20 415 | MARIA,,DIETRICH,,1979,2,6 416 | MARTINA,,LEHMANN,,1935,7,14 417 | KARIN,,BAUER,,1993,6,20 418 | MONIKA,KARIN,BRANDT,,1940,2,18 419 | HEIKE,,OTTO,FISCHER,1944,1,2 420 | MARIA,,DIETTRICH,,1979,2,6 421 | KARIN,,JUNG,,2007,4,9 422 | INGRID,,SCHAEFER,,1956,10,22 423 | GERTRUD,,SEIDEL,,1941,6,11 424 | SABINE,,SCHMIDT,,1984,9,9 425 | BIRGIT,,MUELLER,,1977,8,19 426 | SONJA,,SCHMIDT,,1937,6,5 427 | GISELA,,POHL,,1949,10,9 428 | FRIEDA,,MEIER,,1951,6,2 429 | ANNA,,ALBRECHT,,1964,10,22 430 | INGRID,,STEIN,,1950,3,8 431 | EDITH,,OTTO,,1951,5,14 432 | MONIYKA,,SCHNEIDER,,1937,6,2 433 | SIGRID,,HAHN,,1967,12,19 434 | ELKE,SILKE,BAUER,,1994,5,29 435 | KARIN,,BAUER,,1961,4,9 436 | PETRA,,KRAUSE,,1969,1,17 437 | KARINW,,HORN,,2002,6,4 438 | FRIEDA,,WEBER,,1978,1,18 439 | ANNA,,JAEGER,,1960,10,14 440 | SANDRA,,MEYER,,1964,10,11 441 | KATHRIN,,KOCH,,2005,12,1 442 | ELISABETH,,WEBER,,1965,9,3 443 | HANNELORE,,ALBRECHT,,1963,12,4 444 | SILKE,,MUELLER,,1962,6,14 445 | ANJA,URSULA,WEBER,,1995,6,26 446 | SUSANNE,,BECKER,,1956,1,19 447 | MARIA,,SCHAEFER,,1954,3,25 448 | SABINE,,OTTO,,1940,7,23 449 | CHRISTA,,KRUEGER,,1929,5,2 450 | SABINE,,HARTMANN,,1943,6,16 451 | KATHRIN,,VOGT,,1951,1,3 452 | GERDA,,SCHMITZ,,1964,8,8 453 | MANUELA,,ROTH,,1935,4,27 454 | HELGA,,GROSS,,1939,5,24 455 | JUTTA,,LEHMANN,SCHULZ,1974,11,7 456 | MARIANNE,,MOELLER,,1961,9,17 457 | URSULA,BIRGIT,MUELLER,,1940,6,15 458 | MARTINA,,WOLF,,1967,3,9 459 | RUTH,,BOEHM,,1956,4,12 460 | ASTRID,,MUELLER,,1951,1,18 461 | PETRA,,SCHMIDT,,1983,7,28 462 | CHRISTAH,,SCHWARZ,,1965,7,13 463 | EDITH,,SCHROEDER,,1924,9,27 464 | SONJAD,,FISCHER,,1989,7,17 465 | MARTINA,,GROSS,,1992,2,14 466 | HELGA,ELFRIEDE,BERGER,,1989,1,28 467 | ULRIKE,NICOLE,BECKRR,,1982,8,4 468 | URSULA,,WEBER,,1987,7,22 469 | PETRA,,KLEIN,,1987,3,20 470 | NADINE,,NEUMANN,,1957,2,20 471 | GABRIELE,,SCHNEIDER,,1925,6,26 472 | ULRIKE,NICOLE,BECKER,,1982,8,4 473 | ANNA,GUDRUN,ALBRECHT,,1948,10,30 474 | KARIN,,BRAUN,,1974,5,27 475 | ERNA,,WEBER,,1970,3,28 476 | EDITH,,WAGNER,,1966,12,26 477 | SABINE,,ENGEL,,1956,8,25 478 | MONIKA,,MUELLER,,2000,5,26 479 | JUTTA,,WEBER,KRUEGER,2007,9,28 480 | SUSANNE,,RICHTER,,1955,11,27 481 | SUSANNE,,KLEIN,,1969,3,15 482 | MARION,,MUELLER,,1936,12,26 483 | MARGARETE,,FISCHER,,2007,9,10 484 | RENATE,,GUENTHER,,1927,3,18 485 | HELGA,,SCHULZ,,1951,8,31 486 | GERDA,,MUELLER,,1988,7,19 487 | CHRISTINA,,SCHAEFER,,1949,9,16 488 | JULIA,,BUSCH,,1944,9,12 489 | GABRIELE,,MEYER,,2008,12,16 490 | SUSANNE,,KLEIN,,1960,3,15 491 | INGRID,,KRAUSE,,1985,9,3 492 | SILKE,,BRAUN,,1973,8,2 493 | HANNELORE,,BECKER,,1999,6,29 494 | ILSE,,NEUMANN,,1953,5,14 495 | BRITTA,,KOEHLER,,2001,1,12 496 | GABRIHELE,,BECKER,,1990,3,27 497 | SABINE,,SCHNEIDER,,1953,5,20 498 | MARIA,,SCHNEIDER,,1981,8,8 499 | INGE,,SCHREIBER,,1967,12,13 500 | KARIN,,GUENTHER,,1941,8,19 501 | -------------------------------------------------------------------------------- /RLdata/RLdata500dupes.csv: -------------------------------------------------------------------------------- 1 | "MICHAEL,,MEYER,,1988,1,31","MICHAEL,,MYER,,1988,1,31" 2 | "HORST,,MEIER,,1972,6,6","HORST,,MEIER,,1977,6,6" 3 | "HEINZ,,BOEHM,,1938,12,20","HEINZ,,BOEHMR,,1938,12,20" 4 | "STEFAN,,BRAUN,,1997,12,30","STEFAN,,BRAUN,,1947,12,30" 5 | "MATTHIAS,,HAAS,,1955,7,8","MATTHIAS,,HAAS,,1955,8,8" 6 | "GERD,,BAUER,,1968,7,27","GERD,,BAUERH,,1968,7,27" 7 | "ROLF,,NEUMANN,,1967,3,29","ROLBF,,NEUMANN,,1967,3,29" 8 | "KARL,,KLEIBN,,2002,6,29","KARL,,KLEIN,,2002,6,20" 9 | "GERHARD,,FRIEDRICH,,1957,2,10","GERHARD,,FRIEDRICH,,1987,2,10" 10 | "HANS,,SCHULZE,,1972,11,28","HANS,,SCHULZE,,1972,11,27" 11 | "FRANK,,BERGKANN,,1998,11,8","FRANK,,BERGMANN,,1998,11,8" 12 | "GERHARD,,ERNST,,1980,12,16","GERHARD,,ERNSR,,1980,12,16" 13 | "PETEVR,,FUCHS,,1972,9,12","PETER,,FUCHS,,1972,9,12" 14 | "THORSTEN,,MARTIN,,1995,11,15","THORSKTEN,,MARTIN,,1995,11,15" 15 | "HARTMUT,,HOFFMANN,,1929,12,29","HARTMHUT,,HOFFMSNN,,1929,12,29" 16 | "CHRISTIAN,,GROSS,,1959,4,7","CHRISTIAN,,GROSS,,2008,4,7" 17 | "DIETER,,SCHNEIDER,,1968,8,21","DIETER,,SCHNNIDER,,1968,8,21" 18 | "STEFAN,,MUELLER,,1957,6,1","STEFAN,,MUELLER,,1957,6,7" 19 | "FRANK,,MUELLDR,,1978,5,20","FRANK,,MUELLER,,1978,5,20" 20 | "ANDRE,,MUELLER,,1976,2,25","ANDRE,,MUELLER,,1976,1,25" 21 | "CHRISTIAN,,MUELLER,,1974,8,9","CHRISTIAN,,MUELLEPR,,1974,8,9" 22 | "JOHANNES,,SCHULZ,,1974,1,17","JOHANNNES,,SCHULZ,,1974,1,17" 23 | "HARALD,,WEBER,,1977,6,2","HARALD,,WEBER,,1977,6,1" 24 | "WERNER,,KOERTIG,,1965,11,28","WERNIER,,KOERTIG,,1965,11,28" 25 | "PETER,,BECKER,,1960,9,5","PETERS,,BECKER,,1960,9,5" 26 | "HELGA,ELFRIEDE,BERGER,,1989,1,28","HELGA,ELFRIEDE,BERGER,,1989,1,18" 27 | "KARIN,,HORN,,2002,6,4","KARINW,,HORN,,2002,6,4" 28 | "ANDREA,,WEBER,,1945,5,20","ANDREA,,WEBER,,1945,5,29" 29 | "ANGELA,,STEIN,,2002,8,30","ANGELA,,STEIN,,2062,8,30" 30 | "URSULA,BIRGIT,MUELLER,,1940,6,15","URSULA,BIRGIT,MUELLRR,,1940,6,15" 31 | "MARIANNFE,,MOELLER,,1961,9,17","MARIANNE,,MOELLER,,1961,9,17" 32 | "GERTRUD,,BAUMANN,,1926,5,20","GERTRUD,,BAUMANN,,1926,5,26" 33 | "ANNA,,LANGE,,1998,3,29","ANNA,,LANGK,,1998,3,29" 34 | "MONIKA,,SCHNEIDER,,1937,6,2","MONIYKA,,SCHNEIDER,,1937,6,2" 35 | "SUSANNE,,KLEIN,,1969,3,15","SUSANNE,,KLEIN,,1960,3,15" 36 | "MARIA,,DIETRICH,,1979,2,6","MARIA,,DIETTRICH,,1979,2,6" 37 | "SABAINE,,OTTO,,1940,7,23","SABINE,,OTTO,,1940,7,23" 38 | "GISOELA,,BECK,,2003,4,16","GISELA,,BECK,,2003,4,16" 39 | "MONIKA,,MUELLER,,2000,8,26","MONIKA,,MUELLER,,2000,5,26" 40 | "INGRID,,KRAJSE,,1985,9,3","INGRID,,KRAUSE,,1985,9,3" 41 | "SABINE,,HARTMANN,,1939,6,16","SABINE,,HARTMANN,,1943,6,16" 42 | "ULRIKE,NICOLE,BECKER,,1982,8,4","ULRIKE,NICOLE,BECKRR,,1982,8,4" 43 | "MARIA,,SCHROEDER,,1955,1,11","MARIA,,SCHROEDER,,1955,1,12" 44 | "SONJA,,FISCHER,,1989,7,17","SONJAD,,FISCHER,,1989,7,17" 45 | "INGEU,,SEIDEL,,1949,8,4","INGE,,SEIDEL,,1949,9,4" 46 | "GABRIHELE,,BECKER,,1990,3,27","GABRIELE,,BECKER,,1990,3,27" 47 | "ERIKA,,WEBER,,1995,2,1","ERIKA,,WEBER,,1992,2,29" 48 | "RENATE,,SCHUTE,,1940,12,29","RENATE,,SCHULTE,,1940,12,29" 49 | "CHRISTINE,,PETERS,,1993,2,6","CHRISTINE,,PETERS,,1993,2,5" 50 | "CHRISTAH,,SCHWARZ,,1965,7,13","CHRISTA,,SCHWARZ,,1965,7,13" 51 | -------------------------------------------------------------------------------- /mergic/__init__.py: -------------------------------------------------------------------------------- 1 | from .mergic import __version__ 2 | from .mergic import Blender 3 | from .mergic import script 4 | -------------------------------------------------------------------------------- /mergic/mergic.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import argparse 4 | import sys 5 | import json 6 | import csv 7 | import pickle 8 | from difflib import SequenceMatcher 9 | from itertools import combinations 10 | from collections import Counter 11 | from collections import OrderedDict 12 | 13 | __version__ = '0.0.7' 14 | 15 | # Naming convention: 16 | # A leading underscore means the function takes "self" 17 | # A trailing underscore means the function takes parser "args" 18 | 19 | 20 | def pretty_json(thing): 21 | """Prettify a Python data structure as formatted JSON.""" 22 | return json.dumps(thing, 23 | ensure_ascii=False, 24 | indent=4, 25 | separators=(',', ': ')).encode('utf-8') 26 | 27 | 28 | def check(partition): 29 | """Confirm the passed dict is a partition. 30 | 31 | Parameters 32 | ---------- 33 | partition : dict 34 | A partition dictionary where the values are lists. Items appear 35 | exactly once through all the value lists (they are "assigned to" 36 | their key value.) 37 | 38 | Returns 39 | ------- 40 | int 41 | The number of items partitioned by the partition. 42 | 43 | Raises 44 | ------ 45 | ValueError 46 | If a value appears more than once in one value list 47 | or a value appears in more than one value list. 48 | 49 | """ 50 | all_items = set() 51 | for values in partition.values(): 52 | value_set = set(values) 53 | if len(values) != len(value_set): 54 | raise ValueError('Duplication in {}'.format(values)) 55 | already_seen = list(all_items & value_set) 56 | if len(already_seen) != 0: 57 | raise ValueError('{} in more than one group'.format(already_seen)) 58 | all_items.update(values) 59 | return len(all_items) 60 | 61 | 62 | def check_(args): 63 | """Check a partition loaded from a file at the command line.""" 64 | data = json.loads(args.partition.read()) 65 | n = check(data) 66 | print "{} items in {} groups".format(n, len(data)) 67 | 68 | 69 | def link_items(group_of, links): 70 | """Put items that are linked into the same group. 71 | 72 | Parameters 73 | ---------- 74 | group_of : dict 75 | Keys are items being partitioned and values are tuples representing 76 | the group that the key is currently assigned to. Usually starts as 77 | every item pointing to a tuple containing only the item itself. 78 | links : list 79 | Contains tuples (pairs) representing items to link. 80 | 81 | """ 82 | for one, other in links: 83 | if group_of[one] is group_of[other]: 84 | continue 85 | else: 86 | union = group_of[one] + group_of[other] 87 | for thing in union: 88 | group_of[thing] = union 89 | 90 | 91 | def diff(first, second): 92 | """Generate the differences from a first to a second partition. 93 | 94 | Parameters 95 | ---------- 96 | first : dict 97 | second : dict 98 | Partition dictionaries where the values are lists. In each, 99 | items appear exactly once through all the value lists (they 100 | are "assigned to" their key value.) 101 | 102 | Returns 103 | ------- 104 | dict 105 | A "patch" partition, for the set of values that are assigned 106 | differently in the second partition than the first. It can be 107 | applied to the first partition to generate the second. 108 | 109 | Raises 110 | ------ 111 | ValueError 112 | If a value in the first partition is not assigned anywhere in 113 | the second partition or if the second partition assigns a 114 | value not found in the first partition. 115 | 116 | """ 117 | mixed_from = set() 118 | mixed_to = set() 119 | patch = dict() 120 | for key, values in second.items(): 121 | if set(first.get(key, [])) == set(values): 122 | del(first[key]) 123 | else: 124 | patch[key] = values 125 | mixed_to.update(values) 126 | to_find = mixed_to - mixed_from 127 | for key_from, values_from in first.items(): 128 | values_from = set(values_from) 129 | if to_find & values_from: 130 | mixed_from.update(values_from) 131 | del(first[key_from]) 132 | not_found = to_find - mixed_from 133 | if not_found: 134 | raise ValueError(not_found) 135 | if mixed_from != mixed_to: 136 | not_assigned = mixed_from - mixed_to 137 | raise ValueError(not_assigned) 138 | return patch 139 | 140 | 141 | def diff_(args): 142 | """Check and diff two partitions loaded from files at the command line.""" 143 | first = json.loads(args.first.read()) 144 | check(first) 145 | second = json.loads(args.second.read()) 146 | check(second) 147 | patch = diff(first, second) 148 | print pretty_json(patch) 149 | 150 | 151 | def equal(first, second): 152 | """Check a first and second partition for equality. 153 | 154 | Parameters 155 | ---------- 156 | first : dict 157 | second : dict 158 | Partition dictionaries where the values are lists. In each, 159 | items appear exactly once through all the value lists (they 160 | are "assigned to" their key value.) 161 | 162 | Returns 163 | ------- 164 | boolean 165 | True if the difference is empty, otherwise False. 166 | 167 | """ 168 | try: 169 | patch = diff(first, second) 170 | if patch == {}: 171 | return True 172 | except ValueError: 173 | pass 174 | return False 175 | 176 | 177 | def apply_diff(partition, patch): 178 | """Apply a patch to a partition (in place). 179 | 180 | Parameters 181 | ---------- 182 | partition : dict 183 | A partition dictionary where the values are lists. Items appear 184 | exactly once through all the value lists (they are "assigned to" 185 | their key value.) 186 | 187 | patch : dict 188 | A "patch" partition, for the set of values that should be 189 | assigned differently from how they are in the original 190 | partition. 191 | 192 | Returns 193 | ------- 194 | None 195 | The `partition` passed is modified in place. 196 | 197 | """ 198 | mixed_from = set() 199 | mixed_to = set() 200 | for key, values in patch.items(): 201 | if partition.get(key) == values: 202 | # this shouldn't happen, but still... 203 | del(partition[key]) 204 | else: 205 | mixed_to.update(values) 206 | to_find = mixed_to - mixed_from 207 | for key_from, values_from in partition.items(): 208 | values_from = set(values_from) 209 | if to_find & values_from: 210 | mixed_from.update(values_from) 211 | del(partition[key_from]) 212 | not_found = to_find - mixed_from 213 | if not_found: 214 | raise ValueError(not_found) 215 | if mixed_from != mixed_to: 216 | not_assigned = mixed_from - mixed_to 217 | raise ValueError(not_assigned) 218 | partition.update(patch) 219 | 220 | 221 | def apply_diff_(args): 222 | """Apply a patch to a partition, at the command line.""" 223 | partition = json.loads(args.partition.read()) 224 | check(partition) 225 | patch = json.loads(args.patch.read()) 226 | apply_diff(partition, patch) 227 | print pretty_json(partition) 228 | 229 | 230 | def table(partition): 231 | """Generate 'merge table' rows from a partition. 232 | 233 | Parameters 234 | ---------- 235 | partition : dict 236 | A partition dictionary where the values are lists. Items appear 237 | exactly once through all the value lists (they are "assigned to" 238 | their key value.) 239 | 240 | Yields 241 | ------ 242 | tuple 243 | Pairs of original and new names, as specified in the partition. 244 | 245 | """ 246 | for key, values in partition.items(): 247 | for value in values: 248 | yield (value, key) 249 | 250 | 251 | def table_(args): 252 | """Print out a two-column 'merge table' at the command line.""" 253 | partition = json.loads(args.partition.read()) 254 | check(partition) 255 | writer = csv.writer(sys.stdout) 256 | writer.writerow(["original", "mergic"]) 257 | for row in table(partition): 258 | row = [str(element).encode('utf-8') for element in row] 259 | writer.writerow(row) 260 | 261 | 262 | def _calc_(self, args): 263 | """Calculate possible groupings and print out a summary.""" 264 | try: 265 | with open('.mergic_cache', 'rb') as f: 266 | cache = pickle.load(f) 267 | (self.links_at, self.cutoffs, self.ordered_items) = cache 268 | items = self.ordered_items 269 | except IOError: 270 | items = [item.strip() for item in args.infile.readlines()] 271 | # build distance "matrix" 272 | links_at = {} 273 | for one, other in combinations(items, 2): 274 | links_at.setdefault(self.distance(one, other), 275 | []).append((one, other)) 276 | self.links_at = links_at 277 | self.cutoffs = sorted(links_at.keys()) 278 | links_at = self.links_at 279 | cutoffs = self.cutoffs 280 | group_for_item = {item: (item,) for item in items} 281 | if args.command == 'calc': 282 | print "num groups, max group, num pairs, cutoff" 283 | print "----------------------------------------" 284 | data = (len(group_for_item), 1, 0, cutoffs[0] - 1) 285 | print "{0: >10}, {1: >9}, {2: >9}, {3}".format(*data) 286 | for cutoff in cutoffs: 287 | link_items(group_for_item, links_at[cutoff]) 288 | all_groups = set(group_for_item.values()) 289 | c = Counter(len(x) for x in all_groups) 290 | if args.command == 'calc': 291 | data = (sum(c.values()), 292 | max(c.keys()), 293 | sum(len(x)*(len(x)-1)/2 for x in all_groups), 294 | cutoff) 295 | print "{0: >10}, {1: >9}, {2: >9}, {3}".format(*data) 296 | if sum(c.values()) == 1: 297 | break 298 | self.ordered_items = group_for_item.values()[0] 299 | with open('.mergic_cache', 'wb') as f: 300 | pickle.dump((self.links_at, self.cutoffs, self.ordered_items), 301 | f, protocol=2) 302 | 303 | 304 | def _make_(self, args): 305 | """Generate and print out a partition at a cutoff.""" 306 | if self.links_at is None: 307 | self.calc(args) 308 | links_at = self.links_at 309 | # NOT DRY (copied from above) 310 | group_for_item = {item: (item,) for item in self.ordered_items} 311 | for cutoff in [x for x in self.cutoffs if x <= args.cutoff]: 312 | link_items(group_for_item, links_at[cutoff]) 313 | all_groups = list(set(group_for_item.values())) 314 | all_groups.sort(key=lambda x: (0-len(x), self.ordered_items.index(x[0]))) 315 | result = OrderedDict() 316 | for item in all_groups: 317 | result[self.key_method(item)] = list(item) 318 | print pretty_json(result) 319 | 320 | 321 | def _script(self): 322 | """Parse command-line arguments and expose functionality.""" 323 | parser = argparse.ArgumentParser() 324 | 325 | parser.add_argument('-V', '--version', 326 | action='version', 327 | version='%(prog)s ' + __version__) 328 | 329 | subparsers = parser.add_subparsers(dest='command') 330 | 331 | p_calc = subparsers.add_parser('calc', 332 | help='calculate all partitions of data') 333 | p_calc.add_argument('infile', 334 | nargs='?', 335 | help='lines of text to calculate groups for', 336 | type=argparse.FileType('r'), 337 | default=sys.stdin) 338 | p_calc.set_defaults(func=self.calc) 339 | 340 | p_make = subparsers.add_parser('make', 341 | help='make a JSON partition from data') 342 | p_make.add_argument('infile', 343 | nargs='?', 344 | help='lines of text to make a partition for', 345 | type=argparse.FileType('r'), 346 | default=sys.stdin) 347 | p_make.add_argument('cutoff', 348 | help="cutoff for partition", 349 | type=float) 350 | p_make.set_defaults(func=self.make) 351 | 352 | p_check = subparsers.add_parser('check', 353 | help='check validity of JSON partition') 354 | p_check.add_argument('partition', 355 | nargs='?', 356 | help='a JSON partition file', 357 | type=argparse.FileType('r'), 358 | default=sys.stdin) 359 | p_check.set_defaults(func=check_) 360 | 361 | p_diff = subparsers.add_parser('diff', 362 | help='diff two JSON partitions') 363 | p_diff.add_argument('first', 364 | help='a JSON partition file', 365 | type=argparse.FileType('r')) 366 | p_diff.add_argument('second', 367 | help='a JSON partition file', 368 | type=argparse.FileType('r')) 369 | p_diff.set_defaults(func=diff_) 370 | 371 | p_apply = subparsers.add_parser('apply', 372 | help='apply a patch to a JSON partition') 373 | p_apply.add_argument('partition', 374 | help='a JSON partition file', 375 | type=argparse.FileType('r')) 376 | p_apply.add_argument('patch', 377 | help='a JSON partition patch file', 378 | type=argparse.FileType('r')) 379 | p_apply.set_defaults(func=apply_diff_) 380 | 381 | p_table_help = 'make a merge table from a JSON partition' 382 | p_table = subparsers.add_parser('table', help=p_table_help) 383 | p_table.add_argument('partition', 384 | nargs='?', 385 | help='a JSON partition file', 386 | type=argparse.FileType('r'), 387 | default=sys.stdin) 388 | p_table.set_defaults(func=table_) 389 | 390 | args = parser.parse_args() 391 | args.func(args) 392 | 393 | 394 | class Blender(object): 395 | """An encapsulation of mergic behaviors for deduplication. 396 | 397 | Maintains state (see attributes and __init__ parameters) for 398 | processing data for entity resolution. 399 | 400 | Attributes 401 | ---------- 402 | links_at : dict 403 | Numeric keys representing distances point to lists containing 404 | length two tuples where each tuple is a pair of elements 405 | separated by the corresponding distance. 406 | 407 | ordered_items : list 408 | All the original items in the order induced by grouping them 409 | agglomeratively. Used for ordering other groupings. 410 | 411 | cutoffs : list 412 | A sorted list of cutoffs (keys from `links_at`), exposed 413 | separately for convenience. 414 | 415 | """ 416 | 417 | def __init__(self, distance='stock', key_method='longest'): 418 | """Create a new mergic Blender. 419 | 420 | Parameters 421 | ---------- 422 | distance : function or 'stock' (default='stock') 423 | A function of two variables which returns a distance. 424 | Larger return values indicate greater distance. 425 | The default ('stock') becomes a string distance using 426 | only the base Python SequenceMatcher. 427 | 428 | key_method : function, 'longest', or 'append' (default='longest') 429 | A function of a list that returns a string to use as the 430 | default key for a group. 431 | The default ('longest') returns the longest element in the 432 | list, with ties broken by Python's stable sort. 433 | The 'append' method concatenates all the elements of the 434 | list, in sorted order. 435 | 436 | """ 437 | if distance == 'stock': 438 | distance = lambda a, b: 1 - SequenceMatcher(None, a, b).ratio() 439 | self.distance = distance 440 | 441 | if key_method == 'longest': 442 | key_method = lambda x: max(sorted(x), key=len) 443 | elif key_method == 'append': 444 | key_method = lambda x: "|".join(sorted(x)) 445 | self.key_method = key_method 446 | 447 | self.links_at = None 448 | self.ordered_items = None 449 | self.cutoffs = None 450 | 451 | calc = _calc_ 452 | make = _make_ 453 | script = _script 454 | 455 | 456 | def script(): 457 | """Run a default mergic Blender at the command line.""" 458 | blender = Blender() 459 | blender.script() 460 | 461 | if __name__ == '__main__': 462 | script() 463 | -------------------------------------------------------------------------------- /mergic/test.py: -------------------------------------------------------------------------------- 1 | import mergic 2 | import unittest 3 | 4 | 5 | class TestPrettyJson(unittest.TestCase): 6 | 7 | def test_prettifies_as_expected(self): 8 | expected = '{\n "1": [\n 1,\n 2\n ]\n}' 9 | self.assertEqual(mergic.pretty_json({1: [1, 2]}), expected) 10 | 11 | 12 | class TestCheck(unittest.TestCase): 13 | 14 | def test_raises_on_duplicate_in_value_list(self): 15 | with self.assertRaises(ValueError): 16 | mergic.check({1: [1, 1]}) 17 | 18 | def test_raises_on_duplicates_across_keys(self): 19 | with self.assertRaises(ValueError): 20 | mergic.check({1: [1], 2: [1]}) 21 | 22 | def test_returns_number_of_values(self): 23 | partition = {1: [1], 2: [2, 3], 3: [4]} 24 | self.assertEqual(mergic.check(partition), 4) 25 | 26 | 27 | class TestLinkItems(unittest.TestCase): 28 | 29 | def test_doesnt_change_if_already_together(self): 30 | group = (1, 2) 31 | group_of = {1: group, 2: group} 32 | mergic.link_items(group_of, [(1, 2)]) 33 | self.assertIs(group_of[1], group_of[2]) 34 | 35 | def test_joins_to_same_thing(self): 36 | group_of = {1: (1,), 2: (2,)} 37 | mergic.link_items(group_of, [(1, 2)]) 38 | self.assertIs(group_of[1], group_of[2]) 39 | 40 | def test_joins_to_correct_tuple(self): 41 | group_of = {1: (1,), 2: (2,)} 42 | mergic.link_items(group_of, [(1, 2)]) 43 | self.assertEqual(set(group_of[1]), set((1, 2))) 44 | 45 | 46 | class TestDiff(unittest.TestCase): 47 | 48 | def test_no_diff_when_same(self): 49 | self.assertEqual(mergic.diff({1: [1]}, {1: [1]}), {}) 50 | 51 | def test_order_doesnt_matter(self): 52 | self.assertEqual(mergic.diff({1: [1, 2]}, {1: [2, 1]}), {}) 53 | 54 | def test_raises_when_first_doesnt_assign(self): 55 | with self.assertRaises(ValueError): 56 | mergic.diff({1: [1]}, {1: [1, 2]}) 57 | 58 | def test_raises_when_second_doesnt_assign(self): 59 | with self.assertRaises(ValueError): 60 | mergic.diff({1: [1, 2]}, {1: [1]}) 61 | 62 | def test_renaming_key_picked_up(self): 63 | self.assertEqual(mergic.diff({1: [1]}, {2: [1]}), {2: [1]}) 64 | 65 | def test_splitting_value_picked_up(self): 66 | self.assertEqual(mergic.diff({1: [1, 2], 3: [3]}, 67 | {1: [1], 2: [2], 3: [3]}), 68 | {1: [1], 2: [2]}) 69 | 70 | 71 | class TestEqual(unittest.TestCase): 72 | 73 | def test_equal_if_empty(self): 74 | self.assertTrue(mergic.equal({}, {})) 75 | 76 | def test_not_equal_if_one_not_empty(self): 77 | self.assertFalse(mergic.equal({}, {1: [1]})) 78 | 79 | def test_raises_on_string_nonsense(self): 80 | with self.assertRaises(AttributeError): 81 | mergic.equal('non', 'sense') 82 | 83 | def test_order_doesnt_matter_for_equality(self): 84 | self.assertTrue(mergic.equal({1: [1, 2]}, {1: [2, 1]})) 85 | 86 | def test_not_equal_if_key_different(self): 87 | self.assertFalse(mergic.equal({1: [1]}, {2: [1]})) 88 | 89 | def test_not_equal_if_value_different(self): 90 | self.assertFalse(mergic.equal({1: [1]}, {1: [2]})) 91 | 92 | def test_not_equal_if_value_moves(self): 93 | self.assertFalse(mergic.equal({1: [1, 2], 2: [3]}, 94 | {1: [1], 2: [2, 3]})) 95 | 96 | def test_slightly_interesting_equality(self): 97 | self.assertTrue(mergic.equal({1: [1, 2, 3], 2: ['a']}, 98 | {2: ['a'], 1: [3, 2, 1]})) 99 | 100 | 101 | class TestTable(unittest.TestCase): 102 | 103 | def test_nothing_for_empty(self): 104 | self.assertEqual(len(list(mergic.table({}))), 0) 105 | 106 | def test_right_number_of_rows(self): 107 | p = {1: [2, 3], 'b': [4, 5, 6]} 108 | self.assertEqual(len(list(mergic.table(p))), 5) 109 | 110 | def test_correct_rows_appear(self): 111 | p = {1: [2, 3], 'b': [4, 5, 6]} 112 | rowset = set([(2, 1), (3, 1), (4, 'b'), (5, 'b'), (6, 'b')]) 113 | self.assertEqual(set(mergic.table(p)), rowset) 114 | 115 | 116 | if __name__ == '__main__': 117 | unittest.main() 118 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | from mergic import __version__ 3 | 4 | 5 | description = 'workflow support for reproducible deduplication and merging' 6 | 7 | with open('README.rst') as file: 8 | long_description = file.read() 9 | 10 | url = 'https://github.com/ajschumacher/mergic' 11 | 12 | setup(name='mergic', 13 | packages=['mergic'], 14 | description=description, 15 | long_description=long_description, 16 | license='MIT', 17 | author='Aaron Schumacher', 18 | author_email='ajschumacher@gmail.com', 19 | url=url, 20 | download_url=url + '/tarball/' + __version__, 21 | version=__version__, 22 | entry_points={'console_scripts': ['mergic = mergic:script']}, 23 | classifiers=["Programming Language :: Python", 24 | "Programming Language :: Python :: 2.7", 25 | "License :: OSI Approved :: MIT License", 26 | "Development Status :: 2 - Pre-Alpha"]) 27 | -------------------------------------------------------------------------------- /tennis/.mergic_cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajschumacher/mergic/a369807f4638c0e67926bc06527b9b99b139beeb/tennis/.mergic_cache -------------------------------------------------------------------------------- /tennis/README.md: -------------------------------------------------------------------------------- 1 | # `mergic` with a custom distance function 2 | 3 | 4 | Download the [Tennis Major Tournament Match Statistics Data Set](https://archive.ics.uci.edu/ml/datasets/Tennis+Major+Tournament+Match+Statistics) from the [UC Irvine Machine Learning Repository](https://archive.ics.uci.edu/ml/) into an empty directory: 5 | 6 | ```bash 7 | $ wget https://archive.ics.uci.edu/ml/machine-learning-databases/00300/Tennis-Major-Tournaments-Match-Statistics.zip 8 | ``` 9 | 10 | This file should be stable, but it's also included [here](Tennis-Major-Tournaments-Match-Statistics.zip) and/or you can verify that its `md5` is `e9238389e4de42ecf2daf425532ce230`. 11 | 12 | 13 | Unpack eight CSV files from the `Tennis-Major-Tournaments-Match-Statistics.zip`: 14 | 15 | ```bash 16 | $ unzip Tennis-Major-Tournaments-Match-Statistics.zip 17 | ``` 18 | 19 | 20 | You should see that the first two columns of each file contain player names, though the column names are not consistent. For example: 21 | 22 | ```bash 23 | $ head -2 AusOpen-women-2013.csv | cut -c 1-40 24 | ## Player1,Player2,Round,Result,FNL1,FNL2,F 25 | ## Serena Williams,Ashleigh Barty,1,1,2,0,5 26 | 27 | $ head -2 USOpen-women-2013.csv | cut -c 1-40 28 | ## Player 1,Player 2,ROUND,Result,FNL.1,FNL 29 | ## S Williams,V Azarenka,7,1,2,1,57,44,43,2 30 | ``` 31 | 32 | 33 | Make a `names.txt` with all the names that appear: 34 | 35 | ```bash 36 | $ for filename in *2013.csv 37 | do 38 | for field in 1 2 39 | do 40 | tail +2 $filename | cut -d, -f$field >> names.txt 41 | done 42 | done 43 | ``` 44 | 45 | 46 | Now you have a file with 1,886 lines, each one of 669 unique strings, as you can verify: 47 | 48 | ```bash 49 | $ wc -l names.txt 50 | ## 1886 51 | 52 | $ sort names.txt | uniq | wc -l 53 | ## 669 54 | ``` 55 | 56 | There are too many unique strings—sometimes more than one string for the same player. As a result, a count of the most common names will not accurately tell us who played the most in these 2013 tennis competitions. 57 | 58 | 59 | ```bash 60 | $ sort names.txt | uniq -c | sort -nr | head 61 | ## 21 Rafael Nadal 62 | ## 17 Stanislas Wawrinka 63 | ## 17 Novak Djokovic 64 | ## 17 David Ferrer 65 | ## 15 Roger Federer 66 | ## 14 Tommy Robredo 67 | ## 13 Richard Gasquet 68 | ## 11 Victoria Azarenka 69 | ## 11 Tomas Berdych 70 | ## 11 Serena Williams 71 | ``` 72 | 73 | The list above is not the answer we’re looking for. We want to be correct. 74 | 75 | 76 | In the tennis data, names appear sometimes with full first names and sometimes with only first initials. To get good comparisons, we should: 77 | 78 | * Transform all the data to the same format, as nearly as possible. 79 | * Use a good distance on the transformed data. 80 | 81 | We can do both of these things in our custom script, [tennis_mergic.py](tennis_mergic.py). It only [requires](requirements.txt) the `mergic` and `python-Levenshtein` packages. 82 | 83 | ```python 84 | #!/usr/bin/env python 85 | 86 | import re 87 | import Levenshtein 88 | import mergic 89 | 90 | 91 | def first_initial_last(name): 92 | initial = re.match("^[A-Z]", name).group() 93 | last = re.search("(?<=[ .])[A-Z].+$", name).group() 94 | return "{}. {}".format(initial, last) 95 | 96 | 97 | def distance(x, y): 98 | x = first_initial_last(x) 99 | y = first_initial_last(y) 100 | return Levenshtein.distance(x, y) 101 | 102 | 103 | mergic.Blender(distance).script() 104 | ``` 105 | 106 | 107 | Now [tennis_mergic.py](tennis_mergic.py) can be used just like the standard `mergic` script. 108 | 109 | ```bash 110 | $ ./tennis_mergic.py calc names.txt 111 | ## num groups, max group, num pairs, cutoff 112 | ## ---------------------------------------- 113 | ## 669, 1, 0, -1 114 | ## 358, 5, 384, 0 115 | ## 348, 6, 414, 1 116 | ## 332, 6, 470, 2 117 | ## 262, 85, 5117, 3 118 | ## 165, 324, 52611, 4 119 | ## 86, 496, 122899, 5 120 | ## 46, 584, 170287, 6 121 | ## 24, 624, 194407, 7 122 | ## 16, 641, 205138, 8 123 | ## 10, 650, 210940, 9 124 | ## 4, 663, 219459, 10 125 | ## 2, 668, 222778, 11 126 | ## 1, 669, 223446, 12 127 | ``` 128 | 129 | There is a clear best cutoff here, as the size of the max group jumps from 6 items to 85 and the number of within-group comparisons jumps from 470 to 5,117. So we create a partition where the Levenshtein distance between names in our standard first initial and last name format is no more than two, and put the result in a file called `groups.json`: 130 | 131 | ```bash 132 | $ ./tennis_mergic.py make names.txt 2 > groups.json 133 | ``` 134 | 135 | As expected, the proposed grouping has combined things over-zealously in some places: 136 | 137 | ```bash 138 | $ head -5 groups.json 139 | ## { 140 | ## "Yen-Hsun Lu": [ 141 | ## "Di Wu", 142 | ## "Yen-Hsun Lu", 143 | ## "Y-H.Lu", 144 | ``` 145 | 146 | 147 | Manual editing can produce a corrected version of the original grouping, which could be saved as `edited.json`: 148 | 149 | ```bash 150 | $ head -8 edited.json 151 | ## { 152 | ## "Yen-Hsun Lu": [ 153 | ## "Yen-Hsun Lu", 154 | ## "Y-H.Lu" 155 | ## ], 156 | ## "Di Wu": [ 157 | ## "Di Wu" 158 | ## ], 159 | ``` 160 | 161 | Parts of the review process would be difficult or impossible for a computer to do accurately. 162 | 163 | * There are the Plíšková twins, Karolína and Kristýna. When we see that `K Pliskova` appears, we have to go back and see that this occurred in the `USOpen-women-2013.csv` file, and only Karolína played in the [2013 US Open](http://en.wikipedia.org/wiki/2013_US_Open_%E2%80%93_Women%27s_Singles). 164 | * In a similar but less interesting way, `B.Becker` turns out to refer to Benjamin, not Brian. 165 | * An `A Wozniak` appears with `C Wozniack` and `C Wozniacki`. The first initial does turn out to differentiate the Canadian from the Dane. 166 | * The name `A.Kuznetsov` refers to *both* Andrey *and* Alex in `Wimbledon-men-2013.csv`. This can't be resolved by `mergic`. One way to resolve the issues is to edit `Wimbledon-men-2013.csv` so that `A.Kuznetsov,I.Sijsling` becomes `Alex Kuznetsov,I.Sijsling`, based on checking [records from that competition](http://en.wikipedia.org/wiki/2013_Wimbledon_Championships_%E2%80%93_Men%27s_Singles). 167 | * `Juan Martin Del Potro` is unfortunately too different from `J.Del Potro` in the current formulation to be grouped automatically, but a human reviewer can correct this. Similarly for `Anna Schmiedlova` and `Anna Karolina Schmiedlova`. 168 | 169 | 170 | After editing, you can check that the new grouping is still valid. At this stage we aren't using anything custom any more, so the default `mergic` is fine: 171 | 172 | ```bash 173 | $ mergic check edited.json 174 | ## 669 items in 354 groups 175 | ``` 176 | 177 | The `mergic` diffing tools make it easy to make comparisons that would otherwise be difficult, letting us focus on and save only changes that are human reviewers make rather than whole files. 178 | 179 | 180 | ```bash 181 | $ mergic diff groups.json edited.json > diff.json 182 | ``` 183 | 184 | Now `diff.json` only has the entries that represent changes from the original `groups.json`. 185 | 186 | The edited version can be reconstructed from the original and the diff with `mergic apply`: 187 | 188 | ```bash 189 | $ mergic apply groups.json diff.json > rebuilt.json 190 | ``` 191 | 192 | The order of `rebuilt.json` may not be identical to the original `edited.json`, but the diff will be empty, meaning the file is equivalent: 193 | 194 | ```bash 195 | $ mergic diff edited.json rebuilt.json 196 | ## {} 197 | ``` 198 | 199 | Finally, to generate a CSV merge table that you'll be able to use with any other tool: 200 | 201 | ```bash 202 | $ mergic table edited.json > merge.csv 203 | ``` 204 | 205 | Now the file `merge.csv` has two columns, `original` and `mergic`, where `original` contains all the values that appeared in the original data and `mergic` contains the deduplicated keys. You can join this on to your original data and go to town. 206 | 207 | Here's how we might do that to quickly get a list of who played the most in these 2013 tennis events: 208 | 209 | ```bash 210 | $ join -t, <(sort names.txt) <(sort merge.csv) | cut -d, -f2 | sort | uniq -c | sort -nr | head 211 | ## 24 Novak Djokovic 212 | ## 22 Rafael Nadal 213 | ## 21 Serena Williams 214 | ## 21 David Ferrer 215 | ## 20 Na Li 216 | ## 19 Victoria Azarenka 217 | ## 19 Agnieszka Radwanska 218 | ## 18 Stanislas Wawrinka 219 | ## 17 Tommy Robredo 220 | ## 17 Sloane Stephens 221 | ``` 222 | 223 | Note that this is not the same as the result we got before resolving these name issues: 224 | 225 | ```bash 226 | $ sort names.txt | uniq -c | sort -nr | head 227 | ## 21 Rafael Nadal 228 | ## 17 Stanislas Wawrinka 229 | ## 17 Novak Djokovic 230 | ## 17 David Ferrer 231 | ## 15 Roger Federer 232 | ## 14 Tommy Robredo 233 | ## 13 Richard Gasquet 234 | ## 11 Victoria Azarenka 235 | ## 11 Tomas Berdych 236 | ## 11 Serena Williams 237 | ``` 238 | 239 | As it happens, using a cutoff of 0 and doing no hand editing will still give the correct top ten. In general the desired result and desired level of certainty in its correctness will inform the level of effort that is justified. 240 | -------------------------------------------------------------------------------- /tennis/Tennis-Major-Tournaments-Match-Statistics.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ajschumacher/mergic/a369807f4638c0e67926bc06527b9b99b139beeb/tennis/Tennis-Major-Tournaments-Match-Statistics.zip -------------------------------------------------------------------------------- /tennis/diff.json: -------------------------------------------------------------------------------- 1 | { 2 | "S.Murray": [ 3 | "S.Murray" 4 | ], 5 | "Stephane Robert": [ 6 | "Stephane Robert", 7 | "S.Robert" 8 | ], 9 | "Jie Zheng": [ 10 | "J.Zheng", 11 | "J Zheng", 12 | "Jie Zheng" 13 | ], 14 | "Kristýna Plíšková": [ 15 | "Kr.Pliskova", 16 | "Kristyna Pliskova" 17 | ], 18 | "Alejandro Gonzalez": [ 19 | "Alejandro Gonzalez" 20 | ], 21 | "Laura Robson": [ 22 | "L Robson", 23 | "Laura Robson", 24 | "L.Robson" 25 | ], 26 | "Shuai Peng": [ 27 | "S.Peng", 28 | "S Peng", 29 | "Shuai Peng" 30 | ], 31 | "Robin Haase": [ 32 | "Robin Haase", 33 | "R.Haase" 34 | ], 35 | "Shuai Zhang": [ 36 | "Shuai Zhang" 37 | ], 38 | "Lukas Rosol": [ 39 | "Lukas Rosol", 40 | "L.Rosol" 41 | ], 42 | "David Ferrer": [ 43 | "David Ferrer", 44 | "D.Ferrer" 45 | ], 46 | "Shahar Peer": [ 47 | "Shahar Peer" 48 | ], 49 | "Florian Mayer": [ 50 | "Florian Mayer", 51 | "F.Mayer" 52 | ], 53 | "Michael Berrer": [ 54 | "Michael Berrer" 55 | ], 56 | "Maximo Gonzalez": [ 57 | "Maximo Gonzalez" 58 | ], 59 | "Petra Martic": [ 60 | "P.Martic", 61 | "Petra Martic" 62 | ], 63 | "Pablo Carreno-Busta": [ 64 | "Pablo Carreno-Busta", 65 | "Pablo Carreno Busta" 66 | ], 67 | "Svetlana Kuznetsova": [ 68 | "S Kuznetsova", 69 | "Svetlana Kuznetsova" 70 | ], 71 | "Shelby Rogers": [ 72 | "Shelby Rogers" 73 | ], 74 | "Andy Murray": [ 75 | "A.Murray", 76 | "Andy Murray" 77 | ], 78 | "Yung-Jan Chan": [ 79 | "Yung-Jan Chan" 80 | ], 81 | "Tommy Haas": [ 82 | "T.Haas", 83 | "Tommy Haas" 84 | ], 85 | "Urszula Radwanska": [ 86 | "U.Radwanska", 87 | "U Radwanska", 88 | "Urszula Radwanska" 89 | ], 90 | "Irena Pavlovic": [ 91 | "Irena Pavlovic" 92 | ], 93 | "Na Li": [ 94 | "N.Li", 95 | "N Li", 96 | "Na Li" 97 | ], 98 | "Rhyne Williams": [ 99 | "Rhyne Williams" 100 | ], 101 | "Benjamin Baker": [ 102 | "Benjamin Becker", 103 | "B.Becker" 104 | ], 105 | "Ying-Ying Duan": [ 106 | "Y Duan", 107 | "Ying-Ying Duan" 108 | ], 109 | "Juan Martin Del Potro": [ 110 | "Juan Martin Del Potro", 111 | "J.Del Potro" 112 | ], 113 | "Andrej Martin": [ 114 | "Andrej Martin" 115 | ], 116 | "Brian Baker": [ 117 | "Brian Baker" 118 | ], 119 | "Andrey Kuznetsov": [ 120 | "A.Kuznetsov", 121 | "Andrey Kuznetsov" 122 | ], 123 | "Jimmy Wang": [ 124 | "Jimmy Wang", 125 | "Y-T.Wang" 126 | ], 127 | "Serena Williams": [ 128 | "S Williams", 129 | "S.Williams", 130 | "Serena Williams" 131 | ], 132 | "Alex Kuznetsov": [ 133 | "Alex Kuznetsov" 134 | ], 135 | "Di Wu": [ 136 | "Di Wu" 137 | ], 138 | "Anna Karolina Schmiedlova": [ 139 | "Anna Karolina Schmiedlova", 140 | "Anna Schmiedlova", 141 | "A.Schmiedlova" 142 | ], 143 | "Aleksandra Wozniacki": [ 144 | "A Wozniak" 145 | ], 146 | "Venus Williams": [ 147 | "V Williams", 148 | "Venus Williams" 149 | ], 150 | "Yen-Hsun Lu": [ 151 | "Yen-Hsun Lu", 152 | "Y-H.Lu" 153 | ], 154 | "Agnieszka Radwanska": [ 155 | "A.Radwanska", 156 | "Agnieszka Radwanska" 157 | ], 158 | "Leonardo Mayer": [ 159 | "L.Mayer", 160 | "Leonardo Mayer" 161 | ], 162 | "Ze Zhang": [ 163 | "Ze Zhang" 164 | ], 165 | "Caroline Wozniacki": [ 166 | "Caroline Wozniacki", 167 | "C Wozniacki", 168 | "C.Wozniacki", 169 | "C Wozniack" 170 | ], 171 | "J.Ward": [ 172 | "J.Ward" 173 | ], 174 | "Karolína Plíšková": [ 175 | "K Pliskova", 176 | "Karolina Pliskova", 177 | "Ka.Pliskova" 178 | ], 179 | "Thiemo De Bakker": [ 180 | "Thiemo De Bakker", 181 | "T.De Bakker", 182 | "Thiemo de Bakker" 183 | ], 184 | "Ivo Karlovic": [ 185 | "Ivo Karlovic" 186 | ] 187 | } 188 | -------------------------------------------------------------------------------- /tennis/edited.json: -------------------------------------------------------------------------------- 1 | { 2 | "Yen-Hsun Lu": [ 3 | "Yen-Hsun Lu", 4 | "Y-H.Lu" 5 | ], 6 | "Di Wu": [ 7 | "Di Wu" 8 | ], 9 | "Serena Williams": [ 10 | "S Williams", 11 | "S.Williams", 12 | "Serena Williams" 13 | ], 14 | "Venus Williams": [ 15 | "V Williams", 16 | "Venus Williams" 17 | ], 18 | "Rhyne Williams": [ 19 | "Rhyne Williams" 20 | ], 21 | "Na Li": [ 22 | "N.Li", 23 | "N Li", 24 | "Na Li" 25 | ], 26 | "Caroline Wozniacki": [ 27 | "Caroline Wozniacki", 28 | "C Wozniacki", 29 | "C.Wozniacki", 30 | "C Wozniack" 31 | ], 32 | "Aleksandra Wozniacki": [ 33 | "A Wozniak" 34 | ], 35 | "Karolína Plíšková": [ 36 | "K Pliskova", 37 | "Karolina Pliskova", 38 | "Ka.Pliskova" 39 | ], 40 | "Kristýna Plíšková": [ 41 | "Kr.Pliskova", 42 | "Kristyna Pliskova" 43 | ], 44 | "Shuai Zhang": [ 45 | "Shuai Zhang" 46 | ], 47 | "Jie Zheng": [ 48 | "J.Zheng", 49 | "J Zheng", 50 | "Jie Zheng" 51 | ], 52 | "Ze Zhang": [ 53 | "Ze Zhang" 54 | ], 55 | "Laura Robson": [ 56 | "L Robson", 57 | "Laura Robson", 58 | "L.Robson" 59 | ], 60 | "Lukas Rosol": [ 61 | "Lukas Rosol", 62 | "L.Rosol" 63 | ], 64 | "Agnieszka Radwanska": [ 65 | "A.Radwanska", 66 | "Agnieszka Radwanska" 67 | ], 68 | "Urszula Radwanska": [ 69 | "U.Radwanska", 70 | "U Radwanska", 71 | "Urszula Radwanska" 72 | ], 73 | "Svetlana Kuznetsova": [ 74 | "S Kuznetsova", 75 | "Svetlana Kuznetsova" 76 | ], 77 | "Andrey Kuznetsov": [ 78 | "A.Kuznetsov", 79 | "Andrey Kuznetsov" 80 | ], 81 | "Alex Kuznetsov": [ 82 | "Alex Kuznetsov" 83 | ], 84 | "Leonardo Mayer": [ 85 | "L.Mayer", 86 | "Leonardo Mayer" 87 | ], 88 | "Florian Mayer": [ 89 | "Florian Mayer", 90 | "F.Mayer" 91 | ], 92 | "Thiemo De Bakker": [ 93 | "Thiemo De Bakker", 94 | "T.De Bakker", 95 | "Thiemo de Bakker" 96 | ], 97 | "Brian Baker": [ 98 | "Brian Baker" 99 | ], 100 | "Benjamin Baker": [ 101 | "Benjamin Becker", 102 | "B.Becker" 103 | ], 104 | "Robin Haase": [ 105 | "Robin Haase", 106 | "R.Haase" 107 | ], 108 | "Tommy Haas": [ 109 | "T.Haas", 110 | "Tommy Haas" 111 | ], 112 | "Shahar Peer": [ 113 | "Shahar Peer" 114 | ], 115 | "Shuai Peng": [ 116 | "S.Peng", 117 | "S Peng", 118 | "Shuai Peng" 119 | ], 120 | "Anabel Medina Garrigues": [ 121 | "A Medina Garrigues", 122 | "A. Medina Garrigues", 123 | "A.Medina Garrigues", 124 | "Anabel Medina Garrigues" 125 | ], 126 | "Anastasia Pavlyuchenkova": [ 127 | "Anastasia Pavlyuchenkova", 128 | "A.Pavlyuchenkova", 129 | "A Pavlyuchenkova" 130 | ], 131 | "Yvonne Meusburger": [ 132 | "Y.Meusburger", 133 | "Yvonne Meusburger", 134 | "Y Meusburger" 135 | ], 136 | "Galina Voskoboeva": [ 137 | "G.Voskoboeva", 138 | "G Voskoboeva", 139 | "Galina Voskoboeva" 140 | ], 141 | "Kimiko Date-Krumm": [ 142 | "K Date-Krumm", 143 | "Kimiko Date-Krumm", 144 | "K.Date-Krumm" 145 | ], 146 | "Elina Svitolina": [ 147 | "Elina Svitolina", 148 | "E Svitolina", 149 | "E.Svitolina" 150 | ], 151 | "Flavia Pennetta": [ 152 | "F.Pennetta", 153 | "Flavia Pennetta", 154 | "F Pennetta" 155 | ], 156 | "Kristina Mladenovic": [ 157 | "Kristina Mladenovic", 158 | "K.Mladenovic", 159 | "K Mladenovic" 160 | ], 161 | "Victoria Azarenka": [ 162 | "Victoria Azarenka", 163 | "V.Azarenka", 164 | "V Azarenka" 165 | ], 166 | "Lucie Hradecka": [ 167 | "Lucie Hradecka", 168 | "L.Hradecka", 169 | "L Hradecka" 170 | ], 171 | "Ajla Tomljanovic": [ 172 | "A.Tomljanovic", 173 | "A Tomljanovic", 174 | "Ajla Tomljanovic" 175 | ], 176 | "Sorana Cirstea": [ 177 | "S.Cirstea", 178 | "S Cirstea", 179 | "Sorana Cirstea" 180 | ], 181 | "Sara Errani": [ 182 | "S.Errani", 183 | "Sara Errani", 184 | "S Errani" 185 | ], 186 | "Alize Cornet": [ 187 | "A.Cornet", 188 | "A Cornet", 189 | "Alize Cornet" 190 | ], 191 | "Mona Barthel": [ 192 | "M.Barthel", 193 | "M Barthel", 194 | "Mona Barthel" 195 | ], 196 | "Mandy Minella": [ 197 | "M Minella", 198 | "M.Minella", 199 | "Mandy Minella" 200 | ], 201 | "Andreas Beck": [ 202 | "A.Beck", 203 | "Annika Beck", 204 | "Andreas Beck" 205 | ], 206 | "Angelique Kerber": [ 207 | "A Kerber", 208 | "A.Kerber", 209 | "Angelique Kerber" 210 | ], 211 | "Michael Berrer": [ 212 | "Michael Berrer" 213 | ], 214 | "David Ferrer": [ 215 | "David Ferrer", 216 | "D.Ferrer" 217 | ], 218 | "Caroline Garcia": [ 219 | "Caroline Garcia", 220 | "C Garcia", 221 | "C.Garcia" 222 | ], 223 | "Andrej Martin": [ 224 | "Andrej Martin" 225 | ], 226 | "Petra Martic": [ 227 | "P.Martic", 228 | "Petra Martic" 229 | ], 230 | "Lauren Davis": [ 231 | "Lauren Davis", 232 | "L Davis", 233 | "L.Davis" 234 | ], 235 | "Madison Keys": [ 236 | "Madison Keys", 237 | "M.Keys", 238 | "M Keys" 239 | ], 240 | "Misaki Doi": [ 241 | "Misaki Doi", 242 | "M Doi", 243 | "M.Doi" 244 | ], 245 | "Jimmy Wang": [ 246 | "Jimmy Wang", 247 | "Y-T.Wang" 248 | ], 249 | "J.Ward": [ 250 | "J.Ward" 251 | ], 252 | "Ying-Ying Duan": [ 253 | "Y Duan", 254 | "Ying-Ying Duan" 255 | ], 256 | "Yung-Jan Chan": [ 257 | "Yung-Jan Chan" 258 | ], 259 | "Alison Riske": [ 260 | "A.Riske", 261 | "A Riske", 262 | "Alison Riske" 263 | ], 264 | "Heather Watson": [ 265 | "H.Watson", 266 | "H Watson", 267 | "Heather Watson" 268 | ], 269 | "Stephane Robert": [ 270 | "Stephane Robert", 271 | "S.Robert" 272 | ], 273 | "Shelby Rogers": [ 274 | "Shelby Rogers" 275 | ], 276 | "Simona Halep": [ 277 | "Simona Halep", 278 | "S.Halep", 279 | "S Halep" 280 | ], 281 | "Petra Kvitova": [ 282 | "P Kvitova", 283 | "Petra Kvitova", 284 | "P.Kvitova" 285 | ], 286 | "Andy Murray": [ 287 | "A.Murray", 288 | "Andy Murray" 289 | ], 290 | "S.Murray": [ 291 | "S.Murray" 292 | ], 293 | "Roberta Vinci": [ 294 | "R Vinci", 295 | "Roberta Vinci", 296 | "R.Vinci" 297 | ], 298 | "Jamie Hampton": [ 299 | "J.Hampton", 300 | "Jamie Hampton", 301 | "J Hampton" 302 | ], 303 | "Christina McHale": [ 304 | "C.McHale", 305 | "Christina McHale", 306 | "C McHale" 307 | ], 308 | "Karin Knapp": [ 309 | "Karin Knapp", 310 | "K Knapp", 311 | "K.Knapp" 312 | ], 313 | "Kaia Kanepi": [ 314 | "K.Kanepi", 315 | "Kaia Kanepi", 316 | "K Kanepi" 317 | ], 318 | "Jelena Jankovic": [ 319 | "J.Jankovic", 320 | "J Jankovic", 321 | "Jelena Jankovic" 322 | ], 323 | "Andrea Petkovic": [ 324 | "A Petkovic", 325 | "Andrea Petkovic", 326 | "A.Petkovic" 327 | ], 328 | "Ana Ivanovic": [ 329 | "A Ivanovic", 330 | "Ana Ivanovic", 331 | "A.Ivanovic" 332 | ], 333 | "Camila Giorgi": [ 334 | "C Giorgi", 335 | "Camila Giorgi", 336 | "C.Giorgi" 337 | ], 338 | "Sloane Stephens": [ 339 | "S.Stephens", 340 | "S Stephens", 341 | "Sloane Stephens" 342 | ], 343 | "Julia Goerges": [ 344 | "Julia Goerges", 345 | "J.Goerges", 346 | "J Goerges" 347 | ], 348 | "Kirsten Flipkens": [ 349 | "K Flipkens", 350 | "Kirsten Flipkens", 351 | "K.Flipkens" 352 | ], 353 | "Mallory Burdette": [ 354 | "Mallory Burdette", 355 | "M Burdette", 356 | "M.Burdette" 357 | ], 358 | "Ekaterina Makarova": [ 359 | "Ekaterina Makarova", 360 | "E Makarova", 361 | "E.Makarova" 362 | ], 363 | "Samantha Stosur": [ 364 | "S Stosur", 365 | "S.Stosur", 366 | "Samantha Stosur" 367 | ], 368 | "Sabine Lisicki": [ 369 | "Sabine Lisicki", 370 | "S Lisicki", 371 | "S.Lisicki" 372 | ], 373 | "Yaroslava Shvedova": [ 374 | "Y Shvedova", 375 | "Y.Shvedova", 376 | "Yaroslava Shvedova" 377 | ], 378 | "Maria Kirilenko": [ 379 | "M.Kirilenko", 380 | "Maria Kirilenko", 381 | "M Kirilenko" 382 | ], 383 | "Varvara Lepchenko": [ 384 | "V.Lepchenko", 385 | "Varvara Lepchenko", 386 | "V Lepchenko" 387 | ], 388 | "Daniela Hantuchova": [ 389 | "D.Hantuchova", 390 | "Daniela Hantuchova", 391 | "D Hantuchova" 392 | ], 393 | "Olga Govortsova": [ 394 | "O Govortsova", 395 | "O.Govortsova", 396 | "Olga Govortsova" 397 | ], 398 | "Chanelle Scheepers": [ 399 | "C Scheepers", 400 | "Chanelle Scheepers", 401 | "C.Scheepers" 402 | ], 403 | "Sofia Arvidsson": [ 404 | "S.Arvidsson", 405 | "Sofia Arvidsson", 406 | "S Arvidsson" 407 | ], 408 | "Francesca Schiavone": [ 409 | "F Schiavone", 410 | "Francesca Schiavone", 411 | "F.Schiavone" 412 | ], 413 | "Eugenie Bouchard": [ 414 | "Eugenie Bouchard", 415 | "E.Bouchard", 416 | "E Bouchard" 417 | ], 418 | "Bojana Jovanovski": [ 419 | "B.Jovanovski", 420 | "B Jovanovski", 421 | "Bojana Jovanovski" 422 | ], 423 | "Anna Tatishvili": [ 424 | "A.Tatishvili", 425 | "A Tatishvili", 426 | "Anna Tatishvili" 427 | ], 428 | "Coco Vandeweghe": [ 429 | "C Vandeweghe", 430 | "Coco Vandeweghe", 431 | "C.Vandeweghe" 432 | ], 433 | "Lara Arruabarrena": [ 434 | "L Arruabarrena", 435 | "Lara Arruabarrena", 436 | "L.Arruabarrena" 437 | ], 438 | "Lourdes Dominguez Lino": [ 439 | "L.Dominguez Lino", 440 | "L Dominguez Lino", 441 | "Lourdes Dominguez Lino" 442 | ], 443 | "Carla Suarez Navarro": [ 444 | "C Suarez Navarro", 445 | "Carla Suarez Navarro", 446 | "C.Suarez Navarro" 447 | ], 448 | "Silvia Soler-Espinosa": [ 449 | "Silvia Soler-Espinosa", 450 | "S.Soler-Espinosa" 451 | ], 452 | "Pablo Carreno-Busta": [ 453 | "Pablo Carreno-Busta", 454 | "Pablo Carreno Busta" 455 | ], 456 | "Andreas Haider-Maurer": [ 457 | "A.Haider-Maurer", 458 | "Andreas Haider-Maurer" 459 | ], 460 | "Daniel Gimeno-Traver": [ 461 | "Daniel Gimeno-Traver", 462 | "D.Gimeno-Traver" 463 | ], 464 | "Bethanie Mattek-Sands": [ 465 | "B.Mattek-Sands", 466 | "Bethanie Mattek-Sands" 467 | ], 468 | "Mariana Duque-Marino": [ 469 | "Mariana Duque-Marino", 470 | "M.Duque-Marino" 471 | ], 472 | "Mirjana Lucic-Baroni": [ 473 | "Mirjana Lucic-Baroni", 474 | "M.Lucic-Baroni" 475 | ], 476 | "Guillermo Garcia-Lopez": [ 477 | "G.Garcia-Lopez", 478 | "Guillermo Garcia-Lopez" 479 | ], 480 | "Maria-Teresa Torro-Flor": [ 481 | "M.Torro-Flor", 482 | "Maria-Teresa Torro-Flor" 483 | ], 484 | "Alex Bogomolov Jr.": [ 485 | "A.Bogomolov Jr.", 486 | "Alex Bogomolov Jr." 487 | ], 488 | "Dinah Pfizenmaier": [ 489 | "D Pfizenmaier", 490 | "Dinah Pfizenmaier" 491 | ], 492 | "Nina Bratchikova": [ 493 | "Nina Bratchikova", 494 | "N.Bratchikova" 495 | ], 496 | "Marcos Baghdatis": [ 497 | "Marcos Baghdatis", 498 | "M.Baghdatis" 499 | ], 500 | "Kenny De Schepper": [ 501 | "Kenny De Schepper", 502 | "K.De Schepper" 503 | ], 504 | "Paula Ormaechea": [ 505 | "Paula Ormaechea", 506 | "P Ormaechea" 507 | ], 508 | "Kevin Anderson": [ 509 | "Kevin Anderson", 510 | "K.Anderson" 511 | ], 512 | "Igor Sijsling": [ 513 | "I.Sijsling", 514 | "Igor Sijsling" 515 | ], 516 | "Grigor Dimitrov": [ 517 | "Grigor Dimitrov", 518 | "G.Dimitrov" 519 | ], 520 | "Fernando Verdasco": [ 521 | "Fernando Verdasco", 522 | "F.Verdasco" 523 | ], 524 | "Olivia Rogowska": [ 525 | "Olivia Rogowska", 526 | "O Rogowska" 527 | ], 528 | "Julien Benneteau": [ 529 | "Julien Benneteau", 530 | "J.Benneteau" 531 | ], 532 | "Adrian Mannarino": [ 533 | "A.Mannarino", 534 | "Adrian Mannarino" 535 | ], 536 | "Klara Zakopalova": [ 537 | "Klara Zakopalova", 538 | "K.Zakopalova" 539 | ], 540 | "Lesia Tsurenko": [ 541 | "L.Tsurenko", 542 | "Lesia Tsurenko" 543 | ], 544 | "Julia Glushko": [ 545 | "Julia Glushko", 546 | "J Glushko" 547 | ], 548 | "Virginie Razzano": [ 549 | "V.Razzano", 550 | "Virginie Razzano" 551 | ], 552 | "Petra Cetkovska": [ 553 | "P.Cetkovska", 554 | "Petra Cetkovska" 555 | ], 556 | "Dominika Cibulkova": [ 557 | "Dominika Cibulkova", 558 | "D.Cibulkova" 559 | ], 560 | "Santiago Giraldo": [ 561 | "S.Giraldo", 562 | "Santiago Giraldo" 563 | ], 564 | "Martin Klizan": [ 565 | "M.Klizan", 566 | "Martin Klizan" 567 | ], 568 | "Juan Monaco": [ 569 | "J.Monaco", 570 | "Juan Monaco" 571 | ], 572 | "Ricardas Berankis": [ 573 | "Ricardas Berankis", 574 | "R.Berankis" 575 | ], 576 | "Romina Oprandi": [ 577 | "R.Oprandi", 578 | "Romina Oprandi" 579 | ], 580 | "Paul-Henri Mathieu": [ 581 | "P-H.Mathieu", 582 | "Paul-Henri Mathieu" 583 | ], 584 | "David Goffin": [ 585 | "David Goffin", 586 | "D.Goffin" 587 | ], 588 | "Marion Bartoli": [ 589 | "Marion Bartoli", 590 | "M.Bartoli" 591 | ], 592 | "Johanna Larsson": [ 593 | "Johanna Larsson", 594 | "J.Larsson" 595 | ], 596 | "Stefanie Voegele": [ 597 | "S.Voegele", 598 | "Stefanie Voegele" 599 | ], 600 | "Jan-Lennard Struff": [ 601 | "J.Struff", 602 | "Jan-Lennard Struff" 603 | ], 604 | "Adrian Ungur": [ 605 | "A.Ungur", 606 | "Adrian Ungur" 607 | ], 608 | "Paolo Lorenzi": [ 609 | "P.Lorenzi", 610 | "Paolo Lorenzi" 611 | ], 612 | "Donna Vekic": [ 613 | "Donna Vekic", 614 | "D.Vekic" 615 | ], 616 | "Blaz Kavcic": [ 617 | "Blaz Kavcic", 618 | "B.Kavcic" 619 | ], 620 | "Kiki Bertens": [ 621 | "K.Bertens", 622 | "Kiki Bertens" 623 | ], 624 | "Aljaz Bedene": [ 625 | "Aljaz Bedene", 626 | "A.Bedene" 627 | ], 628 | "Jurgen Zopp": [ 629 | "J.Zopp", 630 | "Jurgen Zopp" 631 | ], 632 | "Go Soeda": [ 633 | "G.Soeda", 634 | "Go Soeda" 635 | ], 636 | "Denis Kudla": [ 637 | "D.Kudla", 638 | "Denis Kudla" 639 | ], 640 | "Grega Zemlja": [ 641 | "Grega Zemlja", 642 | "G.Zemlja" 643 | ], 644 | "Alejandro Falla": [ 645 | "Alejandro Falla", 646 | "A.Falla" 647 | ], 648 | "Guido Pella": [ 649 | "G.Pella", 650 | "Guido Pella" 651 | ], 652 | "Jo-Wilfried Tsonga": [ 653 | "Jo-Wilfried Tsonga", 654 | "J-W.Tsonga" 655 | ], 656 | "Roger Federer": [ 657 | "Roger Federer", 658 | "R.Federer" 659 | ], 660 | "Tobias Kamke": [ 661 | "T.Kamke", 662 | "Tobias Kamke" 663 | ], 664 | "Irina-Camelia Begu": [ 665 | "I.Begu", 666 | "Irina-Camelia Begu" 667 | ], 668 | "James Blake": [ 669 | "James Blake", 670 | "J.Blake" 671 | ], 672 | "Ashleigh Barty": [ 673 | "Ashleigh Barty", 674 | "A Barty" 675 | ], 676 | "Tatjana Maria": [ 677 | "Tatjana Maria", 678 | "T.Maria" 679 | ], 680 | "Ayumi Morita": [ 681 | "A.Morita", 682 | "Ayumi Morita" 683 | ], 684 | "Rafael Nadal": [ 685 | "R.Nadal", 686 | "Rafael Nadal" 687 | ], 688 | "Kurumi Nara": [ 689 | "Kurumi Nara", 690 | "K Nara" 691 | ], 692 | "Steve Darcis": [ 693 | "Steve Darcis", 694 | "S.Darcis" 695 | ], 696 | "Jeremy Chardy": [ 697 | "Jeremy Chardy", 698 | "J.Chardy" 699 | ], 700 | "Gilles Simon": [ 701 | "G.Simon", 702 | "Gilles Simon" 703 | ], 704 | "Matthew Ebden": [ 705 | "M.Ebden", 706 | "Matthew Ebden" 707 | ], 708 | "Albert Ramos": [ 709 | "Albert Ramos", 710 | "A.Ramos" 711 | ], 712 | "Rajeev Ram": [ 713 | "R.Ram", 714 | "Rajeev Ram" 715 | ], 716 | "Guillaume Rufin": [ 717 | "Guillaume Rufin", 718 | "G.Rufin" 719 | ], 720 | "Monica Puig": [ 721 | "M.Puig", 722 | "Monica Puig" 723 | ], 724 | "Melanie Oudin": [ 725 | "Melanie Oudin", 726 | "M.Oudin" 727 | ], 728 | "Vania King": [ 729 | "V.King", 730 | "Vania King" 731 | ], 732 | "Ivan Dodig": [ 733 | "Ivan Dodig", 734 | "I.Dodig" 735 | ], 736 | "Arantxa Rus": [ 737 | "Arantxa Rus", 738 | "A.Rus" 739 | ], 740 | "Timea Babos": [ 741 | "Timea Babos", 742 | "T.Babos" 743 | ], 744 | "Andreas Seppi": [ 745 | "Andreas Seppi", 746 | "A.Seppi" 747 | ], 748 | "Bernard Tomic": [ 749 | "Bernard Tomic", 750 | "B.Tomic" 751 | ], 752 | "Lukasz Kubot": [ 753 | "L.Kubot", 754 | "Lukasz Kubot" 755 | ], 756 | "Mathilde Johansson": [ 757 | "M.Johansson", 758 | "Mathilde Johansson" 759 | ], 760 | "Steve Johnson": [ 761 | "S.Johnson", 762 | "Steve Johnson" 763 | ], 764 | "Jan Hajek": [ 765 | "Jan Hajek", 766 | "J.Hajek" 767 | ], 768 | "Su-Wei Hsieh": [ 769 | "Su-Wei Hsieh", 770 | "S-W.Hsieh" 771 | ], 772 | "Jurgen Melzer": [ 773 | "Jurgen Melzer", 774 | "J.Melzer" 775 | ], 776 | "Feliciano Lopez": [ 777 | "F.Lopez", 778 | "Feliciano Lopez" 779 | ], 780 | "John Isner": [ 781 | "John Isner", 782 | "J.Isner" 783 | ], 784 | "Nicolas Mahut": [ 785 | "N.Mahut", 786 | "Nicolas Mahut" 787 | ], 788 | "Jesse Levine": [ 789 | "J.Levine", 790 | "Jesse Levine" 791 | ], 792 | "Olga Puchkova": [ 793 | "Olga Puchkova", 794 | "O.Puchkova" 795 | ], 796 | "Marin Cilic": [ 797 | "M.Cilic", 798 | "Marin Cilic" 799 | ], 800 | "Sam Querrey": [ 801 | "Sam Querrey", 802 | "S.Querrey" 803 | ], 804 | "Martin Alund": [ 805 | "M.Alund", 806 | "Martin Alund" 807 | ], 808 | "Benoit Paire": [ 809 | "Benoit Paire", 810 | "B.Paire" 811 | ], 812 | "Julian Reister": [ 813 | "J.Reister", 814 | "Julian Reister" 815 | ], 816 | "Ryan Harrison": [ 817 | "R.Harrison", 818 | "Ryan Harrison" 819 | ], 820 | "Lukas Lacko": [ 821 | "L.Lacko", 822 | "Lukas Lacko" 823 | ], 824 | "Tamira Paszek": [ 825 | "Tamira Paszek", 826 | "T.Paszek" 827 | ], 828 | "Milos Raonic": [ 829 | "Milos Raonic", 830 | "M.Raonic" 831 | ], 832 | "M Koehler": [ 833 | "M Koehler", 834 | "M.Koehler" 835 | ], 836 | "Jerzy Janowicz": [ 837 | "J.Janowicz", 838 | "Jerzy Janowicz" 839 | ], 840 | "Novak Djokovic": [ 841 | "N.Djokovic", 842 | "Novak Djokovic" 843 | ], 844 | "Marina Erakovic": [ 845 | "M.Erakovic", 846 | "Marina Erakovic" 847 | ], 848 | "Irena Pavlovic": [ 849 | "Irena Pavlovic" 850 | ], 851 | "Ivo Karlovic": [ 852 | "Ivo Karlovic" 853 | ], 854 | "Nadia Petrova": [ 855 | "N.Petrova", 856 | "Nadia Petrova" 857 | ], 858 | "Daniel Brands": [ 859 | "D.Brands", 860 | "Daniel Brands" 861 | ], 862 | "Tommy Robredo": [ 863 | "Tommy Robredo", 864 | "T.Robredo" 865 | ], 866 | "Jarkko Nieminen": [ 867 | "J.Nieminen", 868 | "Jarkko Nieminen" 869 | ], 870 | "Mikhail Youzhny": [ 871 | "Mikhail Youzhny", 872 | "M.Youzhny" 873 | ], 874 | "Tomas Berdych": [ 875 | "T.Berdych", 876 | "Tomas Berdych" 877 | ], 878 | "Carlos Berlocq": [ 879 | "Carlos Berlocq", 880 | "C.Berlocq" 881 | ], 882 | "Evgeny Donskoy": [ 883 | "Evgeny Donskoy", 884 | "E.Donskoy" 885 | ], 886 | "Vesna Dolonc": [ 887 | "V.Dolonc", 888 | "Vesna Dolonc" 889 | ], 890 | "Michael Llodra": [ 891 | "M.Llodra", 892 | "Michael Llodra" 893 | ], 894 | "Tsvetana Pironkova": [ 895 | "T.Pironkova", 896 | "Tsvetana Pironkova" 897 | ], 898 | "Jana Cepelova": [ 899 | "Jana Cepelova", 900 | "J.Cepelova" 901 | ], 902 | "Alexandra Cadantu": [ 903 | "Alexandra Cadantu", 904 | "A.Cadantu" 905 | ], 906 | "Elena Vesnina": [ 907 | "Elena Vesnina", 908 | "E.Vesnina" 909 | ], 910 | "Lleyton Hewitt": [ 911 | "Lleyton Hewitt", 912 | "L.Hewitt" 913 | ], 914 | "Xavier Malisse": [ 915 | "Xavier Malisse", 916 | "X.Malisse" 917 | ], 918 | "Maria Sharapova": [ 919 | "M.Sharapova", 920 | "Maria Sharapova" 921 | ], 922 | "Lucie Safarova": [ 923 | "Lucie Safarova", 924 | "L.Safarova" 925 | ], 926 | "Stanislas Wawrinka": [ 927 | "Stanislas Wawrinka", 928 | "S.Wawrinka" 929 | ], 930 | "Ernests Gulbis": [ 931 | "Ernests Gulbis", 932 | "E.Gulbis" 933 | ], 934 | "Simone Bolelli": [ 935 | "S.Bolelli", 936 | "Simone Bolelli" 937 | ], 938 | "Pablo Andujar": [ 939 | "P.Andujar", 940 | "Pablo Andujar" 941 | ], 942 | "Fabio Fognini": [ 943 | "F.Fognini", 944 | "Fabio Fognini" 945 | ], 946 | "Radek Stepanek": [ 947 | "R.Stepanek", 948 | "Radek Stepanek" 949 | ], 950 | "Michael Russell": [ 951 | "M.Russell", 952 | "Michael Russell" 953 | ], 954 | "Viktor Troicki": [ 955 | "V.Troicki", 956 | "Viktor Troicki" 957 | ], 958 | "Victor Hanescu": [ 959 | "Victor Hanescu", 960 | "V.Hanescu" 961 | ], 962 | "Magdalena Rybarikova": [ 963 | "M.Rybarikova", 964 | "Magdalena Rybarikova" 965 | ], 966 | "Marc Gicquel": [ 967 | "Marc Gicquel", 968 | "M.Gicquel" 969 | ], 970 | "Richard Gasquet": [ 971 | "R.Gasquet", 972 | "Richard Gasquet" 973 | ], 974 | "Albert Montanes": [ 975 | "A.Montanes", 976 | "Albert Montanes" 977 | ], 978 | "Alejandro Gonzalez": [ 979 | "Alejandro Gonzalez" 980 | ], 981 | "Maximo Gonzalez": [ 982 | "Maximo Gonzalez" 983 | ], 984 | "Denis Istomin": [ 985 | "Denis Istomin", 986 | "D.Istomin" 987 | ], 988 | "Wayne Odesnik": [ 989 | "W.Odesnik", 990 | "Wayne Odesnik" 991 | ], 992 | "Marinko Matosevic": [ 993 | "M.Matosevic", 994 | "Marinko Matosevic" 995 | ], 996 | "Nicolas Almagro": [ 997 | "Nicolas Almagro", 998 | "N.Almagro" 999 | ], 1000 | "Horacio Zeballos": [ 1001 | "H.Zeballos", 1002 | "Horacio Zeballos" 1003 | ], 1004 | "Yanina Wickmayer": [ 1005 | "Yanina Wickmayer", 1006 | "Y.Wickmayer" 1007 | ], 1008 | "Monica Niculescu": [ 1009 | "Monica Niculescu", 1010 | "M.Niculescu" 1011 | ], 1012 | "Elena Baltacha": [ 1013 | "Elena Baltacha", 1014 | "E.Baltacha" 1015 | ], 1016 | "Garbine Muguruza": [ 1017 | "Garbine Muguruza", 1018 | "G.Muguruza" 1019 | ], 1020 | "Sergiy Stakhovsky": [ 1021 | "S.Stakhovsky", 1022 | "Sergiy Stakhovsky" 1023 | ], 1024 | "Yulia Putintseva": [ 1025 | "Y.Putintseva", 1026 | "Yulia Putintseva" 1027 | ], 1028 | "Pauline Parmentier": [ 1029 | "Pauline Parmentier", 1030 | "P.Parmentier" 1031 | ], 1032 | "Andrea Hlavackova": [ 1033 | "A.Hlavackova", 1034 | "Andrea Hlavackova" 1035 | ], 1036 | "Dmitry Tursunov": [ 1037 | "D.Tursunov", 1038 | "Dmitry Tursunov" 1039 | ], 1040 | "Kei Nishikori": [ 1041 | "Kei Nishikori", 1042 | "K.Nishikori" 1043 | ], 1044 | "Vasek Pospisil": [ 1045 | "V.Pospisil", 1046 | "Vasek Pospisil" 1047 | ], 1048 | "Marcel Granollers": [ 1049 | "Marcel Granollers", 1050 | "M.Granollers" 1051 | ], 1052 | "Teymuraz Gabashvili": [ 1053 | "T.Gabashvili", 1054 | "Teymuraz Gabashvili" 1055 | ], 1056 | "Janko Tipsarevic": [ 1057 | "Janko Tipsarevic", 1058 | "J.Tipsarevic" 1059 | ], 1060 | "James Duckworth": [ 1061 | "J.Duckworth", 1062 | "James Duckworth" 1063 | ], 1064 | "Philipp Petzschner": [ 1065 | "P.Petzschner", 1066 | "Philipp Petzschner" 1067 | ], 1068 | "Carina Witthoeft": [ 1069 | "Carina Witthoeft", 1070 | "C.Witthoeft" 1071 | ], 1072 | "Alexandr Dolgopolov": [ 1073 | "A.Dolgopolov", 1074 | "Alexandr Dolgopolov" 1075 | ], 1076 | "Michal Przysiezny": [ 1077 | "M.Przysiezny", 1078 | "Michal Przysiezny" 1079 | ], 1080 | "Philipp Kohlschreiber": [ 1081 | "P.Kohlschreiber", 1082 | "Philipp Kohlschreiber" 1083 | ], 1084 | "Rogerio Dutra Silva": [ 1085 | "Rogerio Dutra Silva", 1086 | "R.Dutra Silva" 1087 | ], 1088 | "Edouard Roger-Vasselin": [ 1089 | "Edouard Roger-Vasselin", 1090 | "E.Roger-Vasselin" 1091 | ], 1092 | "Barbora Zahlavova Strycova": [ 1093 | "Barbora Zahlavova Strycova", 1094 | "B.Zahlavova Strycova" 1095 | ], 1096 | "Roberto Bautista Agut": [ 1097 | "Roberto Bautista Agut", 1098 | "R.Bautista Agut" 1099 | ], 1100 | "Patricia Mayr-Achleitner": [ 1101 | "Patricia Mayr-Achleitner" 1102 | ], 1103 | "Hao Chen Tang": [ 1104 | "Hao Chen Tang" 1105 | ], 1106 | "Somdev Devvarman": [ 1107 | "Somdev Devvarman" 1108 | ], 1109 | "Claire Feuerstein": [ 1110 | "Claire Feuerstein" 1111 | ], 1112 | "Collin Altamirano": [ 1113 | "Collin Altamirano" 1114 | ], 1115 | "Maria Joao Koehler": [ 1116 | "Maria Joao Koehler" 1117 | ], 1118 | "E.Birnerova": [ 1119 | "E.Birnerova" 1120 | ], 1121 | "Sandra Zahlavova": [ 1122 | "Sandra Zahlavova" 1123 | ], 1124 | "Casey Dellacqua": [ 1125 | "Casey Dellacqua" 1126 | ], 1127 | "K.Edmund": [ 1128 | "K.Edmund" 1129 | ], 1130 | "G.Elias": [ 1131 | "G.Elias" 1132 | ], 1133 | "O.Rochus": [ 1134 | "O.Rochus" 1135 | ], 1136 | "Dominic Thiem": [ 1137 | "Dominic Thiem" 1138 | ], 1139 | "Tim Smyczek": [ 1140 | "Tim Smyczek" 1141 | ], 1142 | "Katerina Siniakova": [ 1143 | "Katerina Siniakova" 1144 | ], 1145 | "Belinda Bencic": [ 1146 | "Belinda Bencic" 1147 | ], 1148 | "Zuzana Kucova": [ 1149 | "Zuzana Kucova" 1150 | ], 1151 | "Blaz Rola": [ 1152 | "Blaz Rola" 1153 | ], 1154 | "Dudi Sela": [ 1155 | "Dudi Sela" 1156 | ], 1157 | "Pere Riba": [ 1158 | "Pere Riba" 1159 | ], 1160 | "Florent Serra": [ 1161 | "Florent Serra" 1162 | ], 1163 | "Joao Sousa": [ 1164 | "Joao Sousa" 1165 | ], 1166 | "J.Konta": [ 1167 | "J.Konta" 1168 | ], 1169 | "Jack Sock": [ 1170 | "Jack Sock" 1171 | ], 1172 | "Tadeja Majeric": [ 1173 | "Tadeja Majeric" 1174 | ], 1175 | "Katarzyna Piter": [ 1176 | "Katarzyna Piter" 1177 | ], 1178 | "M.Reid": [ 1179 | "M.Reid" 1180 | ], 1181 | "Grace Min": [ 1182 | "Grace Min" 1183 | ], 1184 | "V Duval": [ 1185 | "V Duval" 1186 | ], 1187 | "David Guez": [ 1188 | "David Guez" 1189 | ], 1190 | "Aravane Rezai": [ 1191 | "Aravane Rezai" 1192 | ], 1193 | "Bradley Klahn": [ 1194 | "Bradley Klahn" 1195 | ], 1196 | "Gilles Muller": [ 1197 | "Gilles Muller" 1198 | ], 1199 | "T.Moore": [ 1200 | "T.Moore" 1201 | ], 1202 | "Teliana Pereira": [ 1203 | "Teliana Pereira" 1204 | ], 1205 | "Melinda Czink": [ 1206 | "Melinda Czink" 1207 | ], 1208 | "Donald Young": [ 1209 | "Donald Young" 1210 | ], 1211 | "Ana Konjuh": [ 1212 | "Ana Konjuh" 1213 | ], 1214 | "Jiri Vesely": [ 1215 | "Jiri Vesely" 1216 | ], 1217 | "Zarina Diyas": [ 1218 | "Zarina Diyas" 1219 | ], 1220 | "Sachia Vickery": [ 1221 | "Sachia Vickery" 1222 | ], 1223 | "Frank Dancevic": [ 1224 | "Frank Dancevic" 1225 | ], 1226 | "Dusan Lajovic": [ 1227 | "Dusan Lajovic" 1228 | ], 1229 | "M.Camerin": [ 1230 | "M.Camerin" 1231 | ], 1232 | "Daniel Evans": [ 1233 | "Daniel Evans" 1234 | ], 1235 | "Jordan Thompson": [ 1236 | "Jordan Thompson" 1237 | ], 1238 | "D.Brown": [ 1239 | "D.Brown" 1240 | ], 1241 | "Samuel Groth": [ 1242 | "Samuel Groth" 1243 | ], 1244 | "Maxime Teixeira": [ 1245 | "Maxime Teixeira" 1246 | ], 1247 | "Storm Sanders": [ 1248 | "Storm Sanders" 1249 | ], 1250 | "Pablo Cuevas": [ 1251 | "Pablo Cuevas" 1252 | ], 1253 | "Vincent Millot": [ 1254 | "Vincent Millot" 1255 | ], 1256 | "A.Glatch": [ 1257 | "A.Glatch" 1258 | ], 1259 | "B.Reynolds": [ 1260 | "B.Reynolds" 1261 | ], 1262 | "Thomas Fabbiano": [ 1263 | "Thomas Fabbiano" 1264 | ], 1265 | "Polona Hercog": [ 1266 | "Polona Hercog" 1267 | ], 1268 | "Lucas Pouille": [ 1269 | "Lucas Pouille" 1270 | ], 1271 | "B.Knittel": [ 1272 | "B.Knittel" 1273 | ], 1274 | "Luksika Kumkhum": [ 1275 | "Luksika Kumkhum" 1276 | ], 1277 | "Gael Monfils": [ 1278 | "Gael Monfils" 1279 | ], 1280 | "Irina Falconi": [ 1281 | "Irina Falconi" 1282 | ], 1283 | "Andrey Golubev": [ 1284 | "Andrey Golubev" 1285 | ], 1286 | "Filippo Volandri": [ 1287 | "Filippo Volandri" 1288 | ], 1289 | "M.Krajicek": [ 1290 | "M.Krajicek" 1291 | ], 1292 | "Thomaz Bellucci": [ 1293 | "Thomaz Bellucci" 1294 | ], 1295 | "Federico Delbonis": [ 1296 | "Federico Delbonis" 1297 | ], 1298 | "I.Andreev": [ 1299 | "I.Andreev" 1300 | ], 1301 | "Damir Dzumhur": [ 1302 | "Damir Dzumhur" 1303 | ], 1304 | "Nick Kyrgios": [ 1305 | "Nick Kyrgios" 1306 | ], 1307 | "A Dulgheru": [ 1308 | "A Dulgheru" 1309 | ], 1310 | "Nikolay Davydenko": [ 1311 | "Nikolay Davydenko" 1312 | ], 1313 | "Illya Marchenko": [ 1314 | "Illya Marchenko" 1315 | ], 1316 | "Nadiya Kichenok": [ 1317 | "Nadiya Kichenok" 1318 | ], 1319 | "Mikhail Kukushkin": [ 1320 | "Mikhail Kukushkin" 1321 | ], 1322 | "Vera Zvonareva": [ 1323 | "Vera Zvonareva" 1324 | ], 1325 | "Jarmila Gajdosova": [ 1326 | "Jarmila Gajdosova" 1327 | ], 1328 | "Albano Olivetti": [ 1329 | "Albano Olivetti" 1330 | ], 1331 | "V Dushevina": [ 1332 | "V Dushevina" 1333 | ], 1334 | "Aleksandr Nedovyesov": [ 1335 | "Aleksandr Nedovyesov" 1336 | ], 1337 | "Alla Kudryavtseva": [ 1338 | "Alla Kudryavtseva" 1339 | ], 1340 | "Thanasi Kokkinakis": [ 1341 | "Thanasi Kokkinakis" 1342 | ], 1343 | "Peter Gojowczyk": [ 1344 | "Peter Gojowczyk" 1345 | ], 1346 | "Yuliya Beygelzimer": [ 1347 | "Yuliya Beygelzimer" 1348 | ], 1349 | "A.Keothavong": [ 1350 | "A.Keothavong" 1351 | ], 1352 | "Juan Martin Del Potro": [ 1353 | "Juan Martin Del Potro", 1354 | "J.Del Potro" 1355 | ], 1356 | "Jesse Huta Galung": [ 1357 | "Jesse Huta Galung" 1358 | ], 1359 | "Alison Van Uytvanck": [ 1360 | "Alison Van Uytvanck" 1361 | ], 1362 | "Stephanie Foretz Gacon": [ 1363 | "Stephanie Foretz Gacon" 1364 | ], 1365 | "Anna Karolina Schmiedlova": [ 1366 | "Anna Karolina Schmiedlova", 1367 | "Anna Schmiedlova", 1368 | "A.Schmiedlova" 1369 | ], 1370 | "E.Cabeza Candela": [ 1371 | "E.Cabeza Candela" 1372 | ], 1373 | "M.Larcher De Brito": [ 1374 | "M.Larcher De Brito" 1375 | ], 1376 | "Daniel Munoz-De La Nava": [ 1377 | "Daniel Munoz-De La Nava" 1378 | ] 1379 | } 1380 | -------------------------------------------------------------------------------- /tennis/groups.json: -------------------------------------------------------------------------------- 1 | { 2 | "Yen-Hsun Lu": [ 3 | "Di Wu", 4 | "Yen-Hsun Lu", 5 | "Y-H.Lu", 6 | "Na Li", 7 | "N Li", 8 | "N.Li" 9 | ], 10 | "Serena Williams": [ 11 | "Rhyne Williams", 12 | "Serena Williams", 13 | "S Williams", 14 | "S.Williams", 15 | "Venus Williams", 16 | "V Williams" 17 | ], 18 | "Agnieszka Radwanska": [ 19 | "Agnieszka Radwanska", 20 | "A.Radwanska", 21 | "Urszula Radwanska", 22 | "U Radwanska", 23 | "U.Radwanska" 24 | ], 25 | "Shuai Zhang": [ 26 | "Ze Zhang", 27 | "Shuai Zhang", 28 | "Jie Zheng", 29 | "J Zheng", 30 | "J.Zheng" 31 | ], 32 | "Laura Robson": [ 33 | "Lukas Rosol", 34 | "L.Rosol", 35 | "Laura Robson", 36 | "L Robson", 37 | "L.Robson" 38 | ], 39 | "Karolina Pliskova": [ 40 | "Karolina Pliskova", 41 | "Kristyna Pliskova", 42 | "K Pliskova", 43 | "Kr.Pliskova", 44 | "Ka.Pliskova" 45 | ], 46 | "Caroline Wozniacki": [ 47 | "Caroline Wozniacki", 48 | "C Wozniacki", 49 | "C.Wozniacki", 50 | "C Wozniack", 51 | "A Wozniak" 52 | ], 53 | "Svetlana Kuznetsova": [ 54 | "Svetlana Kuznetsova", 55 | "S Kuznetsova", 56 | "Andrey Kuznetsov", 57 | "Alex Kuznetsov", 58 | "A.Kuznetsov" 59 | ], 60 | "Leonardo Mayer": [ 61 | "Leonardo Mayer", 62 | "L.Mayer", 63 | "Florian Mayer", 64 | "F.Mayer" 65 | ], 66 | "Thiemo de Bakker": [ 67 | "Thiemo de Bakker", 68 | "Benjamin Becker", 69 | "B.Becker", 70 | "Brian Baker" 71 | ], 72 | "Shahar Peer": [ 73 | "Shahar Peer", 74 | "Shuai Peng", 75 | "S Peng", 76 | "S.Peng" 77 | ], 78 | "Robin Haase": [ 79 | "Robin Haase", 80 | "R.Haase", 81 | "Tommy Haas", 82 | "T.Haas" 83 | ], 84 | "Anabel Medina Garrigues": [ 85 | "Anabel Medina Garrigues", 86 | "A. Medina Garrigues", 87 | "A Medina Garrigues", 88 | "A.Medina Garrigues" 89 | ], 90 | "Lourdes Dominguez Lino": [ 91 | "Lourdes Dominguez Lino", 92 | "L Dominguez Lino", 93 | "L.Dominguez Lino" 94 | ], 95 | "Carla Suarez Navarro": [ 96 | "Carla Suarez Navarro", 97 | "C Suarez Navarro", 98 | "C.Suarez Navarro" 99 | ], 100 | "Lara Arruabarrena": [ 101 | "Lara Arruabarrena", 102 | "L Arruabarrena", 103 | "L.Arruabarrena" 104 | ], 105 | "Anastasia Pavlyuchenkova": [ 106 | "Anastasia Pavlyuchenkova", 107 | "A Pavlyuchenkova", 108 | "A.Pavlyuchenkova" 109 | ], 110 | "Bojana Jovanovski": [ 111 | "Bojana Jovanovski", 112 | "B Jovanovski", 113 | "B.Jovanovski" 114 | ], 115 | "Olga Govortsova": [ 116 | "Olga Govortsova", 117 | "O Govortsova", 118 | "O.Govortsova" 119 | ], 120 | "Elina Svitolina": [ 121 | "Elina Svitolina", 122 | "E Svitolina", 123 | "E.Svitolina" 124 | ], 125 | "Kristina Mladenovic": [ 126 | "Kristina Mladenovic", 127 | "K Mladenovic", 128 | "K.Mladenovic" 129 | ], 130 | "Flavia Pennetta": [ 131 | "Flavia Pennetta", 132 | "F Pennetta", 133 | "F.Pennetta" 134 | ], 135 | "Ekaterina Makarova": [ 136 | "Ekaterina Makarova", 137 | "E Makarova", 138 | "E.Makarova" 139 | ], 140 | "Victoria Azarenka": [ 141 | "Victoria Azarenka", 142 | "V Azarenka", 143 | "V.Azarenka" 144 | ], 145 | "Petra Kvitova": [ 146 | "Petra Kvitova", 147 | "P Kvitova", 148 | "P.Kvitova" 149 | ], 150 | "Mandy Minella": [ 151 | "Mandy Minella", 152 | "M Minella", 153 | "M.Minella" 154 | ], 155 | "Christina McHale": [ 156 | "Christina McHale", 157 | "C McHale", 158 | "C.McHale" 159 | ], 160 | "Roberta Vinci": [ 161 | "Roberta Vinci", 162 | "R Vinci", 163 | "R.Vinci" 164 | ], 165 | "Heather Watson": [ 166 | "Heather Watson", 167 | "H Watson", 168 | "H.Watson" 169 | ], 170 | "Stephane Robert": [ 171 | "Stephane Robert", 172 | "S.Robert", 173 | "Shelby Rogers" 174 | ], 175 | "Michael Berrer": [ 176 | "Michael Berrer", 177 | "David Ferrer", 178 | "D.Ferrer" 179 | ], 180 | "Angelique Kerber": [ 181 | "Angelique Kerber", 182 | "A Kerber", 183 | "A.Kerber" 184 | ], 185 | "Andreas Beck": [ 186 | "Annika Beck", 187 | "Andreas Beck", 188 | "A.Beck" 189 | ], 190 | "Madison Keys": [ 191 | "Madison Keys", 192 | "M Keys", 193 | "M.Keys" 194 | ], 195 | "Andrej Martin": [ 196 | "Petra Martic", 197 | "P.Martic", 198 | "Andrej Martin" 199 | ], 200 | "Lauren Davis": [ 201 | "Lauren Davis", 202 | "L Davis", 203 | "L.Davis" 204 | ], 205 | "Caroline Garcia": [ 206 | "Caroline Garcia", 207 | "C Garcia", 208 | "C.Garcia" 209 | ], 210 | "Alison Riske": [ 211 | "Alison Riske", 212 | "A Riske", 213 | "A.Riske" 214 | ], 215 | "Jimmy Wang": [ 216 | "Jimmy Wang", 217 | "Y-T.Wang", 218 | "J.Ward" 219 | ], 220 | "Ying-Ying Duan": [ 221 | "Ying-Ying Duan", 222 | "Y Duan", 223 | "Yung-Jan Chan" 224 | ], 225 | "Misaki Doi": [ 226 | "Misaki Doi", 227 | "M Doi", 228 | "M.Doi" 229 | ], 230 | "Simona Halep": [ 231 | "Simona Halep", 232 | "S Halep", 233 | "S.Halep" 234 | ], 235 | "Andy Murray": [ 236 | "Andy Murray", 237 | "A.Murray", 238 | "S.Murray" 239 | ], 240 | "Mona Barthel": [ 241 | "Mona Barthel", 242 | "M Barthel", 243 | "M.Barthel" 244 | ], 245 | "Kaia Kanepi": [ 246 | "Kaia Kanepi", 247 | "K Kanepi", 248 | "K.Kanepi" 249 | ], 250 | "Karin Knapp": [ 251 | "Karin Knapp", 252 | "K Knapp", 253 | "K.Knapp" 254 | ], 255 | "Jelena Jankovic": [ 256 | "Jelena Jankovic", 257 | "J Jankovic", 258 | "J.Jankovic" 259 | ], 260 | "Ana Ivanovic": [ 261 | "Ana Ivanovic", 262 | "A Ivanovic", 263 | "A.Ivanovic" 264 | ], 265 | "Andrea Petkovic": [ 266 | "Andrea Petkovic", 267 | "A Petkovic", 268 | "A.Petkovic" 269 | ], 270 | "Alize Cornet": [ 271 | "Alize Cornet", 272 | "A Cornet", 273 | "A.Cornet" 274 | ], 275 | "Camila Giorgi": [ 276 | "Camila Giorgi", 277 | "C Giorgi", 278 | "C.Giorgi" 279 | ], 280 | "Sara Errani": [ 281 | "Sara Errani", 282 | "S Errani", 283 | "S.Errani" 284 | ], 285 | "Jamie Hampton": [ 286 | "Jamie Hampton", 287 | "J Hampton", 288 | "J.Hampton" 289 | ], 290 | "Lucie Hradecka": [ 291 | "Lucie Hradecka", 292 | "L Hradecka", 293 | "L.Hradecka" 294 | ], 295 | "Sabine Lisicki": [ 296 | "Sabine Lisicki", 297 | "S Lisicki", 298 | "S.Lisicki" 299 | ], 300 | "Sorana Cirstea": [ 301 | "Sorana Cirstea", 302 | "S Cirstea", 303 | "S.Cirstea" 304 | ], 305 | "Samantha Stosur": [ 306 | "Samantha Stosur", 307 | "S Stosur", 308 | "S.Stosur" 309 | ], 310 | "Julia Goerges": [ 311 | "Julia Goerges", 312 | "J Goerges", 313 | "J.Goerges" 314 | ], 315 | "Mallory Burdette": [ 316 | "Mallory Burdette", 317 | "M Burdette", 318 | "M.Burdette" 319 | ], 320 | "Yaroslava Shvedova": [ 321 | "Yaroslava Shvedova", 322 | "Y Shvedova", 323 | "Y.Shvedova" 324 | ], 325 | "Sloane Stephens": [ 326 | "Sloane Stephens", 327 | "S Stephens", 328 | "S.Stephens" 329 | ], 330 | "Kirsten Flipkens": [ 331 | "Kirsten Flipkens", 332 | "K Flipkens", 333 | "K.Flipkens" 334 | ], 335 | "Ajla Tomljanovic": [ 336 | "Ajla Tomljanovic", 337 | "A Tomljanovic", 338 | "A.Tomljanovic" 339 | ], 340 | "Varvara Lepchenko": [ 341 | "Varvara Lepchenko", 342 | "V Lepchenko", 343 | "V.Lepchenko" 344 | ], 345 | "Maria Kirilenko": [ 346 | "Maria Kirilenko", 347 | "M Kirilenko", 348 | "M.Kirilenko" 349 | ], 350 | "Sofia Arvidsson": [ 351 | "Sofia Arvidsson", 352 | "S Arvidsson", 353 | "S.Arvidsson" 354 | ], 355 | "Eugenie Bouchard": [ 356 | "Eugenie Bouchard", 357 | "E Bouchard", 358 | "E.Bouchard" 359 | ], 360 | "Anna Tatishvili": [ 361 | "Anna Tatishvili", 362 | "A Tatishvili", 363 | "A.Tatishvili" 364 | ], 365 | "Francesca Schiavone": [ 366 | "Francesca Schiavone", 367 | "F Schiavone", 368 | "F.Schiavone" 369 | ], 370 | "Chanelle Scheepers": [ 371 | "Chanelle Scheepers", 372 | "C Scheepers", 373 | "C.Scheepers" 374 | ], 375 | "Daniela Hantuchova": [ 376 | "Daniela Hantuchova", 377 | "D Hantuchova", 378 | "D.Hantuchova" 379 | ], 380 | "Yvonne Meusburger": [ 381 | "Yvonne Meusburger", 382 | "Y Meusburger", 383 | "Y.Meusburger" 384 | ], 385 | "Galina Voskoboeva": [ 386 | "Galina Voskoboeva", 387 | "G Voskoboeva", 388 | "G.Voskoboeva" 389 | ], 390 | "Kimiko Date-Krumm": [ 391 | "Kimiko Date-Krumm", 392 | "K Date-Krumm", 393 | "K.Date-Krumm" 394 | ], 395 | "Coco Vandeweghe": [ 396 | "Coco Vandeweghe", 397 | "C Vandeweghe", 398 | "C.Vandeweghe" 399 | ], 400 | "Barbora Zahlavova Strycova": [ 401 | "Barbora Zahlavova Strycova", 402 | "B.Zahlavova Strycova" 403 | ], 404 | "Roberto Bautista Agut": [ 405 | "Roberto Bautista Agut", 406 | "R.Bautista Agut" 407 | ], 408 | "Edouard Roger-Vasselin": [ 409 | "Edouard Roger-Vasselin", 410 | "E.Roger-Vasselin" 411 | ], 412 | "Pablo Carreno Busta": [ 413 | "Pablo Carreno Busta", 414 | "Pablo Carreno-Busta" 415 | ], 416 | "Daniel Gimeno-Traver": [ 417 | "Daniel Gimeno-Traver", 418 | "D.Gimeno-Traver" 419 | ], 420 | "Michal Przysiezny": [ 421 | "Michal Przysiezny", 422 | "M.Przysiezny" 423 | ], 424 | "Guillermo Garcia-Lopez": [ 425 | "Guillermo Garcia-Lopez", 426 | "G.Garcia-Lopez" 427 | ], 428 | "Nina Bratchikova": [ 429 | "Nina Bratchikova", 430 | "N.Bratchikova" 431 | ], 432 | "Yulia Putintseva": [ 433 | "Yulia Putintseva", 434 | "Y.Putintseva" 435 | ], 436 | "Paula Ormaechea": [ 437 | "Paula Ormaechea", 438 | "P Ormaechea" 439 | ], 440 | "Pauline Parmentier": [ 441 | "Pauline Parmentier", 442 | "P.Parmentier" 443 | ], 444 | "Dinah Pfizenmaier": [ 445 | "Dinah Pfizenmaier", 446 | "D Pfizenmaier" 447 | ], 448 | "Kei Nishikori": [ 449 | "Kei Nishikori", 450 | "K.Nishikori" 451 | ], 452 | "Marcel Granollers": [ 453 | "Marcel Granollers", 454 | "M.Granollers" 455 | ], 456 | "Sergiy Stakhovsky": [ 457 | "Sergiy Stakhovsky", 458 | "S.Stakhovsky" 459 | ], 460 | "Dmitry Tursunov": [ 461 | "Dmitry Tursunov", 462 | "D.Tursunov" 463 | ], 464 | "Marcos Baghdatis": [ 465 | "Marcos Baghdatis", 466 | "M.Baghdatis" 467 | ], 468 | "Anna Schmiedlova": [ 469 | "Anna Schmiedlova", 470 | "A.Schmiedlova" 471 | ], 472 | "Magdalena Rybarikova": [ 473 | "Magdalena Rybarikova", 474 | "M.Rybarikova" 475 | ], 476 | "Igor Sijsling": [ 477 | "Igor Sijsling", 478 | "I.Sijsling" 479 | ], 480 | "Olivia Rogowska": [ 481 | "Olivia Rogowska", 482 | "O Rogowska" 483 | ], 484 | "Lesia Tsurenko": [ 485 | "Lesia Tsurenko", 486 | "L.Tsurenko" 487 | ], 488 | "Julien Benneteau": [ 489 | "Julien Benneteau", 490 | "J.Benneteau" 491 | ], 492 | "Lucie Safarova": [ 493 | "Lucie Safarova", 494 | "L.Safarova" 495 | ], 496 | "Maria Sharapova": [ 497 | "Maria Sharapova", 498 | "M.Sharapova" 499 | ], 500 | "Klara Zakopalova": [ 501 | "Klara Zakopalova", 502 | "K.Zakopalova" 503 | ], 504 | "Tsvetana Pironkova": [ 505 | "Tsvetana Pironkova", 506 | "T.Pironkova" 507 | ], 508 | "Wayne Odesnik": [ 509 | "Wayne Odesnik", 510 | "W.Odesnik" 511 | ], 512 | "Michael Russell": [ 513 | "Michael Russell", 514 | "M.Russell" 515 | ], 516 | "Grigor Dimitrov": [ 517 | "Grigor Dimitrov", 518 | "G.Dimitrov" 519 | ], 520 | "Pablo Andujar": [ 521 | "Pablo Andujar", 522 | "P.Andujar" 523 | ], 524 | "Adrian Mannarino": [ 525 | "Adrian Mannarino", 526 | "A.Mannarino" 527 | ], 528 | "Kevin Anderson": [ 529 | "Kevin Anderson", 530 | "K.Anderson" 531 | ], 532 | "Carlos Berlocq": [ 533 | "Carlos Berlocq", 534 | "C.Berlocq" 535 | ], 536 | "Tomas Berdych": [ 537 | "Tomas Berdych", 538 | "T.Berdych" 539 | ], 540 | "Stanislas Wawrinka": [ 541 | "Stanislas Wawrinka", 542 | "S.Wawrinka" 543 | ], 544 | "Fabio Fognini": [ 545 | "Fabio Fognini", 546 | "F.Fognini" 547 | ], 548 | "Elena Vesnina": [ 549 | "Elena Vesnina", 550 | "E.Vesnina" 551 | ], 552 | "Santiago Giraldo": [ 553 | "Santiago Giraldo", 554 | "S.Giraldo" 555 | ], 556 | "Adrian Ungur": [ 557 | "Adrian Ungur", 558 | "A.Ungur" 559 | ], 560 | "Stefanie Voegele": [ 561 | "Stefanie Voegele", 562 | "S.Voegele" 563 | ], 564 | "Julian Reister": [ 565 | "Julian Reister", 566 | "J.Reister" 567 | ], 568 | "Jan-Lennard Struff": [ 569 | "Jan-Lennard Struff", 570 | "J.Struff" 571 | ], 572 | "Lukasz Kubot": [ 573 | "Lukasz Kubot", 574 | "L.Kubot" 575 | ], 576 | "Novak Djokovic": [ 577 | "Novak Djokovic", 578 | "N.Djokovic" 579 | ], 580 | "Benoit Paire": [ 581 | "Benoit Paire", 582 | "B.Paire" 583 | ], 584 | "Tommy Robredo": [ 585 | "Tommy Robredo", 586 | "T.Robredo" 587 | ], 588 | "Marin Cilic": [ 589 | "Marin Cilic", 590 | "M.Cilic" 591 | ], 592 | "Milos Raonic": [ 593 | "Milos Raonic", 594 | "M.Raonic" 595 | ], 596 | "Bernard Tomic": [ 597 | "Bernard Tomic", 598 | "B.Tomic" 599 | ], 600 | "Ricardas Berankis": [ 601 | "Ricardas Berankis", 602 | "R.Berankis" 603 | ], 604 | "Daniel Brands": [ 605 | "Daniel Brands", 606 | "D.Brands" 607 | ], 608 | "Romina Oprandi": [ 609 | "Romina Oprandi", 610 | "R.Oprandi" 611 | ], 612 | "Mikhail Youzhny": [ 613 | "Mikhail Youzhny", 614 | "M.Youzhny" 615 | ], 616 | "Juan Monaco": [ 617 | "Juan Monaco", 618 | "J.Monaco" 619 | ], 620 | "Lukas Lacko": [ 621 | "Lukas Lacko", 622 | "L.Lacko" 623 | ], 624 | "Thiemo De Bakker": [ 625 | "Thiemo De Bakker", 626 | "T.De Bakker" 627 | ], 628 | "James Blake": [ 629 | "James Blake", 630 | "J.Blake" 631 | ], 632 | "Grega Zemlja": [ 633 | "Grega Zemlja", 634 | "G.Zemlja" 635 | ], 636 | "Tobias Kamke": [ 637 | "Tobias Kamke", 638 | "T.Kamke" 639 | ], 640 | "Roger Federer": [ 641 | "Roger Federer", 642 | "R.Federer" 643 | ], 644 | "Jurgen Zopp": [ 645 | "Jurgen Zopp", 646 | "J.Zopp" 647 | ], 648 | "Alejandro Falla": [ 649 | "Alejandro Falla", 650 | "A.Falla" 651 | ], 652 | "Denis Kudla": [ 653 | "Denis Kudla", 654 | "D.Kudla" 655 | ], 656 | "Go Soeda": [ 657 | "Go Soeda", 658 | "G.Soeda" 659 | ], 660 | "Guido Pella": [ 661 | "Guido Pella", 662 | "G.Pella" 663 | ], 664 | "Jo-Wilfried Tsonga": [ 665 | "Jo-Wilfried Tsonga", 666 | "J-W.Tsonga" 667 | ], 668 | "Irina-Camelia Begu": [ 669 | "Irina-Camelia Begu", 670 | "I.Begu" 671 | ], 672 | "Guillaume Rufin": [ 673 | "Guillaume Rufin", 674 | "G.Rufin" 675 | ], 676 | "Ayumi Morita": [ 677 | "Ayumi Morita", 678 | "A.Morita" 679 | ], 680 | "Ashleigh Barty": [ 681 | "Ashleigh Barty", 682 | "A Barty" 683 | ], 684 | "Rafael Nadal": [ 685 | "Rafael Nadal", 686 | "R.Nadal" 687 | ], 688 | "Kurumi Nara": [ 689 | "Kurumi Nara", 690 | "K Nara" 691 | ], 692 | "Steve Darcis": [ 693 | "Steve Darcis", 694 | "S.Darcis" 695 | ], 696 | "Tatjana Maria": [ 697 | "Tatjana Maria", 698 | "T.Maria" 699 | ], 700 | "Monica Puig": [ 701 | "Monica Puig", 702 | "M.Puig" 703 | ], 704 | "Jeremy Chardy": [ 705 | "Jeremy Chardy", 706 | "J.Chardy" 707 | ], 708 | "Vania King": [ 709 | "Vania King", 710 | "V.King" 711 | ], 712 | "Albert Ramos": [ 713 | "Albert Ramos", 714 | "A.Ramos" 715 | ], 716 | "Timea Babos": [ 717 | "Timea Babos", 718 | "T.Babos" 719 | ], 720 | "Arantxa Rus": [ 721 | "Arantxa Rus", 722 | "A.Rus" 723 | ], 724 | "Rajeev Ram": [ 725 | "Rajeev Ram", 726 | "R.Ram" 727 | ], 728 | "Ivan Dodig": [ 729 | "Ivan Dodig", 730 | "I.Dodig" 731 | ], 732 | "Gilles Simon": [ 733 | "Gilles Simon", 734 | "G.Simon" 735 | ], 736 | "Matthew Ebden": [ 737 | "Matthew Ebden", 738 | "M.Ebden" 739 | ], 740 | "Melanie Oudin": [ 741 | "Melanie Oudin", 742 | "M.Oudin" 743 | ], 744 | "Nicolas Mahut": [ 745 | "Nicolas Mahut", 746 | "N.Mahut" 747 | ], 748 | "Su-Wei Hsieh": [ 749 | "Su-Wei Hsieh", 750 | "S-W.Hsieh" 751 | ], 752 | "Jan Hajek": [ 753 | "Jan Hajek", 754 | "J.Hajek" 755 | ], 756 | "John Isner": [ 757 | "John Isner", 758 | "J.Isner" 759 | ], 760 | "Jurgen Melzer": [ 761 | "Jurgen Melzer", 762 | "J.Melzer" 763 | ], 764 | "Andreas Seppi": [ 765 | "Andreas Seppi", 766 | "A.Seppi" 767 | ], 768 | "Donna Vekic": [ 769 | "Donna Vekic", 770 | "D.Vekic" 771 | ], 772 | "Feliciano Lopez": [ 773 | "Feliciano Lopez", 774 | "F.Lopez" 775 | ], 776 | "Steve Johnson": [ 777 | "Steve Johnson", 778 | "S.Johnson" 779 | ], 780 | "Mathilde Johansson": [ 781 | "Mathilde Johansson", 782 | "M.Johansson" 783 | ], 784 | "Tamira Paszek": [ 785 | "Tamira Paszek", 786 | "T.Paszek" 787 | ], 788 | "Martin Klizan": [ 789 | "Martin Klizan", 790 | "M.Klizan" 791 | ], 792 | "Sam Querrey": [ 793 | "Sam Querrey", 794 | "S.Querrey" 795 | ], 796 | "Kiki Bertens": [ 797 | "Kiki Bertens", 798 | "K.Bertens" 799 | ], 800 | "Marion Bartoli": [ 801 | "Marion Bartoli", 802 | "M.Bartoli" 803 | ], 804 | "M Koehler": [ 805 | "M Koehler", 806 | "M.Koehler" 807 | ], 808 | "Irena Pavlovic": [ 809 | "Ivo Karlovic", 810 | "Irena Pavlovic" 811 | ], 812 | "Jerzy Janowicz": [ 813 | "Jerzy Janowicz", 814 | "J.Janowicz" 815 | ], 816 | "Blaz Kavcic": [ 817 | "Blaz Kavcic", 818 | "B.Kavcic" 819 | ], 820 | "Marina Erakovic": [ 821 | "Marina Erakovic", 822 | "M.Erakovic" 823 | ], 824 | "Aljaz Bedene": [ 825 | "Aljaz Bedene", 826 | "A.Bedene" 827 | ], 828 | "Martin Alund": [ 829 | "Martin Alund", 830 | "M.Alund" 831 | ], 832 | "Jarkko Nieminen": [ 833 | "Jarkko Nieminen", 834 | "J.Nieminen" 835 | ], 836 | "Jesse Levine": [ 837 | "Jesse Levine", 838 | "J.Levine" 839 | ], 840 | "Paolo Lorenzi": [ 841 | "Paolo Lorenzi", 842 | "P.Lorenzi" 843 | ], 844 | "Ryan Harrison": [ 845 | "Ryan Harrison", 846 | "R.Harrison" 847 | ], 848 | "Johanna Larsson": [ 849 | "Johanna Larsson", 850 | "J.Larsson" 851 | ], 852 | "Nadia Petrova": [ 853 | "Nadia Petrova", 854 | "N.Petrova" 855 | ], 856 | "Paul-Henri Mathieu": [ 857 | "Paul-Henri Mathieu", 858 | "P-H.Mathieu" 859 | ], 860 | "David Goffin": [ 861 | "David Goffin", 862 | "D.Goffin" 863 | ], 864 | "Olga Puchkova": [ 865 | "Olga Puchkova", 866 | "O.Puchkova" 867 | ], 868 | "Viktor Troicki": [ 869 | "Viktor Troicki", 870 | "V.Troicki" 871 | ], 872 | "Alejandro Gonzalez": [ 873 | "Alejandro Gonzalez", 874 | "Maximo Gonzalez" 875 | ], 876 | "Albert Montanes": [ 877 | "Albert Montanes", 878 | "A.Montanes" 879 | ], 880 | "Evgeny Donskoy": [ 881 | "Evgeny Donskoy", 882 | "E.Donskoy" 883 | ], 884 | "Ernests Gulbis": [ 885 | "Ernests Gulbis", 886 | "E.Gulbis" 887 | ], 888 | "Richard Gasquet": [ 889 | "Richard Gasquet", 890 | "R.Gasquet" 891 | ], 892 | "Marc Gicquel": [ 893 | "Marc Gicquel", 894 | "M.Gicquel" 895 | ], 896 | "Victor Hanescu": [ 897 | "Victor Hanescu", 898 | "V.Hanescu" 899 | ], 900 | "Fernando Verdasco": [ 901 | "Fernando Verdasco", 902 | "F.Verdasco" 903 | ], 904 | "Vesna Dolonc": [ 905 | "Vesna Dolonc", 906 | "V.Dolonc" 907 | ], 908 | "Michael Llodra": [ 909 | "Michael Llodra", 910 | "M.Llodra" 911 | ], 912 | "Virginie Razzano": [ 913 | "Virginie Razzano", 914 | "V.Razzano" 915 | ], 916 | "Simone Bolelli": [ 917 | "Simone Bolelli", 918 | "S.Bolelli" 919 | ], 920 | "Xavier Malisse": [ 921 | "Xavier Malisse", 922 | "X.Malisse" 923 | ], 924 | "Marinko Matosevic": [ 925 | "Marinko Matosevic", 926 | "M.Matosevic" 927 | ], 928 | "Denis Istomin": [ 929 | "Denis Istomin", 930 | "D.Istomin" 931 | ], 932 | "Alexandra Cadantu": [ 933 | "Alexandra Cadantu", 934 | "A.Cadantu" 935 | ], 936 | "Lleyton Hewitt": [ 937 | "Lleyton Hewitt", 938 | "L.Hewitt" 939 | ], 940 | "Julia Glushko": [ 941 | "Julia Glushko", 942 | "J Glushko" 943 | ], 944 | "Jana Cepelova": [ 945 | "Jana Cepelova", 946 | "J.Cepelova" 947 | ], 948 | "Dominika Cibulkova": [ 949 | "Dominika Cibulkova", 950 | "D.Cibulkova" 951 | ], 952 | "Radek Stepanek": [ 953 | "Radek Stepanek", 954 | "R.Stepanek" 955 | ], 956 | "Petra Cetkovska": [ 957 | "Petra Cetkovska", 958 | "P.Cetkovska" 959 | ], 960 | "Nicolas Almagro": [ 961 | "Nicolas Almagro", 962 | "N.Almagro" 963 | ], 964 | "Yanina Wickmayer": [ 965 | "Yanina Wickmayer", 966 | "Y.Wickmayer" 967 | ], 968 | "Horacio Zeballos": [ 969 | "Horacio Zeballos", 970 | "H.Zeballos" 971 | ], 972 | "Vasek Pospisil": [ 973 | "Vasek Pospisil", 974 | "V.Pospisil" 975 | ], 976 | "Elena Baltacha": [ 977 | "Elena Baltacha", 978 | "E.Baltacha" 979 | ], 980 | "Monica Niculescu": [ 981 | "Monica Niculescu", 982 | "M.Niculescu" 983 | ], 984 | "Garbine Muguruza": [ 985 | "Garbine Muguruza", 986 | "G.Muguruza" 987 | ], 988 | "Teymuraz Gabashvili": [ 989 | "Teymuraz Gabashvili", 990 | "T.Gabashvili" 991 | ], 992 | "Andrea Hlavackova": [ 993 | "Andrea Hlavackova", 994 | "A.Hlavackova" 995 | ], 996 | "Kenny De Schepper": [ 997 | "Kenny De Schepper", 998 | "K.De Schepper" 999 | ], 1000 | "James Duckworth": [ 1001 | "James Duckworth", 1002 | "J.Duckworth" 1003 | ], 1004 | "Janko Tipsarevic": [ 1005 | "Janko Tipsarevic", 1006 | "J.Tipsarevic" 1007 | ], 1008 | "Maria-Teresa Torro-Flor": [ 1009 | "Maria-Teresa Torro-Flor", 1010 | "M.Torro-Flor" 1011 | ], 1012 | "Carina Witthoeft": [ 1013 | "Carina Witthoeft", 1014 | "C.Witthoeft" 1015 | ], 1016 | "Alex Bogomolov Jr.": [ 1017 | "Alex Bogomolov Jr.", 1018 | "A.Bogomolov Jr." 1019 | ], 1020 | "Alexandr Dolgopolov": [ 1021 | "Alexandr Dolgopolov", 1022 | "A.Dolgopolov" 1023 | ], 1024 | "Philipp Petzschner": [ 1025 | "Philipp Petzschner", 1026 | "P.Petzschner" 1027 | ], 1028 | "Rogerio Dutra Silva": [ 1029 | "Rogerio Dutra Silva", 1030 | "R.Dutra Silva" 1031 | ], 1032 | "Mirjana Lucic-Baroni": [ 1033 | "Mirjana Lucic-Baroni", 1034 | "M.Lucic-Baroni" 1035 | ], 1036 | "Mariana Duque-Marino": [ 1037 | "Mariana Duque-Marino", 1038 | "M.Duque-Marino" 1039 | ], 1040 | "Bethanie Mattek-Sands": [ 1041 | "Bethanie Mattek-Sands", 1042 | "B.Mattek-Sands" 1043 | ], 1044 | "Philipp Kohlschreiber": [ 1045 | "Philipp Kohlschreiber", 1046 | "P.Kohlschreiber" 1047 | ], 1048 | "Andreas Haider-Maurer": [ 1049 | "Andreas Haider-Maurer", 1050 | "A.Haider-Maurer" 1051 | ], 1052 | "Silvia Soler-Espinosa": [ 1053 | "Silvia Soler-Espinosa", 1054 | "S.Soler-Espinosa" 1055 | ], 1056 | "Alla Kudryavtseva": [ 1057 | "Alla Kudryavtseva" 1058 | ], 1059 | "Juan Martin Del Potro": [ 1060 | "Juan Martin Del Potro" 1061 | ], 1062 | "Aleksandr Nedovyesov": [ 1063 | "Aleksandr Nedovyesov" 1064 | ], 1065 | "Peter Gojowczyk": [ 1066 | "Peter Gojowczyk" 1067 | ], 1068 | "Mikhail Kukushkin": [ 1069 | "Mikhail Kukushkin" 1070 | ], 1071 | "Somdev Devvarman": [ 1072 | "Somdev Devvarman" 1073 | ], 1074 | "Maria Joao Koehler": [ 1075 | "Maria Joao Koehler" 1076 | ], 1077 | "Sandra Zahlavova": [ 1078 | "Sandra Zahlavova" 1079 | ], 1080 | "Damir Dzumhur": [ 1081 | "Damir Dzumhur" 1082 | ], 1083 | "Nick Kyrgios": [ 1084 | "Nick Kyrgios" 1085 | ], 1086 | "Thomaz Bellucci": [ 1087 | "Thomaz Bellucci" 1088 | ], 1089 | "Filippo Volandri": [ 1090 | "Filippo Volandri" 1091 | ], 1092 | "Irina Falconi": [ 1093 | "Irina Falconi" 1094 | ], 1095 | "Pablo Cuevas": [ 1096 | "Pablo Cuevas" 1097 | ], 1098 | "Storm Sanders": [ 1099 | "Storm Sanders" 1100 | ], 1101 | "Ana Konjuh": [ 1102 | "Ana Konjuh" 1103 | ], 1104 | "Jiri Vesely": [ 1105 | "Jiri Vesely" 1106 | ], 1107 | "Frank Dancevic": [ 1108 | "Frank Dancevic" 1109 | ], 1110 | "Tim Smyczek": [ 1111 | "Tim Smyczek" 1112 | ], 1113 | "Vincent Millot": [ 1114 | "Vincent Millot" 1115 | ], 1116 | "T.Moore": [ 1117 | "T.Moore" 1118 | ], 1119 | "Daniel Evans": [ 1120 | "Daniel Evans" 1121 | ], 1122 | "Samuel Groth": [ 1123 | "Samuel Groth" 1124 | ], 1125 | "Jack Sock": [ 1126 | "Jack Sock" 1127 | ], 1128 | "Joao Sousa": [ 1129 | "Joao Sousa" 1130 | ], 1131 | "Dudi Sela": [ 1132 | "Dudi Sela" 1133 | ], 1134 | "Blaz Rola": [ 1135 | "Blaz Rola" 1136 | ], 1137 | "Florent Serra": [ 1138 | "Florent Serra" 1139 | ], 1140 | "Pere Riba": [ 1141 | "Pere Riba" 1142 | ], 1143 | "J.Konta": [ 1144 | "J.Konta" 1145 | ], 1146 | "Tadeja Majeric": [ 1147 | "Tadeja Majeric" 1148 | ], 1149 | "David Guez": [ 1150 | "David Guez" 1151 | ], 1152 | "Grace Min": [ 1153 | "Grace Min" 1154 | ], 1155 | "Katarzyna Piter": [ 1156 | "Katarzyna Piter" 1157 | ], 1158 | "M.Reid": [ 1159 | "M.Reid" 1160 | ], 1161 | "V Duval": [ 1162 | "V Duval" 1163 | ], 1164 | "Gilles Muller": [ 1165 | "Gilles Muller" 1166 | ], 1167 | "Aravane Rezai": [ 1168 | "Aravane Rezai" 1169 | ], 1170 | "Dominic Thiem": [ 1171 | "Dominic Thiem" 1172 | ], 1173 | "Donald Young": [ 1174 | "Donald Young" 1175 | ], 1176 | "D.Brown": [ 1177 | "D.Brown" 1178 | ], 1179 | "A.Glatch": [ 1180 | "A.Glatch" 1181 | ], 1182 | "Melinda Czink": [ 1183 | "Melinda Czink" 1184 | ], 1185 | "Bradley Klahn": [ 1186 | "Bradley Klahn" 1187 | ], 1188 | "G.Elias": [ 1189 | "G.Elias" 1190 | ], 1191 | "Dusan Lajovic": [ 1192 | "Dusan Lajovic" 1193 | ], 1194 | "Belinda Bencic": [ 1195 | "Belinda Bencic" 1196 | ], 1197 | "Zuzana Kucova": [ 1198 | "Zuzana Kucova" 1199 | ], 1200 | "Zarina Diyas": [ 1201 | "Zarina Diyas" 1202 | ], 1203 | "Sachia Vickery": [ 1204 | "Sachia Vickery" 1205 | ], 1206 | "Teliana Pereira": [ 1207 | "Teliana Pereira" 1208 | ], 1209 | "Maxime Teixeira": [ 1210 | "Maxime Teixeira" 1211 | ], 1212 | "M.Camerin": [ 1213 | "M.Camerin" 1214 | ], 1215 | "Jordan Thompson": [ 1216 | "Jordan Thompson" 1217 | ], 1218 | "K.Edmund": [ 1219 | "K.Edmund" 1220 | ], 1221 | "O.Rochus": [ 1222 | "O.Rochus" 1223 | ], 1224 | "Katerina Siniakova": [ 1225 | "Katerina Siniakova" 1226 | ], 1227 | "Gael Monfils": [ 1228 | "Gael Monfils" 1229 | ], 1230 | "Andrey Golubev": [ 1231 | "Andrey Golubev" 1232 | ], 1233 | "Casey Dellacqua": [ 1234 | "Casey Dellacqua" 1235 | ], 1236 | "Polona Hercog": [ 1237 | "Polona Hercog" 1238 | ], 1239 | "I.Andreev": [ 1240 | "I.Andreev" 1241 | ], 1242 | "M.Krajicek": [ 1243 | "M.Krajicek" 1244 | ], 1245 | "B.Reynolds": [ 1246 | "B.Reynolds" 1247 | ], 1248 | "Lucas Pouille": [ 1249 | "Lucas Pouille" 1250 | ], 1251 | "B.Knittel": [ 1252 | "B.Knittel" 1253 | ], 1254 | "Luksika Kumkhum": [ 1255 | "Luksika Kumkhum" 1256 | ], 1257 | "Federico Delbonis": [ 1258 | "Federico Delbonis" 1259 | ], 1260 | "E.Birnerova": [ 1261 | "E.Birnerova" 1262 | ], 1263 | "Thomas Fabbiano": [ 1264 | "Thomas Fabbiano" 1265 | ], 1266 | "A Dulgheru": [ 1267 | "A Dulgheru" 1268 | ], 1269 | "Nikolay Davydenko": [ 1270 | "Nikolay Davydenko" 1271 | ], 1272 | "Illya Marchenko": [ 1273 | "Illya Marchenko" 1274 | ], 1275 | "Nadiya Kichenok": [ 1276 | "Nadiya Kichenok" 1277 | ], 1278 | "Albano Olivetti": [ 1279 | "Albano Olivetti" 1280 | ], 1281 | "Claire Feuerstein": [ 1282 | "Claire Feuerstein" 1283 | ], 1284 | "Hao Chen Tang": [ 1285 | "Hao Chen Tang" 1286 | ], 1287 | "J.Del Potro": [ 1288 | "J.Del Potro" 1289 | ], 1290 | "V Dushevina": [ 1291 | "V Dushevina" 1292 | ], 1293 | "Vera Zvonareva": [ 1294 | "Vera Zvonareva" 1295 | ], 1296 | "Jarmila Gajdosova": [ 1297 | "Jarmila Gajdosova" 1298 | ], 1299 | "Collin Altamirano": [ 1300 | "Collin Altamirano" 1301 | ], 1302 | "Thanasi Kokkinakis": [ 1303 | "Thanasi Kokkinakis" 1304 | ], 1305 | "A.Keothavong": [ 1306 | "A.Keothavong" 1307 | ], 1308 | "Yuliya Beygelzimer": [ 1309 | "Yuliya Beygelzimer" 1310 | ], 1311 | "Jesse Huta Galung": [ 1312 | "Jesse Huta Galung" 1313 | ], 1314 | "Alison Van Uytvanck": [ 1315 | "Alison Van Uytvanck" 1316 | ], 1317 | "Stephanie Foretz Gacon": [ 1318 | "Stephanie Foretz Gacon" 1319 | ], 1320 | "Patricia Mayr-Achleitner": [ 1321 | "Patricia Mayr-Achleitner" 1322 | ], 1323 | "Anna Karolina Schmiedlova": [ 1324 | "Anna Karolina Schmiedlova" 1325 | ], 1326 | "E.Cabeza Candela": [ 1327 | "E.Cabeza Candela" 1328 | ], 1329 | "M.Larcher De Brito": [ 1330 | "M.Larcher De Brito" 1331 | ], 1332 | "Daniel Munoz-De La Nava": [ 1333 | "Daniel Munoz-De La Nava" 1334 | ] 1335 | } 1336 | -------------------------------------------------------------------------------- /tennis/merge.csv: -------------------------------------------------------------------------------- 1 | original,mergic 2 | Blaz Rola,Blaz Rola 3 | Dominika Cibulkova,Dominika Cibulkova 4 | D.Cibulkova,Dominika Cibulkova 5 | Florian Mayer,Florian Mayer 6 | F.Mayer,Florian Mayer 7 | Aljaz Bedene,Aljaz Bedene 8 | A.Bedene,Aljaz Bedene 9 | Pablo Carreno-Busta,Pablo Carreno-Busta 10 | Pablo Carreno Busta,Pablo Carreno-Busta 11 | Casey Dellacqua,Casey Dellacqua 12 | Zuzana Kucova,Zuzana Kucova 13 | Julien Benneteau,Julien Benneteau 14 | J.Benneteau,Julien Benneteau 15 | Donna Vekic,Donna Vekic 16 | D.Vekic,Donna Vekic 17 | Collin Altamirano,Collin Altamirano 18 | Tatjana Maria,Tatjana Maria 19 | T.Maria,Tatjana Maria 20 | Belinda Bencic,Belinda Bencic 21 | Silvia Soler-Espinosa,Silvia Soler-Espinosa 22 | S.Soler-Espinosa,Silvia Soler-Espinosa 23 | Claire Feuerstein,Claire Feuerstein 24 | M.Reid,M.Reid 25 | Katarzyna Piter,Katarzyna Piter 26 | Patricia Mayr-Achleitner,Patricia Mayr-Achleitner 27 | Paula Ormaechea,Paula Ormaechea 28 | P Ormaechea,Paula Ormaechea 29 | Maria Joao Koehler,Maria Joao Koehler 30 | Nikolay Davydenko,Nikolay Davydenko 31 | Caroline Wozniacki,Caroline Wozniacki 32 | C Wozniacki,Caroline Wozniacki 33 | C.Wozniacki,Caroline Wozniacki 34 | C Wozniack,Caroline Wozniacki 35 | Anastasia Pavlyuchenkova,Anastasia Pavlyuchenkova 36 | A.Pavlyuchenkova,Anastasia Pavlyuchenkova 37 | A Pavlyuchenkova,Anastasia Pavlyuchenkova 38 | Evgeny Donskoy,Evgeny Donskoy 39 | E.Donskoy,Evgeny Donskoy 40 | Nina Bratchikova,Nina Bratchikova 41 | N.Bratchikova,Nina Bratchikova 42 | Nadiya Kichenok,Nadiya Kichenok 43 | Mariana Duque-Marino,Mariana Duque-Marino 44 | M.Duque-Marino,Mariana Duque-Marino 45 | Julia Glushko,Julia Glushko 46 | J Glushko,Julia Glushko 47 | J.Janowicz,Jerzy Janowicz 48 | Jerzy Janowicz,Jerzy Janowicz 49 | Victoria Azarenka,Victoria Azarenka 50 | V.Azarenka,Victoria Azarenka 51 | V Azarenka,Victoria Azarenka 52 | Klara Zakopalova,Klara Zakopalova 53 | K.Zakopalova,Klara Zakopalova 54 | C Suarez Navarro,Carla Suarez Navarro 55 | Carla Suarez Navarro,Carla Suarez Navarro 56 | C.Suarez Navarro,Carla Suarez Navarro 57 | Lucie Hradecka,Lucie Hradecka 58 | L.Hradecka,Lucie Hradecka 59 | L Hradecka,Lucie Hradecka 60 | Kristina Mladenovic,Kristina Mladenovic 61 | K.Mladenovic,Kristina Mladenovic 62 | K Mladenovic,Kristina Mladenovic 63 | Johanna Larsson,Johanna Larsson 64 | J.Larsson,Johanna Larsson 65 | Simona Halep,Simona Halep 66 | S.Halep,Simona Halep 67 | S Halep,Simona Halep 68 | Kenny De Schepper,Kenny De Schepper 69 | K.De Schepper,Kenny De Schepper 70 | Alejandro Falla,Alejandro Falla 71 | A.Falla,Alejandro Falla 72 | Alla Kudryavtseva,Alla Kudryavtseva 73 | Sandra Zahlavova,Sandra Zahlavova 74 | Katerina Siniakova,Katerina Siniakova 75 | Xavier Malisse,Xavier Malisse 76 | X.Malisse,Xavier Malisse 77 | K Date-Krumm,Kimiko Date-Krumm 78 | Kimiko Date-Krumm,Kimiko Date-Krumm 79 | K.Date-Krumm,Kimiko Date-Krumm 80 | T.Kamke,Tobias Kamke 81 | Tobias Kamke,Tobias Kamke 82 | K.Bertens,Kiki Bertens 83 | Kiki Bertens,Kiki Bertens 84 | Shahar Peer,Shahar Peer 85 | David Goffin,David Goffin 86 | D.Goffin,David Goffin 87 | Misaki Doi,Misaki Doi 88 | M Doi,Misaki Doi 89 | M.Doi,Misaki Doi 90 | Tim Smyczek,Tim Smyczek 91 | P.Cetkovska,Petra Cetkovska 92 | Petra Cetkovska,Petra Cetkovska 93 | Julia Goerges,Julia Goerges 94 | J.Goerges,Julia Goerges 95 | J Goerges,Julia Goerges 96 | Jurgen Melzer,Jurgen Melzer 97 | J.Melzer,Jurgen Melzer 98 | Brian Baker,Brian Baker 99 | Monica Niculescu,Monica Niculescu 100 | M.Niculescu,Monica Niculescu 101 | Jan Hajek,Jan Hajek 102 | J.Hajek,Jan Hajek 103 | Anna Karolina Schmiedlova,Anna Karolina Schmiedlova 104 | Anna Schmiedlova,Anna Karolina Schmiedlova 105 | A.Schmiedlova,Anna Karolina Schmiedlova 106 | N.Djokovic,Novak Djokovic 107 | Novak Djokovic,Novak Djokovic 108 | M.Kirilenko,Maria Kirilenko 109 | Maria Kirilenko,Maria Kirilenko 110 | M Kirilenko,Maria Kirilenko 111 | Ekaterina Makarova,Ekaterina Makarova 112 | E Makarova,Ekaterina Makarova 113 | E.Makarova,Ekaterina Makarova 114 | Lauren Davis,Lauren Davis 115 | L Davis,Lauren Davis 116 | L.Davis,Lauren Davis 117 | A.Glatch,A.Glatch 118 | Olivia Rogowska,Olivia Rogowska 119 | O Rogowska,Olivia Rogowska 120 | Elena Vesnina,Elena Vesnina 121 | E.Vesnina,Elena Vesnina 122 | A.Bogomolov Jr.,Alex Bogomolov Jr. 123 | Alex Bogomolov Jr.,Alex Bogomolov Jr. 124 | Elena Baltacha,Elena Baltacha 125 | E.Baltacha,Elena Baltacha 126 | Frank Dancevic,Frank Dancevic 127 | Eugenie Bouchard,Eugenie Bouchard 128 | E.Bouchard,Eugenie Bouchard 129 | E Bouchard,Eugenie Bouchard 130 | Roger Federer,Roger Federer 131 | R.Federer,Roger Federer 132 | Daniel Munoz-De La Nava,Daniel Munoz-De La Nava 133 | M.Barthel,Mona Barthel 134 | M Barthel,Mona Barthel 135 | Mona Barthel,Mona Barthel 136 | Rhyne Williams,Rhyne Williams 137 | Thiemo De Bakker,Thiemo De Bakker 138 | T.De Bakker,Thiemo De Bakker 139 | Thiemo de Bakker,Thiemo De Bakker 140 | B.Knittel,B.Knittel 141 | Fernando Verdasco,Fernando Verdasco 142 | F.Verdasco,Fernando Verdasco 143 | Tadeja Majeric,Tadeja Majeric 144 | Yen-Hsun Lu,Yen-Hsun Lu 145 | Y-H.Lu,Yen-Hsun Lu 146 | Karin Knapp,Karin Knapp 147 | K Knapp,Karin Knapp 148 | K.Knapp,Karin Knapp 149 | A Petkovic,Andrea Petkovic 150 | Andrea Petkovic,Andrea Petkovic 151 | A.Petkovic,Andrea Petkovic 152 | Guillaume Rufin,Guillaume Rufin 153 | G.Rufin,Guillaume Rufin 154 | Victor Hanescu,Victor Hanescu 155 | V.Hanescu,Victor Hanescu 156 | Grigor Dimitrov,Grigor Dimitrov 157 | G.Dimitrov,Grigor Dimitrov 158 | S.Arvidsson,Sofia Arvidsson 159 | Sofia Arvidsson,Sofia Arvidsson 160 | S Arvidsson,Sofia Arvidsson 161 | Caroline Garcia,Caroline Garcia 162 | C Garcia,Caroline Garcia 163 | C.Garcia,Caroline Garcia 164 | John Isner,John Isner 165 | J.Isner,John Isner 166 | Rogerio Dutra Silva,Rogerio Dutra Silva 167 | R.Dutra Silva,Rogerio Dutra Silva 168 | Ricardas Berankis,Ricardas Berankis 169 | R.Berankis,Ricardas Berankis 170 | Somdev Devvarman,Somdev Devvarman 171 | T.Moore,T.Moore 172 | F.Pennetta,Flavia Pennetta 173 | Flavia Pennetta,Flavia Pennetta 174 | F Pennetta,Flavia Pennetta 175 | Edouard Roger-Vasselin,Edouard Roger-Vasselin 176 | E.Roger-Vasselin,Edouard Roger-Vasselin 177 | O.Rochus,O.Rochus 178 | Marcos Baghdatis,Marcos Baghdatis 179 | M.Baghdatis,Marcos Baghdatis 180 | Grega Zemlja,Grega Zemlja 181 | G.Zemlja,Grega Zemlja 182 | Marc Gicquel,Marc Gicquel 183 | M.Gicquel,Marc Gicquel 184 | J.Konta,J.Konta 185 | J.Struff,Jan-Lennard Struff 186 | Jan-Lennard Struff,Jan-Lennard Struff 187 | A Ivanovic,Ana Ivanovic 188 | Ana Ivanovic,Ana Ivanovic 189 | A.Ivanovic,Ana Ivanovic 190 | Lucie Safarova,Lucie Safarova 191 | L.Safarova,Lucie Safarova 192 | Nicolas Almagro,Nicolas Almagro 193 | N.Almagro,Nicolas Almagro 194 | Ashleigh Barty,Ashleigh Barty 195 | A Barty,Ashleigh Barty 196 | Hao Chen Tang,Hao Chen Tang 197 | R Vinci,Roberta Vinci 198 | Roberta Vinci,Roberta Vinci 199 | R.Vinci,Roberta Vinci 200 | Elina Svitolina,Elina Svitolina 201 | E Svitolina,Elina Svitolina 202 | E.Svitolina,Elina Svitolina 203 | T.Berdych,Tomas Berdych 204 | Tomas Berdych,Tomas Berdych 205 | Y.Meusburger,Yvonne Meusburger 206 | Yvonne Meusburger,Yvonne Meusburger 207 | Y Meusburger,Yvonne Meusburger 208 | L Robson,Laura Robson 209 | Laura Robson,Laura Robson 210 | L.Robson,Laura Robson 211 | P.Kohlschreiber,Philipp Kohlschreiber 212 | Philipp Kohlschreiber,Philipp Kohlschreiber 213 | Stanislas Wawrinka,Stanislas Wawrinka 214 | S.Wawrinka,Stanislas Wawrinka 215 | Maximo Gonzalez,Maximo Gonzalez 216 | Sam Querrey,Sam Querrey 217 | S.Querrey,Sam Querrey 218 | Lleyton Hewitt,Lleyton Hewitt 219 | L.Hewitt,Lleyton Hewitt 220 | Ernests Gulbis,Ernests Gulbis 221 | E.Gulbis,Ernests Gulbis 222 | Albert Ramos,Albert Ramos 223 | A.Ramos,Albert Ramos 224 | Melinda Czink,Melinda Czink 225 | Madison Keys,Madison Keys 226 | M.Keys,Madison Keys 227 | M Keys,Madison Keys 228 | Dudi Sela,Dudi Sela 229 | F Schiavone,Francesca Schiavone 230 | Francesca Schiavone,Francesca Schiavone 231 | F.Schiavone,Francesca Schiavone 232 | J.Hampton,Jamie Hampton 233 | Jamie Hampton,Jamie Hampton 234 | J Hampton,Jamie Hampton 235 | Ivan Dodig,Ivan Dodig 236 | I.Dodig,Ivan Dodig 237 | Lucas Pouille,Lucas Pouille 238 | Janko Tipsarevic,Janko Tipsarevic 239 | J.Tipsarevic,Janko Tipsarevic 240 | L.Tsurenko,Lesia Tsurenko 241 | Lesia Tsurenko,Lesia Tsurenko 242 | Jo-Wilfried Tsonga,Jo-Wilfried Tsonga 243 | J-W.Tsonga,Jo-Wilfried Tsonga 244 | Mallory Burdette,Mallory Burdette 245 | M Burdette,Mallory Burdette 246 | M.Burdette,Mallory Burdette 247 | Daniel Gimeno-Traver,Daniel Gimeno-Traver 248 | D.Gimeno-Traver,Daniel Gimeno-Traver 249 | L Arruabarrena,Lara Arruabarrena 250 | Lara Arruabarrena,Lara Arruabarrena 251 | L.Arruabarrena,Lara Arruabarrena 252 | Polona Hercog,Polona Hercog 253 | P.Andujar,Pablo Andujar 254 | Pablo Andujar,Pablo Andujar 255 | S.Giraldo,Santiago Giraldo 256 | Santiago Giraldo,Santiago Giraldo 257 | J.Duckworth,James Duckworth 258 | James Duckworth,James Duckworth 259 | S.Bolelli,Simone Bolelli 260 | Simone Bolelli,Simone Bolelli 261 | Jana Cepelova,Jana Cepelova 262 | J.Cepelova,Jana Cepelova 263 | A.Haider-Maurer,Andreas Haider-Maurer 264 | Andreas Haider-Maurer,Andreas Haider-Maurer 265 | Tamira Paszek,Tamira Paszek 266 | T.Paszek,Tamira Paszek 267 | Sachia Vickery,Sachia Vickery 268 | Donald Young,Donald Young 269 | Tommy Robredo,Tommy Robredo 270 | T.Robredo,Tommy Robredo 271 | V.Dolonc,Vesna Dolonc 272 | Vesna Dolonc,Vesna Dolonc 273 | I.Sijsling,Igor Sijsling 274 | Igor Sijsling,Igor Sijsling 275 | Kevin Anderson,Kevin Anderson 276 | K.Anderson,Kevin Anderson 277 | D.Brown,D.Brown 278 | Jimmy Wang,Jimmy Wang 279 | Y-T.Wang,Jimmy Wang 280 | C Vandeweghe,Coco Vandeweghe 281 | Coco Vandeweghe,Coco Vandeweghe 282 | C.Vandeweghe,Coco Vandeweghe 283 | K.Edmund,K.Edmund 284 | I.Begu,Irina-Camelia Begu 285 | Irina-Camelia Begu,Irina-Camelia Begu 286 | J.Zheng,Jie Zheng 287 | J Zheng,Jie Zheng 288 | Jie Zheng,Jie Zheng 289 | Gael Monfils,Gael Monfils 290 | Thomas Fabbiano,Thomas Fabbiano 291 | Teliana Pereira,Teliana Pereira 292 | W.Odesnik,Wayne Odesnik 293 | Wayne Odesnik,Wayne Odesnik 294 | S.Cirstea,Sorana Cirstea 295 | S Cirstea,Sorana Cirstea 296 | Sorana Cirstea,Sorana Cirstea 297 | Blaz Kavcic,Blaz Kavcic 298 | B.Kavcic,Blaz Kavcic 299 | F.Fognini,Fabio Fognini 300 | Fabio Fognini,Fabio Fognini 301 | S.Stakhovsky,Sergiy Stakhovsky 302 | Sergiy Stakhovsky,Sergiy Stakhovsky 303 | A.Mannarino,Adrian Mannarino 304 | Adrian Mannarino,Adrian Mannarino 305 | C.McHale,Christina McHale 306 | Christina McHale,Christina McHale 307 | C McHale,Christina McHale 308 | Bernard Tomic,Bernard Tomic 309 | B.Tomic,Bernard Tomic 310 | V.King,Vania King 311 | Vania King,Vania King 312 | Su-Wei Hsieh,Su-Wei Hsieh 313 | S-W.Hsieh,Su-Wei Hsieh 314 | M.Klizan,Martin Klizan 315 | Martin Klizan,Martin Klizan 316 | A Kerber,Angelique Kerber 317 | A.Kerber,Angelique Kerber 318 | Angelique Kerber,Angelique Kerber 319 | L.Mayer,Leonardo Mayer 320 | Leonardo Mayer,Leonardo Mayer 321 | Illya Marchenko,Illya Marchenko 322 | M.Torro-Flor,Maria-Teresa Torro-Flor 323 | Maria-Teresa Torro-Flor,Maria-Teresa Torro-Flor 324 | Melanie Oudin,Melanie Oudin 325 | M.Oudin,Melanie Oudin 326 | V.Lepchenko,Varvara Lepchenko 327 | Varvara Lepchenko,Varvara Lepchenko 328 | V Lepchenko,Varvara Lepchenko 329 | O Govortsova,Olga Govortsova 330 | O.Govortsova,Olga Govortsova 331 | Olga Govortsova,Olga Govortsova 332 | Luksika Kumkhum,Luksika Kumkhum 333 | Alexandra Cadantu,Alexandra Cadantu 334 | A.Cadantu,Alexandra Cadantu 335 | Milos Raonic,Milos Raonic 336 | M.Raonic,Milos Raonic 337 | Jarmila Gajdosova,Jarmila Gajdosova 338 | D.Tursunov,Dmitry Tursunov 339 | Dmitry Tursunov,Dmitry Tursunov 340 | E.Cabeza Candela,E.Cabeza Candela 341 | A.Kuznetsov,Andrey Kuznetsov 342 | Andrey Kuznetsov,Andrey Kuznetsov 343 | S.Voegele,Stefanie Voegele 344 | Stefanie Voegele,Stefanie Voegele 345 | A.Cornet,Alize Cornet 346 | A Cornet,Alize Cornet 347 | Alize Cornet,Alize Cornet 348 | Steve Darcis,Steve Darcis 349 | S.Darcis,Steve Darcis 350 | M.Puig,Monica Puig 351 | Monica Puig,Monica Puig 352 | A.Radwanska,Agnieszka Radwanska 353 | Agnieszka Radwanska,Agnieszka Radwanska 354 | H.Watson,Heather Watson 355 | H Watson,Heather Watson 356 | Heather Watson,Heather Watson 357 | Pauline Parmentier,Pauline Parmentier 358 | P.Parmentier,Pauline Parmentier 359 | N.Petrova,Nadia Petrova 360 | Nadia Petrova,Nadia Petrova 361 | Alex Kuznetsov,Alex Kuznetsov 362 | Joao Sousa,Joao Sousa 363 | Kei Nishikori,Kei Nishikori 364 | K.Nishikori,Kei Nishikori 365 | S.Stephens,Sloane Stephens 366 | S Stephens,Sloane Stephens 367 | Sloane Stephens,Sloane Stephens 368 | Florent Serra,Florent Serra 369 | M.Llodra,Michael Llodra 370 | Michael Llodra,Michael Llodra 371 | Lukas Rosol,Lukas Rosol 372 | L.Rosol,Lukas Rosol 373 | David Ferrer,David Ferrer 374 | D.Ferrer,David Ferrer 375 | R.Harrison,Ryan Harrison 376 | Ryan Harrison,Ryan Harrison 377 | M.Erakovic,Marina Erakovic 378 | Marina Erakovic,Marina Erakovic 379 | Andreas Seppi,Andreas Seppi 380 | A.Seppi,Andreas Seppi 381 | M Koehler,M Koehler 382 | M.Koehler,M Koehler 383 | R.Oprandi,Romina Oprandi 384 | Romina Oprandi,Romina Oprandi 385 | Shelby Rogers,Shelby Rogers 386 | Storm Sanders,Storm Sanders 387 | K.Kanepi,Kaia Kanepi 388 | Kaia Kanepi,Kaia Kanepi 389 | K Kanepi,Kaia Kanepi 390 | Marion Bartoli,Marion Bartoli 391 | M.Bartoli,Marion Bartoli 392 | Sabine Lisicki,Sabine Lisicki 393 | S Lisicki,Sabine Lisicki 394 | S.Lisicki,Sabine Lisicki 395 | S.Errani,Sara Errani 396 | Sara Errani,Sara Errani 397 | S Errani,Sara Errani 398 | Mikhail Kukushkin,Mikhail Kukushkin 399 | R.Gasquet,Richard Gasquet 400 | Richard Gasquet,Richard Gasquet 401 | Ana Konjuh,Ana Konjuh 402 | K Flipkens,Kirsten Flipkens 403 | Kirsten Flipkens,Kirsten Flipkens 404 | K.Flipkens,Kirsten Flipkens 405 | M.Russell,Michael Russell 406 | Michael Russell,Michael Russell 407 | V Duval,V Duval 408 | F.Lopez,Feliciano Lopez 409 | Feliciano Lopez,Feliciano Lopez 410 | M.Krajicek,M.Krajicek 411 | Ze Zhang,Ze Zhang 412 | K Pliskova,Karolína Plíšková 413 | Karolina Pliskova,Karolína Plíšková 414 | Ka.Pliskova,Karolína Plíšková 415 | Vera Zvonareva,Vera Zvonareva 416 | James Blake,James Blake 417 | J.Blake,James Blake 418 | J.Monaco,Juan Monaco 419 | Juan Monaco,Juan Monaco 420 | Carina Witthoeft,Carina Witthoeft 421 | C.Witthoeft,Carina Witthoeft 422 | Pere Riba,Pere Riba 423 | Mikhail Youzhny,Mikhail Youzhny 424 | M.Youzhny,Mikhail Youzhny 425 | T.Pironkova,Tsvetana Pironkova 426 | Tsvetana Pironkova,Tsvetana Pironkova 427 | S Kuznetsova,Svetlana Kuznetsova 428 | Svetlana Kuznetsova,Svetlana Kuznetsova 429 | Jeremy Chardy,Jeremy Chardy 430 | J.Chardy,Jeremy Chardy 431 | D.Hantuchova,Daniela Hantuchova 432 | Daniela Hantuchova,Daniela Hantuchova 433 | D Hantuchova,Daniela Hantuchova 434 | G.Voskoboeva,Galina Voskoboeva 435 | G Voskoboeva,Galina Voskoboeva 436 | Galina Voskoboeva,Galina Voskoboeva 437 | S.Johnson,Steve Johnson 438 | Steve Johnson,Steve Johnson 439 | Damir Dzumhur,Damir Dzumhur 440 | Gilles Muller,Gilles Muller 441 | A.Murray,Andy Murray 442 | Andy Murray,Andy Murray 443 | Maxime Teixeira,Maxime Teixeira 444 | N.Li,Na Li 445 | N Li,Na Li 446 | Na Li,Na Li 447 | E.Birnerova,E.Birnerova 448 | Michael Berrer,Michael Berrer 449 | Andrej Martin,Andrej Martin 450 | S Stosur,Samantha Stosur 451 | S.Stosur,Samantha Stosur 452 | Samantha Stosur,Samantha Stosur 453 | J.Levine,Jesse Levine 454 | Jesse Levine,Jesse Levine 455 | Arantxa Rus,Arantxa Rus 456 | A.Rus,Arantxa Rus 457 | Thanasi Kokkinakis,Thanasi Kokkinakis 458 | S.Peng,Shuai Peng 459 | S Peng,Shuai Peng 460 | Shuai Peng,Shuai Peng 461 | Peter Gojowczyk,Peter Gojowczyk 462 | Aravane Rezai,Aravane Rezai 463 | S.Murray,S.Murray 464 | Stephane Robert,Stephane Robert 465 | S.Robert,Stephane Robert 466 | G.Pella,Guido Pella 467 | Guido Pella,Guido Pella 468 | Carlos Berlocq,Carlos Berlocq 469 | C.Berlocq,Carlos Berlocq 470 | Marcel Granollers,Marcel Granollers 471 | M.Granollers,Marcel Granollers 472 | M.Sharapova,Maria Sharapova 473 | Maria Sharapova,Maria Sharapova 474 | P Kvitova,Petra Kvitova 475 | Petra Kvitova,Petra Kvitova 476 | P.Kvitova,Petra Kvitova 477 | A.Keothavong,A.Keothavong 478 | Olga Puchkova,Olga Puchkova 479 | O.Puchkova,Olga Puchkova 480 | D.Brands,Daniel Brands 481 | Daniel Brands,Daniel Brands 482 | Timea Babos,Timea Babos 483 | T.Babos,Timea Babos 484 | Aleksandr Nedovyesov,Aleksandr Nedovyesov 485 | Vincent Millot,Vincent Millot 486 | Samuel Groth,Samuel Groth 487 | C Scheepers,Chanelle Scheepers 488 | Chanelle Scheepers,Chanelle Scheepers 489 | C.Scheepers,Chanelle Scheepers 490 | B.Reynolds,B.Reynolds 491 | Dusan Lajovic,Dusan Lajovic 492 | Di Wu,Di Wu 493 | U.Radwanska,Urszula Radwanska 494 | U Radwanska,Urszula Radwanska 495 | Urszula Radwanska,Urszula Radwanska 496 | Dominic Thiem,Dominic Thiem 497 | D.Kudla,Denis Kudla 498 | Denis Kudla,Denis Kudla 499 | Nick Kyrgios,Nick Kyrgios 500 | Mirjana Lucic-Baroni,Mirjana Lucic-Baroni 501 | M.Lucic-Baroni,Mirjana Lucic-Baroni 502 | J.Zopp,Jurgen Zopp 503 | Jurgen Zopp,Jurgen Zopp 504 | M.Johansson,Mathilde Johansson 505 | Mathilde Johansson,Mathilde Johansson 506 | Daniel Evans,Daniel Evans 507 | D Pfizenmaier,Dinah Pfizenmaier 508 | Dinah Pfizenmaier,Dinah Pfizenmaier 509 | A.Tomljanovic,Ajla Tomljanovic 510 | A Tomljanovic,Ajla Tomljanovic 511 | Ajla Tomljanovic,Ajla Tomljanovic 512 | Benoit Paire,Benoit Paire 513 | B.Paire,Benoit Paire 514 | Barbora Zahlavova Strycova,Barbora Zahlavova Strycova 515 | B.Zahlavova Strycova,Barbora Zahlavova Strycova 516 | P.Martic,Petra Martic 517 | Petra Martic,Petra Martic 518 | Thomaz Bellucci,Thomaz Bellucci 519 | N.Mahut,Nicolas Mahut 520 | Nicolas Mahut,Nicolas Mahut 521 | Federico Delbonis,Federico Delbonis 522 | Alejandro Gonzalez,Alejandro Gonzalez 523 | Yung-Jan Chan,Yung-Jan Chan 524 | R.Ram,Rajeev Ram 525 | Rajeev Ram,Rajeev Ram 526 | Robin Haase,Robin Haase 527 | R.Haase,Robin Haase 528 | G.Simon,Gilles Simon 529 | Gilles Simon,Gilles Simon 530 | Jiri Vesely,Jiri Vesely 531 | Roberto Bautista Agut,Roberto Bautista Agut 532 | R.Bautista Agut,Roberto Bautista Agut 533 | M.Camerin,M.Camerin 534 | Y Shvedova,Yaroslava Shvedova 535 | Y.Shvedova,Yaroslava Shvedova 536 | Yaroslava Shvedova,Yaroslava Shvedova 537 | A.Morita,Ayumi Morita 538 | Ayumi Morita,Ayumi Morita 539 | V Dushevina,V Dushevina 540 | Grace Min,Grace Min 541 | Jack Sock,Jack Sock 542 | G.Soeda,Go Soeda 543 | Go Soeda,Go Soeda 544 | B.Mattek-Sands,Bethanie Mattek-Sands 545 | Bethanie Mattek-Sands,Bethanie Mattek-Sands 546 | V.Razzano,Virginie Razzano 547 | Virginie Razzano,Virginie Razzano 548 | M.Rybarikova,Magdalena Rybarikova 549 | Magdalena Rybarikova,Magdalena Rybarikova 550 | Zarina Diyas,Zarina Diyas 551 | P.Lorenzi,Paolo Lorenzi 552 | Paolo Lorenzi,Paolo Lorenzi 553 | A.Hlavackova,Andrea Hlavackova 554 | Andrea Hlavackova,Andrea Hlavackova 555 | M.Alund,Martin Alund 556 | Martin Alund,Martin Alund 557 | Alison Van Uytvanck,Alison Van Uytvanck 558 | M.Ebden,Matthew Ebden 559 | Matthew Ebden,Matthew Ebden 560 | P-H.Mathieu,Paul-Henri Mathieu 561 | Paul-Henri Mathieu,Paul-Henri Mathieu 562 | A.Tatishvili,Anna Tatishvili 563 | A Tatishvili,Anna Tatishvili 564 | Anna Tatishvili,Anna Tatishvili 565 | Benjamin Becker,Benjamin Baker 566 | B.Becker,Benjamin Baker 567 | Irina Falconi,Irina Falconi 568 | C Giorgi,Camila Giorgi 569 | Camila Giorgi,Camila Giorgi 570 | C.Giorgi,Camila Giorgi 571 | A.Montanes,Albert Montanes 572 | Albert Montanes,Albert Montanes 573 | G.Elias,G.Elias 574 | Jesse Huta Galung,Jesse Huta Galung 575 | Denis Istomin,Denis Istomin 576 | D.Istomin,Denis Istomin 577 | Andrey Golubev,Andrey Golubev 578 | M.Przysiezny,Michal Przysiezny 579 | Michal Przysiezny,Michal Przysiezny 580 | M.Matosevic,Marinko Matosevic 581 | Marinko Matosevic,Marinko Matosevic 582 | Kurumi Nara,Kurumi Nara 583 | K Nara,Kurumi Nara 584 | L.Lacko,Lukas Lacko 585 | Lukas Lacko,Lukas Lacko 586 | Ivo Karlovic,Ivo Karlovic 587 | Shuai Zhang,Shuai Zhang 588 | L.Dominguez Lino,Lourdes Dominguez Lino 589 | L Dominguez Lino,Lourdes Dominguez Lino 590 | Lourdes Dominguez Lino,Lourdes Dominguez Lino 591 | Garbine Muguruza,Garbine Muguruza 592 | G.Muguruza,Garbine Muguruza 593 | T.Haas,Tommy Haas 594 | Tommy Haas,Tommy Haas 595 | R.Nadal,Rafael Nadal 596 | Rafael Nadal,Rafael Nadal 597 | V.Troicki,Viktor Troicki 598 | Viktor Troicki,Viktor Troicki 599 | S Williams,Serena Williams 600 | S.Williams,Serena Williams 601 | Serena Williams,Serena Williams 602 | Y.Putintseva,Yulia Putintseva 603 | Yulia Putintseva,Yulia Putintseva 604 | Y Duan,Ying-Ying Duan 605 | Ying-Ying Duan,Ying-Ying Duan 606 | J.Jankovic,Jelena Jankovic 607 | J Jankovic,Jelena Jankovic 608 | Jelena Jankovic,Jelena Jankovic 609 | Bradley Klahn,Bradley Klahn 610 | Albano Olivetti,Albano Olivetti 611 | P.Petzschner,Philipp Petzschner 612 | Philipp Petzschner,Philipp Petzschner 613 | A Dulgheru,A Dulgheru 614 | A.Beck,Andreas Beck 615 | Annika Beck,Andreas Beck 616 | Andreas Beck,Andreas Beck 617 | J.Reister,Julian Reister 618 | Julian Reister,Julian Reister 619 | R.Stepanek,Radek Stepanek 620 | Radek Stepanek,Radek Stepanek 621 | Yuliya Beygelzimer,Yuliya Beygelzimer 622 | Pablo Cuevas,Pablo Cuevas 623 | T.Gabashvili,Teymuraz Gabashvili 624 | Teymuraz Gabashvili,Teymuraz Gabashvili 625 | A.Riske,Alison Riske 626 | A Riske,Alison Riske 627 | Alison Riske,Alison Riske 628 | I.Andreev,I.Andreev 629 | M Minella,Mandy Minella 630 | M.Minella,Mandy Minella 631 | Mandy Minella,Mandy Minella 632 | David Guez,David Guez 633 | Stephanie Foretz Gacon,Stephanie Foretz Gacon 634 | A Medina Garrigues,Anabel Medina Garrigues 635 | A. Medina Garrigues,Anabel Medina Garrigues 636 | A.Medina Garrigues,Anabel Medina Garrigues 637 | Anabel Medina Garrigues,Anabel Medina Garrigues 638 | A Wozniak,Aleksandra Wozniacki 639 | G.Garcia-Lopez,Guillermo Garcia-Lopez 640 | Guillermo Garcia-Lopez,Guillermo Garcia-Lopez 641 | J.Ward,J.Ward 642 | M.Cilic,Marin Cilic 643 | Marin Cilic,Marin Cilic 644 | Filippo Volandri,Filippo Volandri 645 | Irena Pavlovic,Irena Pavlovic 646 | Kr.Pliskova,Kristýna Plíšková 647 | Kristyna Pliskova,Kristýna Plíšková 648 | A.Ungur,Adrian Ungur 649 | Adrian Ungur,Adrian Ungur 650 | A.Dolgopolov,Alexandr Dolgopolov 651 | Alexandr Dolgopolov,Alexandr Dolgopolov 652 | Juan Martin Del Potro,Juan Martin Del Potro 653 | J.Del Potro,Juan Martin Del Potro 654 | L.Kubot,Lukasz Kubot 655 | Lukasz Kubot,Lukasz Kubot 656 | B.Jovanovski,Bojana Jovanovski 657 | B Jovanovski,Bojana Jovanovski 658 | Bojana Jovanovski,Bojana Jovanovski 659 | H.Zeballos,Horacio Zeballos 660 | Horacio Zeballos,Horacio Zeballos 661 | Jordan Thompson,Jordan Thompson 662 | Yanina Wickmayer,Yanina Wickmayer 663 | Y.Wickmayer,Yanina Wickmayer 664 | V.Pospisil,Vasek Pospisil 665 | Vasek Pospisil,Vasek Pospisil 666 | V Williams,Venus Williams 667 | Venus Williams,Venus Williams 668 | M.Larcher De Brito,M.Larcher De Brito 669 | J.Nieminen,Jarkko Nieminen 670 | Jarkko Nieminen,Jarkko Nieminen 671 | -------------------------------------------------------------------------------- /tennis/names.txt: -------------------------------------------------------------------------------- 1 | Lukas Lacko 2 | Leonardo Mayer 3 | Marcos Baghdatis 4 | Dmitry Tursunov 5 | Juan Monaco 6 | Santiago Giraldo 7 | Dudi Sela 8 | Fabio Fognini 9 | David Guez 10 | Nikolay Davydenko 11 | Pablo Carreno Busta 12 | Tommy Robredo 13 | Samuel Groth 14 | Nicolas Mahut 15 | Alejandro Falla 16 | Stanislas Wawrinka 17 | Alejandro Gonzalez 18 | Steve Johnson 19 | Ricardas Berankis 20 | Jeremy Chardy 21 | Jordan Thompson 22 | Albert Ramos 23 | Florian Mayer 24 | Mikhail Youzhny 25 | Guillermo Garcia-Lopez 26 | Carlos Berlocq 27 | Dominic Thiem 28 | Kevin Anderson 29 | Ivo Karlovic 30 | Jan Hajek 31 | Di Wu 32 | Tomas Berdych 33 | James Duckworth 34 | Radek Stepanek 35 | Teymuraz Gabashvili 36 | Fernando Verdasco 37 | Daniel Brands 38 | Marin Cilic 39 | Thomaz Bellucci 40 | Jo-Wilfried Tsonga 41 | Martin Klizan 42 | Blaz Rola 43 | Michal Przysiezny 44 | Stephane Robert 45 | Somdev Devvarman 46 | Michael Berrer 47 | Vincent Millot 48 | Andy Murray 49 | Rhyne Williams 50 | Roberto Bautista Agut 51 | Nick Kyrgios 52 | Benoit Paire 53 | Bradley Klahn 54 | Jimmy Wang 55 | Peter Gojowczyk 56 | Milos Raonic 57 | Marinko Matosevic 58 | Dusan Lajovic 59 | Robin Haase 60 | Andreas Seppi 61 | Ryan Harrison 62 | Tobias Kamke 63 | Thanasi Kokkinakis 64 | Rafael Nadal 65 | Leonardo Mayer 66 | Dmitry Tursunov 67 | Sam Querrey 68 | Fabio Fognini 69 | Nikolay Davydenko 70 | Tommy Robredo 71 | Matthew Ebden 72 | Stanislas Wawrinka 73 | Adrian Mannarino 74 | Jeremy Chardy 75 | Pablo Andujar 76 | Mikhail Youzhny 77 | Edouard Roger-Vasselin 78 | Kevin Anderson 79 | Damir Dzumhur 80 | Tomas Berdych 81 | Blaz Kavcic 82 | Fernando Verdasco 83 | Marin Cilic 84 | Jo-Wilfried Tsonga 85 | Blaz Rola 86 | Stephane Robert 87 | Michael Berrer 88 | Andy Murray 89 | Roberto Bautista Agut 90 | Benoit Paire 91 | Yen-Hsun Lu 92 | Milos Raonic 93 | Dusan Lajovic 94 | Andreas Seppi 95 | Jack Sock 96 | Rafael Nadal 97 | Denis Istomin 98 | Fabio Fognini 99 | Tommy Robredo 100 | Jeremy Chardy 101 | Florian Mayer 102 | Kevin Anderson 103 | Tomas Berdych 104 | Teymuraz Gabashvili 105 | Jo-Wilfried Tsonga 106 | Stephane Robert 107 | Andy Murray 108 | Benoit Paire 109 | Milos Raonic 110 | Donald Young 111 | Rafael Nadal 112 | Fabio Fognini 113 | Stanislas Wawrinka 114 | Florian Mayer 115 | Tomas Berdych 116 | Jo-Wilfried Tsonga 117 | Andy Murray 118 | Grigor Dimitrov 119 | Rafael Nadal 120 | Stanislas Wawrinka 121 | Tomas Berdych 122 | Andy Murray 123 | Rafael Nadal 124 | Tomas Berdych 125 | Rafael Nadal 126 | Rafael Nadal 127 | Novak Djokovic 128 | Albert Montanes 129 | Denis Istomin 130 | Michael Russell 131 | Ernests Gulbis 132 | Sam Querrey 133 | Jarkko Nieminen 134 | Alex Bogomolov Jr. 135 | Richard Gasquet 136 | Lukasz Kubot 137 | Julien Benneteau 138 | Lukas Rosol 139 | Vasek Pospisil 140 | Matthew Ebden 141 | Mikhail Kukushkin 142 | Andrey Golubev 143 | David Ferrer 144 | Adrian Mannarino 145 | Alexandr Dolgopolov 146 | Jesse Huta Galung 147 | Jerzy Janowicz 148 | Pablo Andujar 149 | Denis Kudla 150 | Jan-Lennard Struff 151 | Tommy Haas 152 | Edouard Roger-Vasselin 153 | Joao Sousa 154 | Jiri Vesely 155 | Ivan Dodig 156 | Damir Dzumhur 157 | Kenny De Schepper 158 | Aleksandr Nedovyesov 159 | Roger Federer 160 | Blaz Kavcic 161 | Sergiy Stakhovsky 162 | Ze Zhang 163 | Gilles Simon 164 | Marcel Granollers 165 | Julian Reister 166 | Filippo Volandri 167 | John Isner 168 | Federico Delbonis 169 | Horacio Zeballos 170 | Aljaz Bedene 171 | Feliciano Lopez 172 | Michael Llodra 173 | Wayne Odesnik 174 | Go Soeda 175 | Juan Martin Del Potro 176 | Tim Smyczek 177 | Benjamin Becker 178 | Frank Dancevic 179 | Grigor Dimitrov 180 | Yen-Hsun Lu 181 | Victor Hanescu 182 | Daniel Gimeno-Traver 183 | Kei Nishikori 184 | Lucas Pouille 185 | Donald Young 186 | Lleyton Hewitt 187 | Gael Monfils 188 | Jack Sock 189 | Igor Sijsling 190 | Bernard Tomic 191 | Novak Djokovic 192 | Denis Istomin 193 | Ernests Gulbis 194 | Jarkko Nieminen 195 | Richard Gasquet 196 | Julien Benneteau 197 | Vasek Pospisil 198 | Alejandro Falla 199 | David Ferrer 200 | Alexandr Dolgopolov 201 | Jerzy Janowicz 202 | Florian Mayer 203 | Guillermo Garcia-Lopez 204 | Dominic Thiem 205 | Ivan Dodig 206 | Kenny De Schepper 207 | Roger Federer 208 | Teymuraz Gabashvili 209 | Gilles Simon 210 | Thomaz Bellucci 211 | Martin Klizan 212 | Michal Przysiezny 213 | Feliciano Lopez 214 | Vincent Millot 215 | Juan Martin Del Potro 216 | Nick Kyrgios 217 | Grigor Dimitrov 218 | Victor Hanescu 219 | Kei Nishikori 220 | Donald Young 221 | Gael Monfils 222 | Thanasi Kokkinakis 223 | Novak Djokovic 224 | Sam Querrey 225 | Richard Gasquet 226 | David Ferrer 227 | Jerzy Janowicz 228 | Edouard Roger-Vasselin 229 | Damir Dzumhur 230 | Roger Federer 231 | Gilles Simon 232 | Martin Klizan 233 | Feliciano Lopez 234 | Roberto Bautista Agut 235 | Grigor Dimitrov 236 | Kei Nishikori 237 | Gael Monfils 238 | Novak Djokovic 239 | Tommy Robredo 240 | David Ferrer 241 | Kevin Anderson 242 | Roger Federer 243 | Stephane Robert 244 | Roberto Bautista Agut 245 | Kei Nishikori 246 | Novak Djokovic 247 | David Ferrer 248 | Roger Federer 249 | Grigor Dimitrov 250 | Stanislas Wawrinka 251 | Roger Federer 252 | Stanislas Wawrinka 253 | Serena Williams 254 | Vesna Dolonc 255 | Pauline Parmentier 256 | Heather Watson 257 | Samantha Stosur 258 | Tsvetana Pironkova 259 | Annika Beck 260 | Kiki Bertens 261 | Roberta Vinci 262 | Patricia Mayr-Achleitner 263 | Casey Dellacqua 264 | Laura Robson 265 | Eugenie Bouchard 266 | Alison Van Uytvanck 267 | Sachia Vickery 268 | Julia Goerges 269 | Na Li 270 | Belinda Bencic 271 | Donna Vekic 272 | Julia Glushko 273 | Ekaterina Makarova 274 | Anabel Medina Garrigues 275 | Shahar Peer 276 | Mirjana Lucic-Baroni 277 | Angelique Kerber 278 | Caroline Garcia 279 | Dinah Pfizenmaier 280 | Alison Riske 281 | Flavia Pennetta 282 | Monica Puig 283 | Shuai Zhang 284 | Luksika Kumkhum 285 | Jelena Jankovic 286 | Nadiya Kichenok 287 | Kurumi Nara 288 | Andrea Petkovic 289 | Sorana Cirstea 290 | Zarina Diyas 291 | Lesia Tsurenko 292 | Katarzyna Piter 293 | Carla Suarez Navarro 294 | Galina Voskoboeva 295 | Kristina Mladenovic 296 | Francesca Schiavone 297 | Alize Cornet 298 | Camila Giorgi 299 | Paula Ormaechea 300 | Bethanie Mattek-Sands 301 | Agnieszka Radwanska 302 | Olga Govortsova 303 | Carina Witthoeft 304 | Teliana Pereira 305 | Kaia Kanepi 306 | Timea Babos 307 | Christina McHale 308 | Lourdes Dominguez Lino 309 | Sloane Stephens 310 | Tadeja Majeric 311 | Olivia Rogowska 312 | Elina Svitolina 313 | Bojana Jovanovski 314 | Chanelle Scheepers 315 | Su-Wei Hsieh 316 | Johanna Larsson 317 | Serena Williams 318 | Karolina Pliskova 319 | Samantha Stosur 320 | Annika Beck 321 | Jie Zheng 322 | Casey Dellacqua 323 | Eugenie Bouchard 324 | Lauren Davis 325 | Na Li 326 | Lucie Hradecka 327 | Ekaterina Makarova 328 | Monica Niculescu 329 | Angelique Kerber 330 | Yanina Wickmayer 331 | Flavia Pennetta 332 | Mona Barthel 333 | Jelena Jankovic 334 | Kurumi Nara 335 | Marina Erakovic 336 | Varvara Lepchenko 337 | Carla Suarez Navarro 338 | Stefanie Voegele 339 | Alize Cornet 340 | Karin Knapp 341 | Agnieszka Radwanska 342 | Mandy Minella 343 | Garbine Muguruza 344 | Christina McHale 345 | Sloane Stephens 346 | Olivia Rogowska 347 | Bojana Jovanovski 348 | Barbora Zahlavova Strycova 349 | Serena Williams 350 | Samantha Stosur 351 | Jie Zheng 352 | Eugenie Bouchard 353 | Na Li 354 | Ekaterina Makarova 355 | Angelique Kerber 356 | Flavia Pennetta 357 | Jelena Jankovic 358 | Zarina Diyas 359 | Carla Suarez Navarro 360 | Alize Cornet 361 | Agnieszka Radwanska 362 | Garbine Muguruza 363 | Sloane Stephens 364 | Yvonne Meusburger 365 | Serena Williams 366 | Casey Dellacqua 367 | Na Li 368 | Angelique Kerber 369 | Jelena Jankovic 370 | Dominika Cibulkova 371 | Agnieszka Radwanska 372 | Sloane Stephens 373 | Ana Ivanovic 374 | Na Li 375 | Simona Halep 376 | Agnieszka Radwanska 377 | Eugenie Bouchard 378 | Dominika Cibulkova 379 | Na Li 380 | Ashleigh Barty 381 | Lara Arruabarrena 382 | Karolina Pliskova 383 | Daniela Hantuchova 384 | Klara Zakopalova 385 | Silvia Soler-Espinosa 386 | Petra Martic 387 | Ana Ivanovic 388 | Jie Zheng 389 | Madison Keys 390 | Vera Zvonareva 391 | Kirsten Flipkens 392 | Hao Chen Tang 393 | Virginie Razzano 394 | Lauren Davis 395 | Sara Errani 396 | Ana Konjuh 397 | Kimiko Date-Krumm 398 | Lucie Hradecka 399 | Lucie Safarova 400 | Venus Williams 401 | Irina Falconi 402 | Monica Niculescu 403 | Sabine Lisicki 404 | Jarmila Gajdosova 405 | Alla Kudryavtseva 406 | Yanina Wickmayer 407 | Elena Vesnina 408 | Alexandra Cadantu 409 | Anna Tatishvili 410 | Mona Barthel 411 | Petra Kvitova 412 | Misaki Doi 413 | Ayumi Morita 414 | Shuai Peng 415 | Magdalena Rybarikova 416 | Marina Erakovic 417 | Katerina Siniakova 418 | Varvara Lepchenko 419 | Simona Halep 420 | Vania King 421 | Irina-Camelia Begu 422 | Stefanie Voegele 423 | Dominika Cibulkova 424 | Polona Hercog 425 | Storm Sanders 426 | Karin Knapp 427 | Maria Sharapova 428 | Yulia Putintseva 429 | Ying-Ying Duan 430 | Mandy Minella 431 | Anastasia Pavlyuchenkova 432 | Garbine Muguruza 433 | Anna Schmiedlova 434 | Yung-Jan Chan 435 | Caroline Wozniacki 436 | Yaroslava Shvedova 437 | Ajla Tomljanovic 438 | Mariana Duque-Marino 439 | Svetlana Kuznetsova 440 | Jana Cepelova 441 | Yvonne Meusburger 442 | Barbora Zahlavova Strycova 443 | Victoria Azarenka 444 | Vesna Dolonc 445 | Daniela Hantuchova 446 | Tsvetana Pironkova 447 | Ana Ivanovic 448 | Madison Keys 449 | Kirsten Flipkens 450 | Virginie Razzano 451 | Julia Goerges 452 | Belinda Bencic 453 | Lucie Safarova 454 | Irina Falconi 455 | Sabine Lisicki 456 | Alla Kudryavtseva 457 | Alison Riske 458 | Monica Puig 459 | Luksika Kumkhum 460 | Ayumi Morita 461 | Magdalena Rybarikova 462 | Zarina Diyas 463 | Simona Halep 464 | Galina Voskoboeva 465 | Dominika Cibulkova 466 | Camila Giorgi 467 | Maria Sharapova 468 | Olga Govortsova 469 | Anastasia Pavlyuchenkova 470 | Anna Schmiedlova 471 | Caroline Wozniacki 472 | Ajla Tomljanovic 473 | Elina Svitolina 474 | Yvonne Meusburger 475 | Victoria Azarenka 476 | Daniela Hantuchova 477 | Ana Ivanovic 478 | Casey Dellacqua 479 | Lauren Davis 480 | Lucie Safarova 481 | Monica Niculescu 482 | Alison Riske 483 | Mona Barthel 484 | Kurumi Nara 485 | Simona Halep 486 | Dominika Cibulkova 487 | Maria Sharapova 488 | Anastasia Pavlyuchenkova 489 | Caroline Wozniacki 490 | Elina Svitolina 491 | Victoria Azarenka 492 | Ana Ivanovic 493 | Eugenie Bouchard 494 | Ekaterina Makarova 495 | Flavia Pennetta 496 | Simona Halep 497 | Maria Sharapova 498 | Garbine Muguruza 499 | Victoria Azarenka 500 | Eugenie Bouchard 501 | Flavia Pennetta 502 | Dominika Cibulkova 503 | Victoria Azarenka 504 | Na Li 505 | Agnieszka Radwanska 506 | Dominika Cibulkova 507 | Pablo Carreno-Busta 508 | Somdev Devvarman 509 | Tobias Kamke 510 | Julien Benneteau 511 | Lukas Lacko 512 | Jan Hajek 513 | Adrian Mannarino 514 | Gilles Simon 515 | Philipp Petzschner 516 | Radek Stepanek 517 | Viktor Troicki 518 | Juan Monaco 519 | Benjamin Becker 520 | Roberto Bautista Agut 521 | Jarkko Nieminen 522 | Jo-Wilfried Tsonga 523 | Marinko Matosevic 524 | Steve Johnson 525 | Joao Sousa 526 | Marcel Granollers 527 | Illya Marchenko 528 | Jan-Lennard Struff 529 | Steve Darcis 530 | Milos Raonic 531 | Andreas Haider-Maurer 532 | Martin Alund 533 | Blaz Kavcic 534 | Andreas Seppi 535 | Jurgen Zopp 536 | Igor Sijsling 537 | Ernests Gulbis 538 | Tomas Berdych 539 | Sergiy Stakhovsky 540 | Michal Przysiezny 541 | Florent Serra 542 | Florian Mayer 543 | Albert Ramos 544 | Kenny De Schepper 545 | Vasek Pospisil 546 | Stanislas Wawrinka 547 | Jesse Levine 548 | Grega Zemlja 549 | Lukasz Kubot 550 | Benoit Paire 551 | Andreas Beck 552 | Pere Riba 553 | Martin Klizan 554 | Rafael Nadal 555 | Fernando Verdasco 556 | Federico Delbonis 557 | Mikhail Youzhny 558 | Carlos Berlocq 559 | Andrey Kuznetsov 560 | Jack Sock 561 | Tommy Haas 562 | Jiri Vesely 563 | Simone Bolelli 564 | Bernard Tomic 565 | Alexandr Dolgopolov 566 | Alejandro Falla 567 | Alex Kuznetsov 568 | Ivan Dodig 569 | Novak Djokovic 570 | Somdev Devvarman 571 | Julien Benneteau 572 | Jan Hajek 573 | Gilles Simon 574 | Nick Kyrgios 575 | Daniel Gimeno-Traver 576 | Roberto Bautista Agut 577 | Jo-Wilfried Tsonga 578 | Albert Montanes 579 | Feliciano Lopez 580 | Evgeny Donskoy 581 | Milos Raonic 582 | Edouard Roger-Vasselin 583 | Andreas Seppi 584 | Igor Sijsling 585 | Gael Monfils 586 | Michal Przysiezny 587 | Denis Istomin 588 | Robin Haase 589 | Stanislas Wawrinka 590 | Grega Zemlja 591 | Benoit Paire 592 | Lukas Rosol 593 | Rafael Nadal 594 | Fernando Verdasco 595 | Mikhail Youzhny 596 | Ryan Harrison 597 | Tommy Haas 598 | Dmitry Tursunov 599 | Lucas Pouille 600 | Novak Djokovic 601 | Julien Benneteau 602 | Gilles Simon 603 | Viktor Troicki 604 | Jo-Wilfried Tsonga 605 | Feliciano Lopez 606 | Milos Raonic 607 | Andreas Seppi 608 | Gael Monfils 609 | Nikolay Davydenko 610 | Stanislas Wawrinka 611 | Benoit Paire 612 | Rafael Nadal 613 | Mikhail Youzhny 614 | Tommy Haas 615 | Victor Hanescu 616 | Novak Djokovic 617 | Gilles Simon 618 | Jo-Wilfried Tsonga 619 | Kevin Anderson 620 | Tommy Robredo 621 | Stanislas Wawrinka 622 | Rafael Nadal 623 | Tommy Haas 624 | Novak Djokovic 625 | Jo-Wilfried Tsonga 626 | Tommy Robredo 627 | Rafael Nadal 628 | Novak Djokovic 629 | David Ferrer 630 | Novak Djokovic 631 | Rafael Nadal 632 | Roger Federer 633 | Daniel Munoz-De La Nava 634 | Paolo Lorenzi 635 | Ricardas Berankis 636 | Sam Querrey 637 | Denis Kudla 638 | Pablo Cuevas 639 | Lleyton Hewitt 640 | Marin Cilic 641 | Nick Kyrgios 642 | James Blake 643 | Daniel Gimeno-Traver 644 | Jeremy Chardy 645 | Gilles Muller 646 | Paul-Henri Mathieu 647 | Aljaz Bedene 648 | David Ferrer 649 | Albert Montanes 650 | Go Soeda 651 | Feliciano Lopez 652 | Kevin Anderson 653 | Evgeny Donskoy 654 | Michael Llodra 655 | Xavier Malisse 656 | Nicolas Almagro 657 | Edouard Roger-Vasselin 658 | James Duckworth 659 | Leonardo Mayer 660 | Tommy Robredo 661 | Jurgen Melzer 662 | Rogerio Dutra Silva 663 | Gael Monfils 664 | Richard Gasquet 665 | Rhyne Williams 666 | Nikolay Davydenko 667 | Denis Istomin 668 | Jerzy Janowicz 669 | Robin Haase 670 | Horacio Zeballos 671 | Thiemo De Bakker 672 | Kei Nishikori 673 | Santiago Giraldo 674 | Maxime Teixeira 675 | Marcos Baghdatis 676 | Fabio Fognini 677 | Lukas Rosol 678 | Michael Russell 679 | Daniel Brands 680 | Marc Gicquel 681 | Julian Reister 682 | Pablo Andujar 683 | John Isner 684 | Ryan Harrison 685 | Guillermo Garcia-Lopez 686 | Guillaume Rufin 687 | Philipp Kohlschreiber 688 | Yen-Hsun Lu 689 | Victor Hanescu 690 | Dmitry Tursunov 691 | Grigor Dimitrov 692 | Lucas Pouille 693 | Guido Pella 694 | David Goffin 695 | Roger Federer 696 | Tobias Kamke 697 | Sam Querrey 698 | Pablo Cuevas 699 | Marin Cilic 700 | Viktor Troicki 701 | Jeremy Chardy 702 | Jarkko Nieminen 703 | David Ferrer 704 | Joao Sousa 705 | Kevin Anderson 706 | Michael Llodra 707 | Nicolas Almagro 708 | Blaz Kavcic 709 | Tommy Robredo 710 | Ernests Gulbis 711 | Richard Gasquet 712 | Nikolay Davydenko 713 | Jerzy Janowicz 714 | Horacio Zeballos 715 | Kei Nishikori 716 | Lukasz Kubot 717 | Fabio Fognini 718 | Martin Klizan 719 | Janko Tipsarevic 720 | Federico Delbonis 721 | John Isner 722 | Jack Sock 723 | Victor Hanescu 724 | Grigor Dimitrov 725 | Guido Pella 726 | Roger Federer 727 | Sam Querrey 728 | Marin Cilic 729 | Jeremy Chardy 730 | David Ferrer 731 | Kevin Anderson 732 | Nicolas Almagro 733 | Tommy Robredo 734 | Richard Gasquet 735 | Jerzy Janowicz 736 | Kei Nishikori 737 | Fabio Fognini 738 | Janko Tipsarevic 739 | John Isner 740 | Philipp Kohlschreiber 741 | Grigor Dimitrov 742 | Roger Federer 743 | Viktor Troicki 744 | David Ferrer 745 | Nicolas Almagro 746 | Richard Gasquet 747 | Kei Nishikori 748 | Mikhail Youzhny 749 | Philipp Kohlschreiber 750 | Roger Federer 751 | David Ferrer 752 | Stanislas Wawrinka 753 | Tommy Haas 754 | Jo-Wilfried Tsonga 755 | Rafael Nadal 756 | David Ferrer 757 | Su-Wei Hsieh 758 | Eugenie Bouchard 759 | Jie Zheng 760 | Tamira Paszek 761 | Karin Knapp 762 | Vania King 763 | Marina Erakovic 764 | Dominika Cibulkova 765 | Kimiko Date-Krumm 766 | Kristina Mladenovic 767 | Karolina Pliskova 768 | Jelena Jankovic 769 | Jamie Hampton 770 | Anna Karolina Schmiedlova 771 | Shuai Peng 772 | Petra Kvitova 773 | Elena Vesnina 774 | Sandra Zahlavova 775 | Irina-Camelia Begu 776 | Alize Cornet 777 | Flavia Pennetta 778 | Melinda Czink 779 | Kristyna Pliskova 780 | Marion Bartoli 781 | Nina Bratchikova 782 | Ashleigh Barty 783 | Stefanie Voegele 784 | Klara Zakopalova 785 | Coco Vandeweghe 786 | Tatjana Maria 787 | Bethanie Mattek-Sands 788 | Na Li 789 | Arantxa Rus 790 | Ayumi Morita 791 | Maria-Teresa Torro-Flor 792 | Sabine Lisicki 793 | Simona Halep 794 | Irena Pavlovic 795 | Madison Keys 796 | Nadia Petrova 797 | Petra Martic 798 | Chanelle Scheepers 799 | Virginie Razzano 800 | Julia Goerges 801 | Urszula Radwanska 802 | Dinah Pfizenmaier 803 | Mallory Burdette 804 | Agnieszka Radwanska 805 | Mona Barthel 806 | Jana Cepelova 807 | Romina Oprandi 808 | Varvara Lepchenko 809 | Svetlana Kuznetsova 810 | Pauline Parmentier 811 | Barbora Zahlavova Strycova 812 | Caroline Wozniacki 813 | Stephanie Foretz Gacon 814 | Galina Voskoboeva 815 | Petra Cetkovska 816 | Anastasia Pavlyuchenkova 817 | Kiki Bertens 818 | Monica Niculescu 819 | Yuliya Beygelzimer 820 | Serena Williams 821 | Eugenie Bouchard 822 | Melanie Oudin 823 | Vania King 824 | Dominika Cibulkova 825 | Kristina Mladenovic 826 | Jelena Jankovic 827 | Anna Karolina Schmiedlova 828 | Petra Kvitova 829 | Annika Beck 830 | Alize Cornet 831 | Francesca Schiavone 832 | Marion Bartoli 833 | Ashleigh Barty 834 | Kaia Kanepi 835 | Paula Ormaechea 836 | Na Li 837 | Yulia Putintseva 838 | Sabine Lisicki 839 | Shelby Rogers 840 | Monica Puig 841 | Mathilde Johansson 842 | Zuzana Kucova 843 | Dinah Pfizenmaier 844 | Agnieszka Radwanska 845 | Jana Cepelova 846 | Varvara Lepchenko 847 | Magdalena Rybarikova 848 | Caroline Wozniacki 849 | Galina Voskoboeva 850 | Anastasia Pavlyuchenkova 851 | Johanna Larsson 852 | Serena Williams 853 | Jie Zheng 854 | Marina Erakovic 855 | Jelena Jankovic 856 | Petra Kvitova 857 | Alize Cornet 858 | Marion Bartoli 859 | Stefanie Voegele 860 | Bethanie Mattek-Sands 861 | Sabine Lisicki 862 | Monica Puig 863 | Virginie Razzano 864 | Agnieszka Radwanska 865 | Varvara Lepchenko 866 | Bojana Jovanovski 867 | Petra Cetkovska 868 | Serena Williams 869 | Sloane Stephens 870 | Jamie Hampton 871 | Francesca Schiavone 872 | Bethanie Mattek-Sands 873 | Carla Suarez Navarro 874 | Agnieszka Radwanska 875 | Svetlana Kuznetsova 876 | Serena Williams 877 | Jelena Jankovic 878 | Maria Kirilenko 879 | Agnieszka Radwanska 880 | Serena Williams 881 | Victoria Azarenka 882 | Serena Williams 883 | Serena Williams 884 | Maria Sharapova 885 | Tsvetana Pironkova 886 | Vesna Dolonc 887 | Melanie Oudin 888 | Sloane Stephens 889 | Alexandra Cadantu 890 | Elena Baltacha 891 | Lesia Tsurenko 892 | Samantha Stosur 893 | Lauren Davis 894 | Garbine Muguruza 895 | Daniela Hantuchova 896 | Lucie Safarova 897 | Yanina Wickmayer 898 | Camila Giorgi 899 | Aravane Rezai 900 | Victoria Azarenka 901 | Annika Beck 902 | Silvia Soler-Espinosa 903 | Maria Joao Koehler 904 | Kirsten Flipkens 905 | Francesca Schiavone 906 | Mariana Duque-Marino 907 | Olga Govortsova 908 | Maria Kirilenko 909 | Lucie Hradecka 910 | Heather Watson 911 | Kaia Kanepi 912 | Yaroslava Shvedova 913 | Paula Ormaechea 914 | Lourdes Dominguez Lino 915 | A. Medina Garrigues 916 | Sara Errani 917 | Yulia Putintseva 918 | Julia Glushko 919 | Sofia Arvidsson 920 | Carla Suarez Navarro 921 | Shelby Rogers 922 | Misaki Doi 923 | Monica Puig 924 | Ana Ivanovic 925 | Mathilde Johansson 926 | Claire Feuerstein 927 | Zuzana Kucova 928 | Venus Williams 929 | Mandy Minella 930 | Donna Vekic 931 | Shahar Peer 932 | Angelique Kerber 933 | Christina McHale 934 | Elina Svitolina 935 | Mirjana Lucic-Baroni 936 | Ekaterina Makarova 937 | Magdalena Rybarikova 938 | Bojana Jovanovski 939 | Laura Robson 940 | Roberta Vinci 941 | Grace Min 942 | Olga Puchkova 943 | Andrea Hlavackova 944 | Sorana Cirstea 945 | Johanna Larsson 946 | Caroline Garcia 947 | Anna Tatishvili 948 | Maria Sharapova 949 | Jie Zheng 950 | Sloane Stephens 951 | Marina Erakovic 952 | Samantha Stosur 953 | Garbine Muguruza 954 | Jamie Hampton 955 | Shuai Peng 956 | Victoria Azarenka 957 | Silvia Soler-Espinosa 958 | Kirsten Flipkens 959 | Mariana Duque-Marino 960 | Maria Kirilenko 961 | Stefanie Voegele 962 | Yaroslava Shvedova 963 | Bethanie Mattek-Sands 964 | Sara Errani 965 | Maria-Teresa Torro-Flor 966 | Carla Suarez Navarro 967 | Madison Keys 968 | Ana Ivanovic 969 | Virginie Razzano 970 | Urszula Radwanska 971 | Mallory Burdette 972 | Angelique Kerber 973 | Elina Svitolina 974 | Svetlana Kuznetsova 975 | Bojana Jovanovski 976 | Roberta Vinci 977 | Petra Cetkovska 978 | Sorana Cirstea 979 | Caroline Garcia 980 | Maria Sharapova 981 | Sloane Stephens 982 | Samantha Stosur 983 | Jamie Hampton 984 | Victoria Azarenka 985 | Francesca Schiavone 986 | Maria Kirilenko 987 | Paula Ormaechea 988 | Sara Errani 989 | Carla Suarez Navarro 990 | Ana Ivanovic 991 | Dinah Pfizenmaier 992 | Angelique Kerber 993 | Svetlana Kuznetsova 994 | Roberta Vinci 995 | Sorana Cirstea 996 | Maria Sharapova 997 | Jelena Jankovic 998 | Victoria Azarenka 999 | Maria Kirilenko 1000 | Sara Errani 1001 | Ana Ivanovic 1002 | Angelique Kerber 1003 | Roberta Vinci 1004 | Maria Sharapova 1005 | Victoria Azarenka 1006 | Sara Errani 1007 | Svetlana Kuznetsova 1008 | Maria Sharapova 1009 | Sara Errani 1010 | Maria Sharapova 1011 | Richard Gasquet 1012 | Stephane Robert 1013 | Jan-Lennard Struff 1014 | Aljaz Bedene 1015 | Feliciano Lopez 1016 | Kenny De Schepper 1017 | Andrey Kuznetsov 1018 | Pablo Cuevas 1019 | Ernests Gulbis 1020 | Mikhail Kukushkin 1021 | Roberto Bautista Agut 1022 | Nick Kyrgios 1023 | Tommy Robredo 1024 | Robin Haase 1025 | Albert Ramos 1026 | Daniel Evans 1027 | Fernando Verdasco 1028 | Rhyne Williams 1029 | Ryan Harrison 1030 | Novak Djokovic 1031 | Benjamin Becker 1032 | Lukasz Kubot 1033 | Joao Sousa 1034 | Tommy Haas 1035 | Yen-Hsun Lu 1036 | Donald Young 1037 | Florian Mayer 1038 | Tobias Kamke 1039 | Denis Istomin 1040 | Julien Benneteau 1041 | Sergiy Stakhovsky 1042 | Jiri Vesely 1043 | Paolo Lorenzi 1044 | Pablo Andujar 1045 | Thomas Fabbiano 1046 | Jerzy Janowicz 1047 | Jack Sock 1048 | Roger Federer 1049 | Santiago Giraldo 1050 | Horacio Zeballos 1051 | Guido Pella 1052 | John Isner 1053 | Adrian Ungur 1054 | Albert Montanes 1055 | Collin Altamirano 1056 | Rogerio Dutra Silva 1057 | Benoit Paire 1058 | Tim Smyczek 1059 | Jurgen Zopp 1060 | Rajeev Ram 1061 | David Goffin 1062 | Nicolas Mahut 1063 | Jurgen Melzer 1064 | Igor Sijsling 1065 | Lleyton Hewitt 1066 | Guillermo Garcia-Lopez 1067 | Andy Murray 1068 | Victor Hanescu 1069 | Andreas Seppi 1070 | Lukas Lacko 1071 | Stanislas Wawrinka 1072 | James Blake 1073 | Marcos Baghdatis 1074 | Daniel Brands 1075 | Richard Gasquet 1076 | Guillaume Rufin 1077 | Feliciano Lopez 1078 | Pablo Andujar 1079 | Maximo Gonzalez 1080 | Dudi Sela 1081 | Andreas Haider-Maurer 1082 | Roberto Bautista Agut 1083 | Roger Federer 1084 | Adrian Mannarino 1085 | Tommy Robredo 1086 | Bernard Tomic 1087 | John Isner 1088 | Edouard Roger-Vasselin 1089 | Ivan Dodig 1090 | Rogerio Dutra Silva 1091 | Novak Djokovic 1092 | Jarkko Nieminen 1093 | Alex Bogomolov Jr. 1094 | Marcel Granollers 1095 | Tommy Haas 1096 | Alexandr Dolgopolov 1097 | Evgeny Donskoy 1098 | Lleyton Hewitt 1099 | Andy Murray 1100 | Donald Young 1101 | Andreas Seppi 1102 | Tobias Kamke 1103 | Stanislas Wawrinka 1104 | Marcos Baghdatis 1105 | Julien Benneteau 1106 | Denis Kudla 1107 | Richard Gasquet 1108 | Feliciano Lopez 1109 | Jack Sock 1110 | Mikhail Kukushkin 1111 | Roger Federer 1112 | Tommy Robredo 1113 | John Isner 1114 | Ivan Dodig 1115 | Novak Djokovic 1116 | Tim Smyczek 1117 | Tommy Haas 1118 | Evgeny Donskoy 1119 | Andy Murray 1120 | Andreas Seppi 1121 | Stanislas Wawrinka 1122 | Julien Benneteau 1123 | Richard Gasquet 1124 | Janko Tipsarevic 1125 | Roger Federer 1126 | Philipp Kohlschreiber 1127 | Mikhail Youzhny 1128 | Andy Murray 1129 | Stanislas Wawrinka 1130 | Richard Gasquet 1131 | Tommy Robredo 1132 | Novak Djokovic 1133 | Andy Murray 1134 | Novak Djokovic 1135 | Richard Gasquet 1136 | Novak Djokovic 1137 | Michael Russell 1138 | Albano Olivetti 1139 | Guillaume Rufin 1140 | Dmitry Tursunov 1141 | Florent Serra 1142 | Bradley Klahn 1143 | Dudi Sela 1144 | Janko Tipsarevic 1145 | Andreas Haider-Maurer 1146 | Andrej Martin 1147 | Thomaz Bellucci 1148 | David Ferrer 1149 | Marinko Matosevic 1150 | Frank Dancevic 1151 | Bernard Tomic 1152 | Kei Nishikori 1153 | Ivan Dodig 1154 | Nikolay Davydenko 1155 | Rafael Nadal 1156 | Ricardas Berankis 1157 | Lukas Rosol 1158 | Jarkko Nieminen 1159 | Grigor Dimitrov 1160 | Paul-Henri Mathieu 1161 | Daniel Gimeno-Traver 1162 | Martin Klizan 1163 | Juan Monaco 1164 | Steve Johnson 1165 | Nicolas Almagro 1166 | Michal Przysiezny 1167 | Jeremy Chardy 1168 | Denis Kudla 1169 | Tomas Berdych 1170 | Thiemo de Bakker 1171 | Milos Raonic 1172 | Maximo Gonzalez 1173 | Philipp Petzschner 1174 | Grega Zemlja 1175 | Carlos Berlocq 1176 | Adrian Mannarino 1177 | Sam Querrey 1178 | Filippo Volandri 1179 | Gael Monfils 1180 | Edouard Roger-Vasselin 1181 | Philipp Kohlschreiber 1182 | Vasek Pospisil 1183 | Alex Bogomolov Jr. 1184 | James Duckworth 1185 | Marcel Granollers 1186 | Fabio Fognini 1187 | Alexandr Dolgopolov 1188 | Mikhail Youzhny 1189 | Evgeny Donskoy 1190 | Peter Gojowczyk 1191 | Brian Baker 1192 | Juan Martin Del Potro 1193 | Michael Llodra 1194 | Leonardo Mayer 1195 | Xavier Malisse 1196 | Somdev Devvarman 1197 | Radek Stepanek 1198 | Ivo Karlovic 1199 | Go Soeda 1200 | Kevin Anderson 1201 | Stephane Robert 1202 | Dmitry Tursunov 1203 | Bradley Klahn 1204 | Milos Raonic 1205 | Jack Sock 1206 | Janko Tipsarevic 1207 | Mikhail Kukushkin 1208 | David Ferrer 1209 | Carlos Berlocq 1210 | Sam Querrey 1211 | Frank Dancevic 1212 | Daniel Evans 1213 | Gael Monfils 1214 | Philipp Kohlschreiber 1215 | Nikolay Davydenko 1216 | Rafael Nadal 1217 | Benjamin Becker 1218 | Joao Sousa 1219 | Tim Smyczek 1220 | Rajeev Ram 1221 | Yen-Hsun Lu 1222 | Mikhail Youzhny 1223 | Peter Gojowczyk 1224 | Juan Martin Del Potro 1225 | Leonardo Mayer 1226 | Florian Mayer 1227 | Somdev Devvarman 1228 | Denis Istomin 1229 | Ivo Karlovic 1230 | Kevin Anderson 1231 | Jeremy Chardy 1232 | Tomas Berdych 1233 | Dmitry Tursunov 1234 | Milos Raonic 1235 | Janko Tipsarevic 1236 | David Ferrer 1237 | Adrian Mannarino 1238 | Daniel Evans 1239 | Philipp Kohlschreiber 1240 | Rafael Nadal 1241 | Joao Sousa 1242 | Marcel Granollers 1243 | Mikhail Youzhny 1244 | Lleyton Hewitt 1245 | Florian Mayer 1246 | Denis Istomin 1247 | Marcos Baghdatis 1248 | Tomas Berdych 1249 | Milos Raonic 1250 | David Ferrer 1251 | Tommy Robredo 1252 | Rafael Nadal 1253 | Lleyton Hewitt 1254 | Denis Istomin 1255 | Tomas Berdych 1256 | David Ferrer 1257 | Rafael Nadal 1258 | Mikhail Youzhny 1259 | Stanislas Wawrinka 1260 | Stanislas Wawrinka 1261 | Rafael Nadal 1262 | Rafael Nadal 1263 | S Williams 1264 | F Pennetta 1265 | S Williams 1266 | R Vinci 1267 | D Hantuchova 1268 | E Makarova 1269 | A Ivanovic 1270 | A Riske 1271 | S Halep 1272 | C Giorgi 1273 | S Williams 1274 | J Jankovic 1275 | C Suarez Navarro 1276 | A Ivanovic 1277 | C Wozniack 1278 | M Kirilenko 1279 | A Cornet 1280 | K Knapp 1281 | P Kvitova 1282 | S Kuznetsova 1283 | J Glushko 1284 | L Robson 1285 | J Hampton 1286 | S Williams 1287 | A.Radwanska 1288 | E Makarova 1289 | J Zheng 1290 | J Jankovic 1291 | K Kanepi 1292 | F Pennetta 1293 | S Williams 1294 | C Wozniacki 1295 | E Bouchard 1296 | A Wozniak 1297 | C McHale 1298 | A Ivanovic 1299 | P Ormaechea 1300 | A Cornet 1301 | D Hantuchova 1302 | K Nara 1303 | A Riske 1304 | S Kuznetsova 1305 | S Arvidsson 1306 | U Radwanska 1307 | V Williams 1308 | J Hampton 1309 | C Vandeweghe 1310 | L Robson 1311 | A Barty 1312 | P Kvitova 1313 | C Wozniacki 1314 | D Pfizenmaier 1315 | O Rogowska 1316 | V Duval 1317 | A Ivanovic 1318 | J Goerges 1319 | V Lepchenko 1320 | S Kuznetsova 1321 | B Jovanovski 1322 | S Peng 1323 | A Cornet 1324 | H Watson 1325 | K Flipkens 1326 | A.Radwanska 1327 | S Williams 1328 | O Govortsova 1329 | M Minella 1330 | J Jankovic 1331 | L Robson 1332 | J Hampton 1333 | V Dushevina 1334 | P Ormaechea 1335 | K Pliskova 1336 | L Hradecka 1337 | L Davis 1338 | K Mladenovic 1339 | V Azarenka 1340 | V Azarenka 1341 | N Li 1342 | F Pennetta 1343 | V Azarenka 1344 | N Li 1345 | V Azarenka 1346 | D Hantuchova 1347 | F Pennetta 1348 | R Vinci 1349 | S Stephens 1350 | N Li 1351 | A Kerber 1352 | C McHale 1353 | C Giorgi 1354 | S Halep 1355 | V Azarenka 1356 | R Vinci 1357 | A Riske 1358 | F Pennetta 1359 | D Hantuchova 1360 | N Li 1361 | S Stephens 1362 | Y Shvedova 1363 | A Pavlyuchenkova 1364 | S Lisicki 1365 | C Suarez Navarro 1366 | K Nara 1367 | A Kerber 1368 | S Errani 1369 | G Voskoboeva 1370 | C Scheepers 1371 | A Kerber 1372 | V Azarenka 1373 | E Svitolina 1374 | A Dulgheru 1375 | S Lisicki 1376 | A Tomljanovic 1377 | V Duval 1378 | S Cirstea 1379 | M Barthel 1380 | S Peng 1381 | N Li 1382 | S Stephens 1383 | J Zheng 1384 | K Mladenovic 1385 | C Suarez Navarro 1386 | C Garcia 1387 | A Pavlyuchenkova 1388 | M Doi 1389 | Y Duan 1390 | V Azarenka 1391 | S Errani 1392 | S Stosur 1393 | A Tatishvili 1394 | C McHale 1395 | A Dulgheru 1396 | M Burdette 1397 | A Petkovic 1398 | Y Meusburger 1399 | M Koehler 1400 | S Halep 1401 | V Williams 1402 | S.Soler-Espinosa 1403 | F Schiavone 1404 | N Li 1405 | S Stephens 1406 | M Keys 1407 | L Dominguez Lino 1408 | L Arruabarrena 1409 | S Lisicki 1410 | K Date-Krumm 1411 | E Bouchard 1412 | A Kerber 1413 | C Suarez Navarro 1414 | A Medina Garrigues 1415 | B.Becker 1416 | J.Ward 1417 | N.Mahut 1418 | T.Robredo 1419 | R.Haase 1420 | M.Gicquel 1421 | A.Kuznetsov 1422 | J.Tipsarevic 1423 | M.Baghdatis 1424 | K.De Schepper 1425 | L.Lacko 1426 | J.Monaco 1427 | T.Kamke 1428 | F.Verdasco 1429 | E.Roger-Vasselin 1430 | J-W.Tsonga 1431 | V.Hanescu 1432 | R.Dutra Silva 1433 | J.Reister 1434 | F.Fognini 1435 | K.Edmund 1436 | R.Stepanek 1437 | M.Matosevic 1438 | N.Almagro 1439 | L.Hewitt 1440 | D.Brown 1441 | P.Andujar 1442 | J.Isner 1443 | A.Ungur 1444 | S.Robert 1445 | L.Kubot 1446 | R.Nadal 1447 | A.Ramos 1448 | G.Pella 1449 | G.Zemlja 1450 | G.Dimitrov 1451 | D.Istomin 1452 | M.Llodra 1453 | L.Mayer 1454 | K.Nishikori 1455 | I.Dodig 1456 | J.Duckworth 1457 | A.Kuznetsov 1458 | M.Raonic 1459 | G.Elias 1460 | H.Zeballos 1461 | R.Bautista Agut 1462 | D.Ferrer 1463 | M.Klizan 1464 | D.Brands 1465 | P.Petzschner 1466 | K.Anderson 1467 | B.Tomic 1468 | J.Blake 1469 | A.Haider-Maurer 1470 | R.Gasquet 1471 | D.Tursunov 1472 | W.Odesnik 1473 | R.Berankis 1474 | G.Simon 1475 | R.Harrison 1476 | B.Kavcic 1477 | B.Reynolds 1478 | N.Djokovic 1479 | Y-H.Lu 1480 | T.Robredo 1481 | V.Pospisil 1482 | V.Troicki 1483 | J.Monaco 1484 | F.Verdasco 1485 | J-W.Tsonga 1486 | S.Stakhovsky 1487 | J.Melzer 1488 | N.Almagro 1489 | D.Brown 1490 | S.Robert 1491 | J.Levine 1492 | G.Dimitrov 1493 | K.Nishikori 1494 | D.Kudla 1495 | M.Raonic 1496 | D.Brands 1497 | K.Anderson 1498 | J.Blake 1499 | R.Gasquet 1500 | J.Struff 1501 | N.Djokovic 1502 | T.Robredo 1503 | J.Melzer 1504 | N.Almagro 1505 | A.Mannarino 1506 | G.Zemlja 1507 | K.Nishikori 1508 | I.Sijsling 1509 | D.Ferrer 1510 | K.Anderson 1511 | R.Gasquet 1512 | F.Lopez 1513 | N.Djokovic 1514 | M.Youzhny 1515 | F.Verdasco 1516 | J.Janowicz 1517 | L.Kubot 1518 | A.Seppi 1519 | D.Ferrer 1520 | B.Tomic 1521 | N.Djokovic 1522 | F.Verdasco 1523 | L.Kubot 1524 | D.Ferrer 1525 | N.Djokovic 1526 | J.Janowicz 1527 | N.Djokovic 1528 | N.Djokovic 1529 | A.Murray 1530 | Y-H.Lu 1531 | J.Hajek 1532 | A.Bogomolov Jr. 1533 | M.Youzhny 1534 | V.Pospisil 1535 | A.Montanes 1536 | V.Troicki 1537 | M.Cilic 1538 | P.Lorenzi 1539 | R.Ram 1540 | B.Knittel 1541 | J.Benneteau 1542 | X.Malisse 1543 | E.Gulbis 1544 | D.Goffin 1545 | R.Federer 1546 | S.Stakhovsky 1547 | L.Rosol 1548 | J.Melzer 1549 | J.Janowicz 1550 | M.Reid 1551 | G.Rufin 1552 | J.Zopp 1553 | S.Wawrinka 1554 | G.Garcia-Lopez 1555 | A.Mannarino 1556 | E.Donskoy 1557 | B.Paire 1558 | A.Falla 1559 | I.Andreev 1560 | S.Darcis 1561 | J.Del Potro 1562 | J.Levine 1563 | M.Russell 1564 | S.Bolelli 1565 | A.Seppi 1566 | J.Nieminen 1567 | A.Bedene 1568 | M.Ebden 1569 | P.Kohlschreiber 1570 | D.Kudla 1571 | I.Sijsling 1572 | C.Berlocq 1573 | A.Dolgopolov 1574 | S.Giraldo 1575 | T.Gabashvili 1576 | M.Alund 1577 | T.Berdych 1578 | D.Gimeno-Traver 1579 | M.Przysiezny 1580 | O.Rochus 1581 | S.Querrey 1582 | T.De Bakker 1583 | G.Soeda 1584 | M.Granollers 1585 | T.Haas 1586 | Y-T.Wang 1587 | P-H.Mathieu 1588 | F.Lopez 1589 | J.Chardy 1590 | J.Struff 1591 | S.Johnson 1592 | F.Mayer 1593 | A.Murray 1594 | N.Mahut 1595 | M.Youzhny 1596 | A.Kuznetsov 1597 | R.Ram 1598 | J.Benneteau 1599 | E.Gulbis 1600 | R.Federer 1601 | J.Reister 1602 | G.Rufin 1603 | L.Hewitt 1604 | B.Paire 1605 | J.Del Potro 1606 | G.Zemlja 1607 | L.Mayer 1608 | I.Dodig 1609 | I.Sijsling 1610 | T.Berdych 1611 | M.Przysiezny 1612 | B.Tomic 1613 | G.Soeda 1614 | J.Chardy 1615 | B.Reynolds 1616 | A.Murray 1617 | S.Stakhovsky 1618 | J.Janowicz 1619 | D.Brown 1620 | J.Del Potro 1621 | A.Seppi 1622 | I.Dodig 1623 | A.Dolgopolov 1624 | T.Berdych 1625 | B.Tomic 1626 | T.Haas 1627 | J.Chardy 1628 | A.Murray 1629 | K.De Schepper 1630 | J.Melzer 1631 | A.Mannarino 1632 | J.Del Potro 1633 | I.Dodig 1634 | T.Berdych 1635 | T.Haas 1636 | A.Murray 1637 | J.Janowicz 1638 | J.Del Potro 1639 | T.Berdych 1640 | A.Murray 1641 | J.Del Potro 1642 | A.Murray 1643 | M.Koehler 1644 | E.Baltacha 1645 | S-W.Hsieh 1646 | A.Cornet 1647 | Y.Putintseva 1648 | A.Tomljanovic 1649 | Y.Wickmayer 1650 | J.Jankovic 1651 | V.Razzano 1652 | E.Bouchard 1653 | S.Arvidsson 1654 | C.Suarez Navarro 1655 | J.Larsson 1656 | G.Muguruza 1657 | K.Bertens 1658 | P.Kvitova 1659 | K.Mladenovic 1660 | M.Larcher De Brito 1661 | L.Hradecka 1662 | L.Safarova 1663 | S.Voegele 1664 | C.Giorgi 1665 | C.McHale 1666 | M.Bartoli 1667 | E.Cabeza Candela 1668 | P.Cetkovska 1669 | P.Parmentier 1670 | S.Stephens 1671 | E.Birnerova 1672 | L.Arruabarrena 1673 | S.Soler-Espinosa 1674 | S.Errani 1675 | M.Krajicek 1676 | O.Govortsova 1677 | N.Bratchikova 1678 | K.Zakopalova 1679 | M.Camerin 1680 | M.Torro-Flor 1681 | Kr.Pliskova 1682 | R.Vinci 1683 | Ka.Pliskova 1684 | A.Tatishvili 1685 | B.Zahlavova Strycova 1686 | A.Pavlyuchenkova 1687 | M.Niculescu 1688 | H.Watson 1689 | T.Babos 1690 | A.Radwanska 1691 | B.Mattek-Sands 1692 | K.Kanepi 1693 | M.Burdette 1694 | R.Oprandi 1695 | A.Medina Garrigues 1696 | A.Morita 1697 | M.Duque-Marino 1698 | M.Kirilenko 1699 | A.Schmiedlova 1700 | O.Puchkova 1701 | E.Vesnina 1702 | S.Lisicki 1703 | A.Cadantu 1704 | K.Date-Krumm 1705 | C.Garcia 1706 | S.Williams 1707 | A.Cornet 1708 | B.Jovanovski 1709 | J.Jankovic 1710 | E.Bouchard 1711 | C.Suarez Navarro 1712 | G.Muguruza 1713 | M.Larcher De Brito 1714 | L.Safarova 1715 | C.Giorgi 1716 | M.Bartoli 1717 | P.Cetkovska 1718 | S.Stephens 1719 | L.Tsurenko 1720 | M.Puig 1721 | S.Halep 1722 | K.Zakopalova 1723 | M.Torro-Flor 1724 | R.Vinci 1725 | P.Martic 1726 | T.Pironkova 1727 | M.Keys 1728 | A.Radwanska 1729 | M.Erakovic 1730 | O.Puchkova 1731 | S.Lisicki 1732 | K.Date-Krumm 1733 | S.Williams 1734 | A.Cornet 1735 | V.Dolonc 1736 | C.Suarez Navarro 1737 | P.Kvitova 1738 | K.Knapp 1739 | M.Bartoli 1740 | S.Stephens 1741 | M.Puig 1742 | K.Zakopalova 1743 | R.Vinci 1744 | T.Pironkova 1745 | A.Radwanska 1746 | A.Riske 1747 | L.Robson 1748 | S.Lisicki 1749 | S.Williams 1750 | K.Flipkens 1751 | P.Kvitova 1752 | M.Bartoli 1753 | M.Puig 1754 | R.Vinci 1755 | A.Radwanska 1756 | L.Robson 1757 | S.Williams 1758 | P.Kvitova 1759 | S.Stephens 1760 | A.Radwanska 1761 | S.Lisicki 1762 | M.Bartoli 1763 | S.Lisicki 1764 | S.Lisicki 1765 | V.Azarenka 1766 | F.Pennetta 1767 | T.Maria 1768 | V.King 1769 | K.Flipkens 1770 | B.Jovanovski 1771 | V.Dolonc 1772 | J.Konta 1773 | A.Ivanovic 1774 | G.Voskoboeva 1775 | M.Lucic-Baroni 1776 | L.Dominguez Lino 1777 | E.Makarova 1778 | A.Keothavong 1779 | Y.Shvedova 1780 | C.Vandeweghe 1781 | M.Sharapova 1782 | M.Oudin 1783 | K.Knapp 1784 | L.Davis 1785 | S.Cirstea 1786 | S.Murray 1787 | A.Glatch 1788 | E.Svitolina 1789 | C.Wozniacki 1790 | D.Vekic 1791 | A.Petkovic 1792 | J.Hampton 1793 | V.Lepchenko 1794 | L.Tsurenko 1795 | M.Doi 1796 | M.Puig 1797 | N.Li 1798 | S.Halep 1799 | A.Beck 1800 | D.Hantuchova 1801 | D.Cibulkova 1802 | I.Begu 1803 | J.Cepelova 1804 | C.Scheepers 1805 | N.Petrova 1806 | P.Martic 1807 | M.Rybarikova 1808 | T.Pironkova 1809 | M.Barthel 1810 | M.Keys 1811 | M.Johansson 1812 | Y.Meusburger 1813 | A.Kerber 1814 | T.Moore 1815 | U.Radwanska 1816 | A.Riske 1817 | S.Peng 1818 | M.Erakovic 1819 | J.Goerges 1820 | L.Robson 1821 | S.Stosur 1822 | A.Rus 1823 | A.Hlavackova 1824 | F.Schiavone 1825 | T.Paszek 1826 | C.Witthoeft 1827 | J.Zheng 1828 | M.Minella 1829 | S-W.Hsieh 1830 | K.Flipkens 1831 | V.Dolonc 1832 | A.Ivanovic 1833 | M.Lucic-Baroni 1834 | E.Makarova 1835 | M.Sharapova 1836 | K.Knapp 1837 | S.Cirstea 1838 | C.McHale 1839 | C.Wozniacki 1840 | A.Petkovic 1841 | E.Birnerova 1842 | S.Soler-Espinosa 1843 | N.Li 1844 | A.Beck 1845 | D.Cibulkova 1846 | J.Cepelova 1847 | Ka.Pliskova 1848 | B.Zahlavova Strycova 1849 | M.Barthel 1850 | M.Johansson 1851 | S.Peng 1852 | S.Stosur 1853 | E.Vesnina 1854 | A.Cadantu 1855 | C.Garcia 1856 | F.Pennetta 1857 | K.Flipkens 1858 | E.Bouchard 1859 | E.Makarova 1860 | M.Larcher De Brito 1861 | C.Giorgi 1862 | P.Cetkovska 1863 | E.Birnerova 1864 | N.Li 1865 | D.Cibulkova 1866 | P.Martic 1867 | M.Keys 1868 | K.Kanepi 1869 | M.Erakovic 1870 | S.Stosur 1871 | K.Date-Krumm 1872 | F.Pennetta 1873 | C.Suarez Navarro 1874 | K.Knapp 1875 | S.Stephens 1876 | N.Li 1877 | T.Pironkova 1878 | K.Kanepi 1879 | S.Lisicki 1880 | K.Flipkens 1881 | M.Bartoli 1882 | N.Li 1883 | K.Kanepi 1884 | K.Flipkens 1885 | A.Radwanska 1886 | M.Bartoli 1887 | -------------------------------------------------------------------------------- /tennis/rebuilt.json: -------------------------------------------------------------------------------- 1 | { 2 | "Melanie Oudin": [ 3 | "Melanie Oudin", 4 | "M.Oudin" 5 | ], 6 | "Varvara Lepchenko": [ 7 | "Varvara Lepchenko", 8 | "V Lepchenko", 9 | "V.Lepchenko" 10 | ], 11 | "Olga Govortsova": [ 12 | "Olga Govortsova", 13 | "O Govortsova", 14 | "O.Govortsova" 15 | ], 16 | "Dominika Cibulkova": [ 17 | "Dominika Cibulkova", 18 | "D.Cibulkova" 19 | ], 20 | "Luksika Kumkhum": [ 21 | "Luksika Kumkhum" 22 | ], 23 | "Alexandra Cadantu": [ 24 | "Alexandra Cadantu", 25 | "A.Cadantu" 26 | ], 27 | "Florian Mayer": [ 28 | "Florian Mayer", 29 | "F.Mayer" 30 | ], 31 | "Aljaz Bedene": [ 32 | "Aljaz Bedene", 33 | "A.Bedene" 34 | ], 35 | "Pablo Carreno-Busta": [ 36 | "Pablo Carreno-Busta", 37 | "Pablo Carreno Busta" 38 | ], 39 | "Casey Dellacqua": [ 40 | "Casey Dellacqua" 41 | ], 42 | "Zuzana Kucova": [ 43 | "Zuzana Kucova" 44 | ], 45 | "Milos Raonic": [ 46 | "Milos Raonic", 47 | "M.Raonic" 48 | ], 49 | "Jarmila Gajdosova": [ 50 | "Jarmila Gajdosova" 51 | ], 52 | "Julien Benneteau": [ 53 | "Julien Benneteau", 54 | "J.Benneteau" 55 | ], 56 | "Donna Vekic": [ 57 | "Donna Vekic", 58 | "D.Vekic" 59 | ], 60 | "Collin Altamirano": [ 61 | "Collin Altamirano" 62 | ], 63 | "Tatjana Maria": [ 64 | "Tatjana Maria", 65 | "T.Maria" 66 | ], 67 | "Dmitry Tursunov": [ 68 | "Dmitry Tursunov", 69 | "D.Tursunov" 70 | ], 71 | "Kaia Kanepi": [ 72 | "Kaia Kanepi", 73 | "K Kanepi", 74 | "K.Kanepi" 75 | ], 76 | "Belinda Bencic": [ 77 | "Belinda Bencic" 78 | ], 79 | "Andrey Kuznetsov": [ 80 | "A.Kuznetsov", 81 | "Andrey Kuznetsov" 82 | ], 83 | "Silvia Soler-Espinosa": [ 84 | "Silvia Soler-Espinosa", 85 | "S.Soler-Espinosa" 86 | ], 87 | "Claire Feuerstein": [ 88 | "Claire Feuerstein" 89 | ], 90 | "M.Reid": [ 91 | "M.Reid" 92 | ], 93 | "Stefanie Voegele": [ 94 | "Stefanie Voegele", 95 | "S.Voegele" 96 | ], 97 | "Alize Cornet": [ 98 | "Alize Cornet", 99 | "A Cornet", 100 | "A.Cornet" 101 | ], 102 | "Paula Ormaechea": [ 103 | "Paula Ormaechea", 104 | "P Ormaechea" 105 | ], 106 | "Steve Darcis": [ 107 | "Steve Darcis", 108 | "S.Darcis" 109 | ], 110 | "Nikolay Davydenko": [ 111 | "Nikolay Davydenko" 112 | ], 113 | "Caroline Wozniacki": [ 114 | "Caroline Wozniacki", 115 | "C Wozniacki", 116 | "C.Wozniacki", 117 | "C Wozniack" 118 | ], 119 | "Monica Puig": [ 120 | "Monica Puig", 121 | "M.Puig" 122 | ], 123 | "Agnieszka Radwanska": [ 124 | "A.Radwanska", 125 | "Agnieszka Radwanska" 126 | ], 127 | "Anastasia Pavlyuchenkova": [ 128 | "Anastasia Pavlyuchenkova", 129 | "A Pavlyuchenkova", 130 | "A.Pavlyuchenkova" 131 | ], 132 | "Di Wu": [ 133 | "Di Wu" 134 | ], 135 | "Evgeny Donskoy": [ 136 | "Evgeny Donskoy", 137 | "E.Donskoy" 138 | ], 139 | "Nina Bratchikova": [ 140 | "Nina Bratchikova", 141 | "N.Bratchikova" 142 | ], 143 | "Heather Watson": [ 144 | "Heather Watson", 145 | "H Watson", 146 | "H.Watson" 147 | ], 148 | "Pauline Parmentier": [ 149 | "Pauline Parmentier", 150 | "P.Parmentier" 151 | ], 152 | "Nadia Petrova": [ 153 | "Nadia Petrova", 154 | "N.Petrova" 155 | ], 156 | "Nadiya Kichenok": [ 157 | "Nadiya Kichenok" 158 | ], 159 | "Coco Vandeweghe": [ 160 | "Coco Vandeweghe", 161 | "C Vandeweghe", 162 | "C.Vandeweghe" 163 | ], 164 | "Joao Sousa": [ 165 | "Joao Sousa" 166 | ], 167 | "Kei Nishikori": [ 168 | "Kei Nishikori", 169 | "K.Nishikori" 170 | ], 171 | "Sloane Stephens": [ 172 | "Sloane Stephens", 173 | "S Stephens", 174 | "S.Stephens" 175 | ], 176 | "Florent Serra": [ 177 | "Florent Serra" 178 | ], 179 | "Michael Llodra": [ 180 | "Michael Llodra", 181 | "M.Llodra" 182 | ], 183 | "Lukas Rosol": [ 184 | "Lukas Rosol", 185 | "L.Rosol" 186 | ], 187 | "David Ferrer": [ 188 | "David Ferrer", 189 | "D.Ferrer" 190 | ], 191 | "Ryan Harrison": [ 192 | "Ryan Harrison", 193 | "R.Harrison" 194 | ], 195 | "Mariana Duque-Marino": [ 196 | "Mariana Duque-Marino", 197 | "M.Duque-Marino" 198 | ], 199 | "Sergiy Stakhovsky": [ 200 | "Sergiy Stakhovsky", 201 | "S.Stakhovsky" 202 | ], 203 | "Andreas Seppi": [ 204 | "Andreas Seppi", 205 | "A.Seppi" 206 | ], 207 | "M Koehler": [ 208 | "M Koehler", 209 | "M.Koehler" 210 | ], 211 | "Romina Oprandi": [ 212 | "Romina Oprandi", 213 | "R.Oprandi" 214 | ], 215 | "Julia Glushko": [ 216 | "Julia Glushko", 217 | "J Glushko" 218 | ], 219 | "Shelby Rogers": [ 220 | "Shelby Rogers" 221 | ], 222 | "Storm Sanders": [ 223 | "Storm Sanders" 224 | ], 225 | "Jerzy Janowicz": [ 226 | "Jerzy Janowicz", 227 | "J.Janowicz" 228 | ], 229 | "Lauren Davis": [ 230 | "Lauren Davis", 231 | "L Davis", 232 | "L.Davis" 233 | ], 234 | "Victoria Azarenka": [ 235 | "Victoria Azarenka", 236 | "V Azarenka", 237 | "V.Azarenka" 238 | ], 239 | "Klara Zakopalova": [ 240 | "Klara Zakopalova", 241 | "K.Zakopalova" 242 | ], 243 | "Marion Bartoli": [ 244 | "Marion Bartoli", 245 | "M.Bartoli" 246 | ], 247 | "Carla Suarez Navarro": [ 248 | "Carla Suarez Navarro", 249 | "C Suarez Navarro", 250 | "C.Suarez Navarro" 251 | ], 252 | "Lucie Hradecka": [ 253 | "Lucie Hradecka", 254 | "L Hradecka", 255 | "L.Hradecka" 256 | ], 257 | "Sabine Lisicki": [ 258 | "Sabine Lisicki", 259 | "S Lisicki", 260 | "S.Lisicki" 261 | ], 262 | "Sara Errani": [ 263 | "Sara Errani", 264 | "S Errani", 265 | "S.Errani" 266 | ], 267 | "Kristina Mladenovic": [ 268 | "Kristina Mladenovic", 269 | "K Mladenovic", 270 | "K.Mladenovic" 271 | ], 272 | "Mikhail Kukushkin": [ 273 | "Mikhail Kukushkin" 274 | ], 275 | "Richard Gasquet": [ 276 | "Richard Gasquet", 277 | "R.Gasquet" 278 | ], 279 | "Ana Konjuh": [ 280 | "Ana Konjuh" 281 | ], 282 | "Kirsten Flipkens": [ 283 | "Kirsten Flipkens", 284 | "K Flipkens", 285 | "K.Flipkens" 286 | ], 287 | "Simona Halep": [ 288 | "Simona Halep", 289 | "S Halep", 290 | "S.Halep" 291 | ], 292 | "Michael Russell": [ 293 | "Michael Russell", 294 | "M.Russell" 295 | ], 296 | "V Duval": [ 297 | "V Duval" 298 | ], 299 | "Kenny De Schepper": [ 300 | "Kenny De Schepper", 301 | "K.De Schepper" 302 | ], 303 | "Alejandro Falla": [ 304 | "Alejandro Falla", 305 | "A.Falla" 306 | ], 307 | "Feliciano Lopez": [ 308 | "Feliciano Lopez", 309 | "F.Lopez" 310 | ], 311 | "M.Krajicek": [ 312 | "M.Krajicek" 313 | ], 314 | "Alla Kudryavtseva": [ 315 | "Alla Kudryavtseva" 316 | ], 317 | "Ze Zhang": [ 318 | "Ze Zhang" 319 | ], 320 | "Sandra Zahlavova": [ 321 | "Sandra Zahlavova" 322 | ], 323 | "Karolína Plíšková": [ 324 | "K Pliskova", 325 | "Karolina Pliskova", 326 | "Ka.Pliskova" 327 | ], 328 | "Vera Zvonareva": [ 329 | "Vera Zvonareva" 330 | ], 331 | "James Blake": [ 332 | "James Blake", 333 | "J.Blake" 334 | ], 335 | "Katerina Siniakova": [ 336 | "Katerina Siniakova" 337 | ], 338 | "Juan Monaco": [ 339 | "Juan Monaco", 340 | "J.Monaco" 341 | ], 342 | "Carina Witthoeft": [ 343 | "Carina Witthoeft", 344 | "C.Witthoeft" 345 | ], 346 | "Pere Riba": [ 347 | "Pere Riba" 348 | ], 349 | "Johanna Larsson": [ 350 | "Johanna Larsson", 351 | "J.Larsson" 352 | ], 353 | "Mikhail Youzhny": [ 354 | "Mikhail Youzhny", 355 | "M.Youzhny" 356 | ], 357 | "Tsvetana Pironkova": [ 358 | "Tsvetana Pironkova", 359 | "T.Pironkova" 360 | ], 361 | "Svetlana Kuznetsova": [ 362 | "S Kuznetsova", 363 | "Svetlana Kuznetsova" 364 | ], 365 | "Jeremy Chardy": [ 366 | "Jeremy Chardy", 367 | "J.Chardy" 368 | ], 369 | "Kimiko Date-Krumm": [ 370 | "Kimiko Date-Krumm", 371 | "K Date-Krumm", 372 | "K.Date-Krumm" 373 | ], 374 | "Tobias Kamke": [ 375 | "Tobias Kamke", 376 | "T.Kamke" 377 | ], 378 | "Robin Haase": [ 379 | "Robin Haase", 380 | "R.Haase" 381 | ], 382 | "Daniela Hantuchova": [ 383 | "Daniela Hantuchova", 384 | "D Hantuchova", 385 | "D.Hantuchova" 386 | ], 387 | "Galina Voskoboeva": [ 388 | "Galina Voskoboeva", 389 | "G Voskoboeva", 390 | "G.Voskoboeva" 391 | ], 392 | "O.Rochus": [ 393 | "O.Rochus" 394 | ], 395 | "Steve Johnson": [ 396 | "Steve Johnson", 397 | "S.Johnson" 398 | ], 399 | "Kiki Bertens": [ 400 | "Kiki Bertens", 401 | "K.Bertens" 402 | ], 403 | "Shahar Peer": [ 404 | "Shahar Peer" 405 | ], 406 | "Damir Dzumhur": [ 407 | "Damir Dzumhur" 408 | ], 409 | "Jie Zheng": [ 410 | "J.Zheng", 411 | "J Zheng", 412 | "Jie Zheng" 413 | ], 414 | "David Goffin": [ 415 | "David Goffin", 416 | "D.Goffin" 417 | ], 418 | "Gilles Muller": [ 419 | "Gilles Muller" 420 | ], 421 | "Andy Murray": [ 422 | "A.Murray", 423 | "Andy Murray" 424 | ], 425 | "Misaki Doi": [ 426 | "Misaki Doi", 427 | "M Doi", 428 | "M.Doi" 429 | ], 430 | "Yung-Jan Chan": [ 431 | "Yung-Jan Chan" 432 | ], 433 | "Tim Smyczek": [ 434 | "Tim Smyczek" 435 | ], 436 | "Petra Cetkovska": [ 437 | "Petra Cetkovska", 438 | "P.Cetkovska" 439 | ], 440 | "Maxime Teixeira": [ 441 | "Maxime Teixeira" 442 | ], 443 | "Julia Goerges": [ 444 | "Julia Goerges", 445 | "J Goerges", 446 | "J.Goerges" 447 | ], 448 | "Na Li": [ 449 | "N.Li", 450 | "N Li", 451 | "Na Li" 452 | ], 453 | "E.Birnerova": [ 454 | "E.Birnerova" 455 | ], 456 | "Rajeev Ram": [ 457 | "Rajeev Ram", 458 | "R.Ram" 459 | ], 460 | "Jurgen Melzer": [ 461 | "Jurgen Melzer", 462 | "J.Melzer" 463 | ], 464 | "Andrej Martin": [ 465 | "Andrej Martin" 466 | ], 467 | "Brian Baker": [ 468 | "Brian Baker" 469 | ], 470 | "Samantha Stosur": [ 471 | "Samantha Stosur", 472 | "S Stosur", 473 | "S.Stosur" 474 | ], 475 | "Jesse Levine": [ 476 | "Jesse Levine", 477 | "J.Levine" 478 | ], 479 | "Monica Niculescu": [ 480 | "Monica Niculescu", 481 | "M.Niculescu" 482 | ], 483 | "Jan Hajek": [ 484 | "Jan Hajek", 485 | "J.Hajek" 486 | ], 487 | "Anna Karolina Schmiedlova": [ 488 | "Anna Karolina Schmiedlova", 489 | "Anna Schmiedlova", 490 | "A.Schmiedlova" 491 | ], 492 | "Arantxa Rus": [ 493 | "Arantxa Rus", 494 | "A.Rus" 495 | ], 496 | "Novak Djokovic": [ 497 | "Novak Djokovic", 498 | "N.Djokovic" 499 | ], 500 | "Maria Kirilenko": [ 501 | "Maria Kirilenko", 502 | "M Kirilenko", 503 | "M.Kirilenko" 504 | ], 505 | "Thanasi Kokkinakis": [ 506 | "Thanasi Kokkinakis" 507 | ], 508 | "Shuai Peng": [ 509 | "S.Peng", 510 | "S Peng", 511 | "Shuai Peng" 512 | ], 513 | "Ekaterina Makarova": [ 514 | "Ekaterina Makarova", 515 | "E Makarova", 516 | "E.Makarova" 517 | ], 518 | "Thomas Fabbiano": [ 519 | "Thomas Fabbiano" 520 | ], 521 | "Peter Gojowczyk": [ 522 | "Peter Gojowczyk" 523 | ], 524 | "Aravane Rezai": [ 525 | "Aravane Rezai" 526 | ], 527 | "A.Glatch": [ 528 | "A.Glatch" 529 | ], 530 | "Olivia Rogowska": [ 531 | "Olivia Rogowska", 532 | "O Rogowska" 533 | ], 534 | "Elena Vesnina": [ 535 | "Elena Vesnina", 536 | "E.Vesnina" 537 | ], 538 | "S.Murray": [ 539 | "S.Murray" 540 | ], 541 | "Alex Bogomolov Jr.": [ 542 | "Alex Bogomolov Jr.", 543 | "A.Bogomolov Jr." 544 | ], 545 | "Stephane Robert": [ 546 | "Stephane Robert", 547 | "S.Robert" 548 | ], 549 | "Elena Baltacha": [ 550 | "Elena Baltacha", 551 | "E.Baltacha" 552 | ], 553 | "Frank Dancevic": [ 554 | "Frank Dancevic" 555 | ], 556 | "Guido Pella": [ 557 | "Guido Pella", 558 | "G.Pella" 559 | ], 560 | "Teliana Pereira": [ 561 | "Teliana Pereira" 562 | ], 563 | "Carlos Berlocq": [ 564 | "Carlos Berlocq", 565 | "C.Berlocq" 566 | ], 567 | "Marcel Granollers": [ 568 | "Marcel Granollers", 569 | "M.Granollers" 570 | ], 571 | "Maria Sharapova": [ 572 | "Maria Sharapova", 573 | "M.Sharapova" 574 | ], 575 | "Petra Kvitova": [ 576 | "Petra Kvitova", 577 | "P Kvitova", 578 | "P.Kvitova" 579 | ], 580 | "A.Keothavong": [ 581 | "A.Keothavong" 582 | ], 583 | "Xavier Malisse": [ 584 | "Xavier Malisse", 585 | "X.Malisse" 586 | ], 587 | "Olga Puchkova": [ 588 | "Olga Puchkova", 589 | "O.Puchkova" 590 | ], 591 | "Daniel Brands": [ 592 | "Daniel Brands", 593 | "D.Brands" 594 | ], 595 | "Eugenie Bouchard": [ 596 | "Eugenie Bouchard", 597 | "E Bouchard", 598 | "E.Bouchard" 599 | ], 600 | "Roger Federer": [ 601 | "Roger Federer", 602 | "R.Federer" 603 | ], 604 | "Timea Babos": [ 605 | "Timea Babos", 606 | "T.Babos" 607 | ], 608 | "Mona Barthel": [ 609 | "Mona Barthel", 610 | "M Barthel", 611 | "M.Barthel" 612 | ], 613 | "Rhyne Williams": [ 614 | "Rhyne Williams" 615 | ], 616 | "Aleksandr Nedovyesov": [ 617 | "Aleksandr Nedovyesov" 618 | ], 619 | "Vincent Millot": [ 620 | "Vincent Millot" 621 | ], 622 | "Jiri Vesely": [ 623 | "Jiri Vesely" 624 | ], 625 | "Samuel Groth": [ 626 | "Samuel Groth" 627 | ], 628 | "Chanelle Scheepers": [ 629 | "Chanelle Scheepers", 630 | "C Scheepers", 631 | "C.Scheepers" 632 | ], 633 | "B.Reynolds": [ 634 | "B.Reynolds" 635 | ], 636 | "Daniel Munoz-De La Nava": [ 637 | "Daniel Munoz-De La Nava" 638 | ], 639 | "Dusan Lajovic": [ 640 | "Dusan Lajovic" 641 | ], 642 | "B.Knittel": [ 643 | "B.Knittel" 644 | ], 645 | "Michael Berrer": [ 646 | "Michael Berrer" 647 | ], 648 | "Fernando Verdasco": [ 649 | "Fernando Verdasco", 650 | "F.Verdasco" 651 | ], 652 | "Dominic Thiem": [ 653 | "Dominic Thiem" 654 | ], 655 | "Tadeja Majeric": [ 656 | "Tadeja Majeric" 657 | ], 658 | "Yen-Hsun Lu": [ 659 | "Yen-Hsun Lu", 660 | "Y-H.Lu" 661 | ], 662 | "Karin Knapp": [ 663 | "Karin Knapp", 664 | "K Knapp", 665 | "K.Knapp" 666 | ], 667 | "Denis Kudla": [ 668 | "Denis Kudla", 669 | "D.Kudla" 670 | ], 671 | "Nick Kyrgios": [ 672 | "Nick Kyrgios" 673 | ], 674 | "Mirjana Lucic-Baroni": [ 675 | "Mirjana Lucic-Baroni", 676 | "M.Lucic-Baroni" 677 | ], 678 | "Jurgen Zopp": [ 679 | "Jurgen Zopp", 680 | "J.Zopp" 681 | ], 682 | "Victor Hanescu": [ 683 | "Victor Hanescu", 684 | "V.Hanescu" 685 | ], 686 | "Mathilde Johansson": [ 687 | "Mathilde Johansson", 688 | "M.Johansson" 689 | ], 690 | "Daniel Evans": [ 691 | "Daniel Evans" 692 | ], 693 | "Grigor Dimitrov": [ 694 | "Grigor Dimitrov", 695 | "G.Dimitrov" 696 | ], 697 | "Sofia Arvidsson": [ 698 | "Sofia Arvidsson", 699 | "S Arvidsson", 700 | "S.Arvidsson" 701 | ], 702 | "Dinah Pfizenmaier": [ 703 | "Dinah Pfizenmaier", 704 | "D Pfizenmaier" 705 | ], 706 | "Ajla Tomljanovic": [ 707 | "Ajla Tomljanovic", 708 | "A Tomljanovic", 709 | "A.Tomljanovic" 710 | ], 711 | "Benoit Paire": [ 712 | "Benoit Paire", 713 | "B.Paire" 714 | ], 715 | "Caroline Garcia": [ 716 | "Caroline Garcia", 717 | "C Garcia", 718 | "C.Garcia" 719 | ], 720 | "John Isner": [ 721 | "John Isner", 722 | "J.Isner" 723 | ], 724 | "Barbora Zahlavova Strycova": [ 725 | "Barbora Zahlavova Strycova", 726 | "B.Zahlavova Strycova" 727 | ], 728 | "Rogerio Dutra Silva": [ 729 | "Rogerio Dutra Silva", 730 | "R.Dutra Silva" 731 | ], 732 | "Ricardas Berankis": [ 733 | "Ricardas Berankis", 734 | "R.Berankis" 735 | ], 736 | "Somdev Devvarman": [ 737 | "Somdev Devvarman" 738 | ], 739 | "T.Moore": [ 740 | "T.Moore" 741 | ], 742 | "Petra Martic": [ 743 | "P.Martic", 744 | "Petra Martic" 745 | ], 746 | "Flavia Pennetta": [ 747 | "Flavia Pennetta", 748 | "F Pennetta", 749 | "F.Pennetta" 750 | ], 751 | "Edouard Roger-Vasselin": [ 752 | "Edouard Roger-Vasselin", 753 | "E.Roger-Vasselin" 754 | ], 755 | "Nicolas Mahut": [ 756 | "Nicolas Mahut", 757 | "N.Mahut" 758 | ], 759 | "Federico Delbonis": [ 760 | "Federico Delbonis" 761 | ], 762 | "Alejandro Gonzalez": [ 763 | "Alejandro Gonzalez" 764 | ], 765 | "Marcos Baghdatis": [ 766 | "Marcos Baghdatis", 767 | "M.Baghdatis" 768 | ], 769 | "Grega Zemlja": [ 770 | "Grega Zemlja", 771 | "G.Zemlja" 772 | ], 773 | "Marc Gicquel": [ 774 | "Marc Gicquel", 775 | "M.Gicquel" 776 | ], 777 | "J.Konta": [ 778 | "J.Konta" 779 | ], 780 | "Katarzyna Piter": [ 781 | "Katarzyna Piter" 782 | ], 783 | "Gilles Simon": [ 784 | "Gilles Simon", 785 | "G.Simon" 786 | ], 787 | "Jan-Lennard Struff": [ 788 | "Jan-Lennard Struff", 789 | "J.Struff" 790 | ], 791 | "Ana Ivanovic": [ 792 | "Ana Ivanovic", 793 | "A Ivanovic", 794 | "A.Ivanovic" 795 | ], 796 | "Lucie Safarova": [ 797 | "Lucie Safarova", 798 | "L.Safarova" 799 | ], 800 | "Roberto Bautista Agut": [ 801 | "Roberto Bautista Agut", 802 | "R.Bautista Agut" 803 | ], 804 | "Nicolas Almagro": [ 805 | "Nicolas Almagro", 806 | "N.Almagro" 807 | ], 808 | "M.Camerin": [ 809 | "M.Camerin" 810 | ], 811 | "Yaroslava Shvedova": [ 812 | "Yaroslava Shvedova", 813 | "Y Shvedova", 814 | "Y.Shvedova" 815 | ], 816 | "Ayumi Morita": [ 817 | "Ayumi Morita", 818 | "A.Morita" 819 | ], 820 | "Ashleigh Barty": [ 821 | "Ashleigh Barty", 822 | "A Barty" 823 | ], 824 | "V Dushevina": [ 825 | "V Dushevina" 826 | ], 827 | "Grace Min": [ 828 | "Grace Min" 829 | ], 830 | "Hao Chen Tang": [ 831 | "Hao Chen Tang" 832 | ], 833 | "Patricia Mayr-Achleitner": [ 834 | "Patricia Mayr-Achleitner" 835 | ], 836 | "Jack Sock": [ 837 | "Jack Sock" 838 | ], 839 | "Go Soeda": [ 840 | "Go Soeda", 841 | "G.Soeda" 842 | ], 843 | "Bethanie Mattek-Sands": [ 844 | "Bethanie Mattek-Sands", 845 | "B.Mattek-Sands" 846 | ], 847 | "Roberta Vinci": [ 848 | "Roberta Vinci", 849 | "R Vinci", 850 | "R.Vinci" 851 | ], 852 | "Ivo Karlovic": [ 853 | "Ivo Karlovic" 854 | ], 855 | "Tomas Berdych": [ 856 | "Tomas Berdych", 857 | "T.Berdych" 858 | ], 859 | "Maria Joao Koehler": [ 860 | "Maria Joao Koehler" 861 | ], 862 | "Virginie Razzano": [ 863 | "Virginie Razzano", 864 | "V.Razzano" 865 | ], 866 | "Kristýna Plíšková": [ 867 | "Kr.Pliskova", 868 | "Kristyna Pliskova" 869 | ], 870 | "Yvonne Meusburger": [ 871 | "Yvonne Meusburger", 872 | "Y Meusburger", 873 | "Y.Meusburger" 874 | ], 875 | "Magdalena Rybarikova": [ 876 | "Magdalena Rybarikova", 877 | "M.Rybarikova" 878 | ], 879 | "Philipp Kohlschreiber": [ 880 | "Philipp Kohlschreiber", 881 | "P.Kohlschreiber" 882 | ], 883 | "Zarina Diyas": [ 884 | "Zarina Diyas" 885 | ], 886 | "Paolo Lorenzi": [ 887 | "Paolo Lorenzi", 888 | "P.Lorenzi" 889 | ], 890 | "Stanislas Wawrinka": [ 891 | "Stanislas Wawrinka", 892 | "S.Wawrinka" 893 | ], 894 | "Andrea Hlavackova": [ 895 | "Andrea Hlavackova", 896 | "A.Hlavackova" 897 | ], 898 | "Maximo Gonzalez": [ 899 | "Maximo Gonzalez" 900 | ], 901 | "Martin Alund": [ 902 | "Martin Alund", 903 | "M.Alund" 904 | ], 905 | "Sam Querrey": [ 906 | "Sam Querrey", 907 | "S.Querrey" 908 | ], 909 | "Alison Van Uytvanck": [ 910 | "Alison Van Uytvanck" 911 | ], 912 | "Matthew Ebden": [ 913 | "Matthew Ebden", 914 | "M.Ebden" 915 | ], 916 | "Paul-Henri Mathieu": [ 917 | "Paul-Henri Mathieu", 918 | "P-H.Mathieu" 919 | ], 920 | "Lleyton Hewitt": [ 921 | "Lleyton Hewitt", 922 | "L.Hewitt" 923 | ], 924 | "Anna Tatishvili": [ 925 | "Anna Tatishvili", 926 | "A Tatishvili", 927 | "A.Tatishvili" 928 | ], 929 | "Ernests Gulbis": [ 930 | "Ernests Gulbis", 931 | "E.Gulbis" 932 | ], 933 | "Albert Ramos": [ 934 | "Albert Ramos", 935 | "A.Ramos" 936 | ], 937 | "Benjamin Baker": [ 938 | "Benjamin Becker", 939 | "B.Becker" 940 | ], 941 | "Melinda Czink": [ 942 | "Melinda Czink" 943 | ], 944 | "Madison Keys": [ 945 | "Madison Keys", 946 | "M Keys", 947 | "M.Keys" 948 | ], 949 | "Dudi Sela": [ 950 | "Dudi Sela" 951 | ], 952 | "Francesca Schiavone": [ 953 | "Francesca Schiavone", 954 | "F Schiavone", 955 | "F.Schiavone" 956 | ], 957 | "Jamie Hampton": [ 958 | "Jamie Hampton", 959 | "J Hampton", 960 | "J.Hampton" 961 | ], 962 | "Juan Martin Del Potro": [ 963 | "Juan Martin Del Potro", 964 | "J.Del Potro" 965 | ], 966 | "Irina Falconi": [ 967 | "Irina Falconi" 968 | ], 969 | "Ivan Dodig": [ 970 | "Ivan Dodig", 971 | "I.Dodig" 972 | ], 973 | "Camila Giorgi": [ 974 | "Camila Giorgi", 975 | "C Giorgi", 976 | "C.Giorgi" 977 | ], 978 | "Lucas Pouille": [ 979 | "Lucas Pouille" 980 | ], 981 | "Janko Tipsarevic": [ 982 | "Janko Tipsarevic", 983 | "J.Tipsarevic" 984 | ], 985 | "Lesia Tsurenko": [ 986 | "Lesia Tsurenko", 987 | "L.Tsurenko" 988 | ], 989 | "Albert Montanes": [ 990 | "Albert Montanes", 991 | "A.Montanes" 992 | ], 993 | "G.Elias": [ 994 | "G.Elias" 995 | ], 996 | "Jesse Huta Galung": [ 997 | "Jesse Huta Galung" 998 | ], 999 | "Jo-Wilfried Tsonga": [ 1000 | "Jo-Wilfried Tsonga", 1001 | "J-W.Tsonga" 1002 | ], 1003 | "Denis Istomin": [ 1004 | "Denis Istomin", 1005 | "D.Istomin" 1006 | ], 1007 | "Laura Robson": [ 1008 | "L Robson", 1009 | "Laura Robson", 1010 | "L.Robson" 1011 | ], 1012 | "Mallory Burdette": [ 1013 | "Mallory Burdette", 1014 | "M Burdette", 1015 | "M.Burdette" 1016 | ], 1017 | "Daniel Gimeno-Traver": [ 1018 | "Daniel Gimeno-Traver", 1019 | "D.Gimeno-Traver" 1020 | ], 1021 | "Andrey Golubev": [ 1022 | "Andrey Golubev" 1023 | ], 1024 | "Michal Przysiezny": [ 1025 | "Michal Przysiezny", 1026 | "M.Przysiezny" 1027 | ], 1028 | "Polona Hercog": [ 1029 | "Polona Hercog" 1030 | ], 1031 | "Pablo Andujar": [ 1032 | "Pablo Andujar", 1033 | "P.Andujar" 1034 | ], 1035 | "Marinko Matosevic": [ 1036 | "Marinko Matosevic", 1037 | "M.Matosevic" 1038 | ], 1039 | "Kurumi Nara": [ 1040 | "Kurumi Nara", 1041 | "K Nara" 1042 | ], 1043 | "Santiago Giraldo": [ 1044 | "Santiago Giraldo", 1045 | "S.Giraldo" 1046 | ], 1047 | "James Duckworth": [ 1048 | "James Duckworth", 1049 | "J.Duckworth" 1050 | ], 1051 | "Simone Bolelli": [ 1052 | "Simone Bolelli", 1053 | "S.Bolelli" 1054 | ], 1055 | "Lukas Lacko": [ 1056 | "Lukas Lacko", 1057 | "L.Lacko" 1058 | ], 1059 | "Elina Svitolina": [ 1060 | "Elina Svitolina", 1061 | "E Svitolina", 1062 | "E.Svitolina" 1063 | ], 1064 | "Christina McHale": [ 1065 | "Christina McHale", 1066 | "C McHale", 1067 | "C.McHale" 1068 | ], 1069 | "Shuai Zhang": [ 1070 | "Shuai Zhang" 1071 | ], 1072 | "Jana Cepelova": [ 1073 | "Jana Cepelova", 1074 | "J.Cepelova" 1075 | ], 1076 | "Andreas Haider-Maurer": [ 1077 | "Andreas Haider-Maurer", 1078 | "A.Haider-Maurer" 1079 | ], 1080 | "Lourdes Dominguez Lino": [ 1081 | "Lourdes Dominguez Lino", 1082 | "L Dominguez Lino", 1083 | "L.Dominguez Lino" 1084 | ], 1085 | "Garbine Muguruza": [ 1086 | "Garbine Muguruza", 1087 | "G.Muguruza" 1088 | ], 1089 | "Tamira Paszek": [ 1090 | "Tamira Paszek", 1091 | "T.Paszek" 1092 | ], 1093 | "Sachia Vickery": [ 1094 | "Sachia Vickery" 1095 | ], 1096 | "Donald Young": [ 1097 | "Donald Young" 1098 | ], 1099 | "Tommy Haas": [ 1100 | "T.Haas", 1101 | "Tommy Haas" 1102 | ], 1103 | "Rafael Nadal": [ 1104 | "Rafael Nadal", 1105 | "R.Nadal" 1106 | ], 1107 | "Urszula Radwanska": [ 1108 | "U.Radwanska", 1109 | "U Radwanska", 1110 | "Urszula Radwanska" 1111 | ], 1112 | "Tommy Robredo": [ 1113 | "Tommy Robredo", 1114 | "T.Robredo" 1115 | ], 1116 | "Vesna Dolonc": [ 1117 | "Vesna Dolonc", 1118 | "V.Dolonc" 1119 | ], 1120 | "Su-Wei Hsieh": [ 1121 | "Su-Wei Hsieh", 1122 | "S-W.Hsieh" 1123 | ], 1124 | "Thiemo De Bakker": [ 1125 | "Thiemo De Bakker", 1126 | "T.De Bakker", 1127 | "Thiemo de Bakker" 1128 | ], 1129 | "Igor Sijsling": [ 1130 | "Igor Sijsling", 1131 | "I.Sijsling" 1132 | ], 1133 | "Kevin Anderson": [ 1134 | "Kevin Anderson", 1135 | "K.Anderson" 1136 | ], 1137 | "Viktor Troicki": [ 1138 | "Viktor Troicki", 1139 | "V.Troicki" 1140 | ], 1141 | "D.Brown": [ 1142 | "D.Brown" 1143 | ], 1144 | "Jimmy Wang": [ 1145 | "Jimmy Wang", 1146 | "Y-T.Wang" 1147 | ], 1148 | "Serena Williams": [ 1149 | "S Williams", 1150 | "S.Williams", 1151 | "Serena Williams" 1152 | ], 1153 | "Alex Kuznetsov": [ 1154 | "Alex Kuznetsov" 1155 | ], 1156 | "Yulia Putintseva": [ 1157 | "Yulia Putintseva", 1158 | "Y.Putintseva" 1159 | ], 1160 | "Ying-Ying Duan": [ 1161 | "Y Duan", 1162 | "Ying-Ying Duan" 1163 | ], 1164 | "Jelena Jankovic": [ 1165 | "Jelena Jankovic", 1166 | "J Jankovic", 1167 | "J.Jankovic" 1168 | ], 1169 | "Bradley Klahn": [ 1170 | "Bradley Klahn" 1171 | ], 1172 | "Albano Olivetti": [ 1173 | "Albano Olivetti" 1174 | ], 1175 | "Philipp Petzschner": [ 1176 | "Philipp Petzschner", 1177 | "P.Petzschner" 1178 | ], 1179 | "A Dulgheru": [ 1180 | "A Dulgheru" 1181 | ], 1182 | "K.Edmund": [ 1183 | "K.Edmund" 1184 | ], 1185 | "Blaz Rola": [ 1186 | "Blaz Rola" 1187 | ], 1188 | "Andreas Beck": [ 1189 | "Annika Beck", 1190 | "Andreas Beck", 1191 | "A.Beck" 1192 | ], 1193 | "Irina-Camelia Begu": [ 1194 | "Irina-Camelia Begu", 1195 | "I.Begu" 1196 | ], 1197 | "Julian Reister": [ 1198 | "Julian Reister", 1199 | "J.Reister" 1200 | ], 1201 | "Radek Stepanek": [ 1202 | "Radek Stepanek", 1203 | "R.Stepanek" 1204 | ], 1205 | "Yuliya Beygelzimer": [ 1206 | "Yuliya Beygelzimer" 1207 | ], 1208 | "Pablo Cuevas": [ 1209 | "Pablo Cuevas" 1210 | ], 1211 | "Teymuraz Gabashvili": [ 1212 | "Teymuraz Gabashvili", 1213 | "T.Gabashvili" 1214 | ], 1215 | "Andrea Petkovic": [ 1216 | "Andrea Petkovic", 1217 | "A Petkovic", 1218 | "A.Petkovic" 1219 | ], 1220 | "Lara Arruabarrena": [ 1221 | "Lara Arruabarrena", 1222 | "L Arruabarrena", 1223 | "L.Arruabarrena" 1224 | ], 1225 | "Gael Monfils": [ 1226 | "Gael Monfils" 1227 | ], 1228 | "Alison Riske": [ 1229 | "Alison Riske", 1230 | "A Riske", 1231 | "A.Riske" 1232 | ], 1233 | "I.Andreev": [ 1234 | "I.Andreev" 1235 | ], 1236 | "Mandy Minella": [ 1237 | "Mandy Minella", 1238 | "M Minella", 1239 | "M.Minella" 1240 | ], 1241 | "David Guez": [ 1242 | "David Guez" 1243 | ], 1244 | "Stephanie Foretz Gacon": [ 1245 | "Stephanie Foretz Gacon" 1246 | ], 1247 | "Wayne Odesnik": [ 1248 | "Wayne Odesnik", 1249 | "W.Odesnik" 1250 | ], 1251 | "Anabel Medina Garrigues": [ 1252 | "Anabel Medina Garrigues", 1253 | "A. Medina Garrigues", 1254 | "A Medina Garrigues", 1255 | "A.Medina Garrigues" 1256 | ], 1257 | "Aleksandra Wozniacki": [ 1258 | "A Wozniak" 1259 | ], 1260 | "Guillermo Garcia-Lopez": [ 1261 | "Guillermo Garcia-Lopez", 1262 | "G.Garcia-Lopez" 1263 | ], 1264 | "J.Ward": [ 1265 | "J.Ward" 1266 | ], 1267 | "Sorana Cirstea": [ 1268 | "Sorana Cirstea", 1269 | "S Cirstea", 1270 | "S.Cirstea" 1271 | ], 1272 | "Marin Cilic": [ 1273 | "Marin Cilic", 1274 | "M.Cilic" 1275 | ], 1276 | "Blaz Kavcic": [ 1277 | "Blaz Kavcic", 1278 | "B.Kavcic" 1279 | ], 1280 | "Guillaume Rufin": [ 1281 | "Guillaume Rufin", 1282 | "G.Rufin" 1283 | ], 1284 | "Filippo Volandri": [ 1285 | "Filippo Volandri" 1286 | ], 1287 | "Irena Pavlovic": [ 1288 | "Irena Pavlovic" 1289 | ], 1290 | "Thomaz Bellucci": [ 1291 | "Thomaz Bellucci" 1292 | ], 1293 | "Adrian Ungur": [ 1294 | "Adrian Ungur", 1295 | "A.Ungur" 1296 | ], 1297 | "Alexandr Dolgopolov": [ 1298 | "Alexandr Dolgopolov", 1299 | "A.Dolgopolov" 1300 | ], 1301 | "Fabio Fognini": [ 1302 | "Fabio Fognini", 1303 | "F.Fognini" 1304 | ], 1305 | "Lukasz Kubot": [ 1306 | "Lukasz Kubot", 1307 | "L.Kubot" 1308 | ], 1309 | "Marina Erakovic": [ 1310 | "Marina Erakovic", 1311 | "M.Erakovic" 1312 | ], 1313 | "Bojana Jovanovski": [ 1314 | "Bojana Jovanovski", 1315 | "B Jovanovski", 1316 | "B.Jovanovski" 1317 | ], 1318 | "Horacio Zeballos": [ 1319 | "Horacio Zeballos", 1320 | "H.Zeballos" 1321 | ], 1322 | "Adrian Mannarino": [ 1323 | "Adrian Mannarino", 1324 | "A.Mannarino" 1325 | ], 1326 | "Jordan Thompson": [ 1327 | "Jordan Thompson" 1328 | ], 1329 | "Yanina Wickmayer": [ 1330 | "Yanina Wickmayer", 1331 | "Y.Wickmayer" 1332 | ], 1333 | "Bernard Tomic": [ 1334 | "Bernard Tomic", 1335 | "B.Tomic" 1336 | ], 1337 | "Vania King": [ 1338 | "Vania King", 1339 | "V.King" 1340 | ], 1341 | "Vasek Pospisil": [ 1342 | "Vasek Pospisil", 1343 | "V.Pospisil" 1344 | ], 1345 | "Venus Williams": [ 1346 | "V Williams", 1347 | "Venus Williams" 1348 | ], 1349 | "Martin Klizan": [ 1350 | "Martin Klizan", 1351 | "M.Klizan" 1352 | ], 1353 | "Angelique Kerber": [ 1354 | "Angelique Kerber", 1355 | "A Kerber", 1356 | "A.Kerber" 1357 | ], 1358 | "M.Larcher De Brito": [ 1359 | "M.Larcher De Brito" 1360 | ], 1361 | "Leonardo Mayer": [ 1362 | "L.Mayer", 1363 | "Leonardo Mayer" 1364 | ], 1365 | "Illya Marchenko": [ 1366 | "Illya Marchenko" 1367 | ], 1368 | "Jarkko Nieminen": [ 1369 | "Jarkko Nieminen", 1370 | "J.Nieminen" 1371 | ], 1372 | "E.Cabeza Candela": [ 1373 | "E.Cabeza Candela" 1374 | ], 1375 | "Maria-Teresa Torro-Flor": [ 1376 | "Maria-Teresa Torro-Flor", 1377 | "M.Torro-Flor" 1378 | ] 1379 | } 1380 | -------------------------------------------------------------------------------- /tennis/requirements.txt: -------------------------------------------------------------------------------- 1 | mergic==0.0.4.1 2 | python-Levenshtein==0.12.0 3 | -------------------------------------------------------------------------------- /tennis/tennis_mergic.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import re 4 | import Levenshtein 5 | import mergic 6 | 7 | 8 | def first_initial_last(name): 9 | initial = re.match("^[A-Z]", name).group() 10 | last = re.search("(?<=[ .])[A-Z].+$", name).group() 11 | return "{}. {}".format(initial, last) 12 | 13 | 14 | def distance(x, y): 15 | x = first_initial_last(x) 16 | y = first_initial_last(y) 17 | return Levenshtein.distance(x, y) 18 | 19 | 20 | mergic.Blender(distance).script() 21 | --------------------------------------------------------------------------------