# one-hot classify data depending on given classes

I'm trying to figure out if i can make a neural network that is able to match misspelled names together. So for example, Jon Smit and John Smith are probably the same person.

I've already gotten the most simple implementation that i could think of running, which is a neural network that takes several stringdistance metrics between a dyad of names as input and outputs a 1 or 0 to determine whether it's a match or not.

Here's an example of what my current network does:

1. Take "Jon Smit" and "John Smith"
2. Calculate the features (levenshtein distance, cosine distances, n-gram distances)
3. The features will be something like (0.98, 0.95, 0.88, 0.78, 0.99)
4. Run the model
5. Output = 1, names are a match

Or a negative example:

1. Take "Jon Smit" and "Tom Holland jr."
2. Calculate the features (levenshtein distance, cosine distances, n-gram distances)
3. The features will be something like (0.25, 0.34, 0.18, 0.50, 0.23)
4. Run the model
5. Output = 0, names are not a match

This implementation is severely limited. The biggest limitation for me is that the network can not decide a single most probable match if i give it a list of names to choose from. It can only say for each pair of names whether it's a yes or no.

This makes it impossible for the network to tell me whether "Joan Lindberg" is referring to "Jonah Lindberg" or "Joanne Lindberg". It's easy to see that one is a better match than the other, but my network can only output a yes or a no.

Is there a way to have a neural network decide on the best match, given a set of possibilities?

edit: to clarify, this needs to work for any list of possibilities that is fed into the network. So essentially, i want a categorical model with a variable amount of categories.

• What is the NN architecture? How does it classify True / False? Jul 17, 2021 at 7:38