Fixing data inconsistencies
Since this dataset is already organised in a table, you can leverage standard SQL functions to perform a large part of the cleanup.
A record seems to be composed of 4 fields, for example:

university name, city, state, country
stanford law school - stanford - ca - united states of america


You could follow these steps to get a cleaner representation of this dataset:


Starting with the highest level (country), find unique values use it to identify all similar sounding words by listing soundex matches with itself (build a join query of the table with itself).
Use these suggested similar matches to fix all mistakes by updating the names.
Continue in this manner till you've fixed all four fields.
Identify missing states by using the city name to query the correct state from the rest of the table; if state and country are missing for "leland stanford junior university", then use the city name "stanford" to join it with itself and get the state/country name from the other records in the table.
For the university name, identify all abbreviations using grep to search for words ending in a dot character. Replace them with full expansions.
Next, breakup the university name into individual words and dump these into a temporary table in a single column. De-duplicate the values in the column so it only contains unique values.
Run the same soundex matching join query as in step 1 to identify similar sounding names, append these suggested similar names in a second column of the temp table.
Manually do a quick sanity check of what you've obtained as suggestions and delete any invalid matches.
Write a procedure to replace the words in each university name with suggested replacements, and you will have a much cleaner dataset.