Removing sensitive information from a dataset while retaining its usefulness for machine learning tasks?
There are lots of solutions to this problem and both of them would allow you to release the dataset. There are in general, two factors that are of importance, the first, whether the method is error prone or not and secondly, whether it is time consuming or not.

The first, being a simpler and dependent solution. If you have a dictionary of names that you maintain, in your database, what you can do is search for whether the given word is a substring of a name (probably through a trie search) and then, check to see if it's a name in your database. If it is, replace it with some string, something even as easy as "Name101" would be easy to accomplish. The same can be done for geographical locations and other possibly sensitive data. This is a non-error prone and time saving method.

If you haven't done the former, there is a solution, however, it's a natural language processing technique called Named Entity Recognition (https://en.wikipedia.org/wiki/Named-entity_recognition), where you can detect if a given word is a name, location or anything that could be worth hiding. However, please understand that this method is not guaranteed to succeed, it may hide most of your data, but it is not guaranteed to hide all of it. This is time saving but certainly error prone.

The last possible alternative is to actually comb through the data yourself and make sure that you've changed all of the names. This is an error prone and time consuming technique.

Ultimately, you can use any of these to accomplish the tasks, but some of them are possible given your method of data collection, or your data pipeline.