Could you use something like a convolutional deep net -- in it should have similar low-level features to things you have read, but low scores on higher parts of the network?
I mean, if you generated one for each class of people, you'd probably find that there are easier statistical trends, but conceptually.
In fact, now that I think about it a bit more, you likely could use something like the Netflix algorithm and very broadly read people, who overlap on what you have read, then look for books they've read that score lowest on similarity to things you've read based on inverting the scoring mechanism.
It wouldn't be perfect, but with some tuning you could probably make that work as a simpler model than the DNN one.