Ask HN: Can Google aggregate everything you've ever posted anonymously online based on writing style?
I'm just asking about Google because they're in such a good position to do it.
Is any private company doing it? It'd be neat if there was a web site that you could submit some writing samples (emails or whatever) and then see everything else that person has posted online (regardless of whether it was anonymous or not).
I'm sure there's no way to do it with total accuracy, but with enough input shouldn't it be possible to be highly accurate?
Anyone know of any software that can take a large number of writing samples and determine who wrote which ones?
If not, how would you go about creating it?
33 comments
[ 3.0 ms ] story [ 76.3 ms ] threadI have a few writing ticks (parens, the '--', certain words like 'certain') but it's much easier to just search on "aristus" to start exposing my shame.
I played with this a few years ago with a project called unmaskr. Heuristics can help precision a lot but does not help with recall. People generally:
However, if the data is sufficiently large - in number and length (say, lots of essay-type blog posts) I'd expect some classifier-based machine learning techniques could match authors. That is, take a sample of 100 bloggers, split their data in half, train the classifiers on one half then test to match up the other half of the data. Under those conditions you could probably get 90-95% accuracy.
The question, I think, is how small you could push the training set in terms of the fewest words and the fewest posts.
Basically, I scraped the site, removed formatting/spacing/dead-words, stemmed (using a modified porter), constructed a matrix of word-frequencies per post. After which I did several various analytical techniques (statical, geometric, etc). The net result from using a blended method was able to identify several most aliases of board posters However, the issue google would no doubt have is sampling size. In a small enough sampling size quirks work as identifying characteristics, in a larger dataset you would no doubt see clusters of people who have similar backgrounds (e.g. education).
Everyone thinks "Aha, you have some catchphrases" (I do) or "Aha, you were one of the only Republicans and thus someone saying 'death tax' was more likely you" (true) or "You cited nationalreview.com more than the rest of the forum together" (true), but it turns out the distribution of really stupid stuff (stopwords, essentially) works better.
This is ironically the same they've discovered for making female/male authorship decisions, although I never went the next step and said "So what relationship does my distribution have with the average guy distribution?"
Incidentally, here's the reason you'll never have to worry about this in the context of "Google the Internet for everything Patrick McKenzie has ever written": imagine I have a 99.9% effective filter for you, and I dragnet an Internet filled with 5 billion documents of which you've written 1,000. I then identify 5 million documents as written by you... but you only wrote 1,000 of them.
This sort of "don't search the haystack unless you're bloody sure it is packed full of needles" thing is why you never want to test a population not known to be at risk for the disease, etc. (Or why you retest in the event of a positive using a different test.)
To quote Salute Your Shorts, get it right or pay the price.
It cost you 2 karma points, because I'd otherwise have voted you up for an otherwise high-quality post.
Rash, knee-jerk reactions are often a social liability, which reminds me of a funny bar anecdote:
Guy: So, you're waiting for someone?
Girl: Yeah, some college friends. They're an hour late. Oh my... Boy, friends can be really rude sometimes.
Guy: Tell me about your sister. How old is she?
Girl: What?
Guy: Sorry, I heard the words "my boyfriend" and--
(Girl walks away.)
That's not true. Estate tax rules affect gifts during one's own lifetime as well.
Everyone does have a writing fingerprint, contrary to what another person claimed. However, it is an open question whether it can be efficiently extracted.
The basic idea for constructing a fingerprint is this. Consider two words that are nearly interchangeable, say 'since' and 'because'. Different people use the two words in a differing proportion. By comparing the relative frequency of the two words, you get a little bit of information about a person, typically under 1 bit. But by putting together enough of these 'markers', you can construct a profile.
The beginning of modern, rigorous research in this field was by Mosteller in Wallace in 1964: they identified the author of the disputed Federalist papers, almost 200 years after they were written (note that there were only three possible candidates!). They got on the cover of TIME, apparently. Other "coups" for writing-style de-anonymization are the identification of the author of Primary Colors, as well as the unabomber (his brother recognized his style, it wasn't done by statistical/computational means).
The current state of the art is summarized here. http://www.stat.rutgers.edu/~madigan/AUTHORID/bibliography.h... If you're going to do any work on this, you should read as many of those papers as you can. Or else you'll invent something feindishly clever only to find that some academic already wrote about it 20 years ago and showed why it doesn't work.
Now, that list stops at 2005, but I'm assuming there haven't been earth shattering changes since then. I'm familiar with the results from those papers; the curious thing is that they stop at corpuses of a couple hundred authors or so -- i.e, identifying one anonymous poster out of say 200, rather than a million. This is probably because they had different applications in mind, such as identification within a company, instead of Internet-scale de-anonymization. Note that the amount of information you need is always logarithmic in the potential number of authors, and so if you can do 200 authors you can almost definitely push it to a few tens of thousands of authors.
The other interesting thing is that the papers are fixated with 'topic-free' identification, where the texts aren't about a particular topic, making the problem harder. The good news is that when you're doing this Internet-scale, nobody is stopping you from using topic information, making it a lot easier.
So my educated guess is that Internet-scale writing style de-anonymization is possible. However, you'd need fairly long texts, perhaps a page or two. It's doubtful that anything can be done with a single average-length email.
Another potential de-anonymization strategy is to use typing pattern fingerprinting. The timing between our keystrokes fingerprints each of us (yes, this works even for non-touch typists.). This is already used in commercial products as an additional factor in password authentication. However, the implications for de-anonymization have not been explored, and I think it's very, very feasible. i.e, If google were to insert javascript into gmail to fingerprint you when you were logged in, they could use the same javascript to identify you on any web page where you type in text even if you don't identify yourself. Now think about the de-anonymization possibilities you can get by combining analysis of writing style and keystroke dynamics...
By the way, make no mistake: the malicious uses of this far overwhelm the benevolent uses. Once this technology becomes available, it will be very hard to post anonymously at all. Think of the consequences for political dissent or whistleblowers. The great firewall of China could simply insert a piece of javascript into every web page, and poof, there goes the anonymity of everyone in China.
As for who's doing this? Goo...
PS: Changed "extremely low" to poor just in case.
The standard procedure to do this, is to chain translations to other languages and back. The message remains, but the wording will pick up some noise.
It seems true that everyone has a "writing fingerprint" but is it not the case that it would change over time? For example, is it not likely that my writing style at present is more similar to that of another person on the Internet than it is to my own style 7 years ago? Moving targets would complicate Internet-scale de-anonymization considerably, because you'd have to take "ancient" Usenet posts with a grain of salt. This would be even harder if people learned to mask their writing style, perhaps using "translators" designed to thwart the de-anon technologies.
Note that the amount of information you need is always logarithmic in the potential number of authors, and so if you can do 200 authors you can almost definitely push it to a few tens of thousands of authors.
This makes sense from an information-theoretic, big-picture standpoint, but I'm guessing that the amount of actual data (measured in text, not information content) per candidate required to identify an author among N candidates is somewhere between O(log N) and O(N)-- my bet would be O(N^k) where 0 < k < 1. The reason is that, while your "since/because" example might be a great fingerprinting measure, there are only a small number of great (high information content) measures like this, then there are some few higher-hanging fruit, then a lot of scraps. It seems that any attempt to identify an unknown person among 1M+ candidates is going to require using the scraps, and it's not clear how much information content there is in them.
http://www.pbs.org/wgbh/pages/frontline/homefront/
Using writing style seems a little far fetched given the limited scope of variations in language relative to the large number of people using language. Otherwise it would not have taken so long for effective speech recognition software to appear - even the current incarnations are more fragile than one would expect relative to how long the best minds have been looking at the problem and relative to the high economic value of an effective solution.
Actually, I think if someone really tried to do what the original question asked, then it would end up with under 100 different "people" who all seemed to cluster together. All of HN would be something like 2 or 3 different clusters.