Show HN: Using stylometry to find HN users with alternate accounts (stylometry.net)

676 points by costco ↗ HN
Author here. This site lets you put in a username and get the users with the most similar writing style to that user. It confirmed several users who I suspected were alts and after informally asking around has identified abandoned accounts of people I know from many years ago. I made this site mostly to show how easy this is and how it can erode online privacy. If some guy with a little bit of Python, and $8 to rent a decent dedicated server for a day can make this, imagine what a company with millions of dollars and a couple dozen PhD linguists could do.

Here's Paul Graham:

https://stylometry.net/user?username=pg

Here are some frequent HN commenters: (EDIT: Removed due to privacy concerns)

561 comments

[ 3.0 ms ] story [ 353 ms ] thread
(comment deleted)
Why are some users bold?
The non-bold are dead accounts I think
It isn't due to a mere property of the user, as, for example, cushman is not bold as the #2 result for tptacek but is bold as the #2 result for icambron.
FYI, the GP said above that bold usernames are those for which symmetry holds (ie they're both in each other's top ten).
Say you see user2 listed in bold on user1's page. That means that user1 is also in user2's top 20 users. In my experience it is often an indicator of a good match (but not always). I should probably explain that on the site.
Instead of making it binary, you could use a gradient indicating the strength of the mutual correlation (like how HN colors downvoted comments).
(comment deleted)
I tried it on a few user-ids that I strongly suspected were owned by the same person. My hunches stand corroborated. Not sure who is corroborating whom though, me or the script.

Good job.

Of the top ten accounts listed for my name two of them are me.
I only got 0.9999999999999992 for myself :(
Oh wow, it's really sure that I'm stavrosk, which I am:

https://stylometry.net/user?username=stavros

The next person is 30% less certain, that's huge! This would basically identify any alt I might have with near certainty.

stavrosk doesn't have any posts/comments? What's it using to match?
It's my old username.
Huh... seems there are some inconsistencies between what's presented on news.ycombinator.com and the Firebase API. Glad it matches for you though :)
I guess they just didn't go back and reparse, not a big problem. I don't think people change their username frequently :P
(comment deleted)
Funny thing is, it thinks I'm you, but it doesn't think you're me!

https://stylometry.net/user?username=rogual

I'd have thought this stylometry thing would be commutative.

I guess it's a multidimensional space, so you can have someone closer to you than me, but they aren't also closer to me than you. Basically, they're close to you, but on the "other side" of me, I guess?
Don't need multiple dimensions for that.

0.1, 0.2, 0.3, 1.0, 2.0

To 2.0, 1.0 is closest.

To 1.0, 0.3, 0.2 and 0.1 are closer.

Thanks, seems obvious when you put it like that.
The word you are looking for is "symmetric".
I wonder what's a reasonable threshold for "probably the same person". I've never had an alt on HN, and when I searched myself, it found 3 other users above 0.6, none of whom I've ever heard of before.
(comment deleted)
If it's >0.9 is you can almost guarantee it's an alt but I've seen certain matches at 0.6. The problem is writing styles change over time. Another idea I had was converting the scores which are just cosine similarity scores into percentiles (so 0.99 would be 99th percentile of certainty) to make them more human interpretable.
The people at 0.4-0.6 with me do share some interests. That's cool on its own.
I make new accounts every so often and the accounts of mine that it found have a score of around 0.3. I'm not actively trying to defeat stylometry but it's possible I just have a particularly unremarkable writing style.
Well I must be stereotypical myself because it found me at 0.8 !
>The problem is writing styles change over time.

Will be interesting if we could plot the writing style divergence over time.

I got matched with my old account with a score of only 0.45
Interesting. The highest non-me account is under 0.4 on my page. I do not believe that I have such a unique writing style - especially since half my posting is on mobile and therefore possibly slightly different than my desktop posts.
My closest is 0.4879. I know I tend to be wordy but I thought I had a pretty generic style as well. This is definitely a fascinating demonstration.
Feeling better about my high of 0.49 now
I have no alts. The highest match for me is about 0.66.
0.6 is not high enough to indicate an alt
On the how to avoid section: Isn't running comments through a randomised translator a few times then back considered a countermeasure also?

Also think it's probably poor form to list users as examples without their permission.

> On the how to avoid section: Isn't running comments through a randomised translator a few times then back considered a countermeasure also?

Yes.

> This may be out of line but isn't pg on here with a different username, Levenschtein distance of one that's not included? Or is that just a very motivated 13yo account who writes a lot of admin-esque comments.

What other pg account are you referring to? I want to see it so I can see what my algorithm missed.

> Also think it's probably poor form to list users as examples without their permission.

You're right. I'll remove that - I just wanted some examples especially for people on phones who don't feel like typing. Thanks for the feedback.

It would be convenient if the usernames linked to the comment pages on Hacker News (to avoid having to copy/paste and URL hack, which is made even slightly more annoying because for some reason when I tap and hold the usernames to copy them your markup--I haven't looked at why yet--is causing an extra space character to get copied on the left).
Not today.

You fail, I win.

Nice. Just out of curiosity are you taking any countermeasures or varying your writing style across accounts in any way?
My second closest match was 0.35 but searching people where they have matches 0.5-0.75 I suspect that's mostly to do with number of posts leading to better statistics.
yeah I vary my writing styles. Much of the stuff I post through this account is controversial, to say the least. So I have to take "measures".
This is creepy.
I think the word you are looking for is uncanny
pretty cool- i think there should be a term for two accounts that have each other as the top most similar account. kinda sad i dont have one :(
We’re pretty close me and you — closer than my actual alts
hello friend! but... id never use an m dash
Well… I would never use a lowercase word after an exclamation point!

…Because I’m on mobile

Make a fundraiser and start doing it for other sites.
It would be possible for Reddit because Pushshift.io archives all the comments there and Reddit is still pretty small. I'd probably need to make things a lot faster. Doing it on a specific subreddit would be very feasible. I'll think about it but I don't actually know if I really want to do that because for instance I've been banned from subreddits before but I don't want a ban from when I was 12 years old to follow me around forever because my writing style hasn't changed. Moderation is the most obvious application of this kind of software.
> I'll think about it but I don't actually know if I really want to do that because for instance I've been banned from subreddits before but I don't want a ban from when I was 12 years old to follow me around forever

Insightful that your personal experience and impact on you personally affects your decision. I invite you to think about the impact of the products you build in your CS career by putting yourself in the shoes of other people as well.

Some products should not be built, even though it's easy to build them.

What other easily-built products do you think should not exist?
It would be nice to make the names clickable.

I don't think the list of pg alternate account is accurate. I checked a few. They have many oneliners that is typical of pg, but the topics and style don't look similar.

I searched a few more and got better results. :)

I searched myself (that I know that I have no alternate accounts). I recognize a few users that are interested in similar topics, and I discuss/upvote them many times. But I didn't recognize most of the user of the list.

> I searched myself (that I know that I have no alternate accounts). I recognize a few users that are interested in similar topics, and I discuss/upvote them many times. But I didn't recognize most of the user of the list.

It's based purely off frequency of the 200 most common English 1 word phrases, 2 word phrases, 3 word phrases, 1 character sequences, 2 character sequences, and 3 character sequences. Topic does not really have anything to do with it. If I had more time I probably would've done a smarter model that accounted for things like that.

One is also a mathematician. It's trivial that we overuse some technical words even if it's unnecessary.

Another is form Argentina, so I guess the native language leaks, for example using words derived from latin that are not idiomatic.

And there are a few more, that is a honor to be "confused" with, but I have no clue why.

(comment deleted)
(comment deleted)
Well done, it found my ancient old account.
Amusingly can't run it on the author since not enough comments
My nearest match is only at 0.406. It'd be interesting to see who the most unique commenters are, but it's also quite possible it wouldn't be flattering.
0.35 is my nearest. In hopes of lowering it even further, here are some nonsensical opinions never expressed on HN before: 1) Programming peaked with COBOL 2) Paul Graham is responsible for 90% of SIDS cases 3) There's no reason to use car when cdr exists.
0.2506 is my nearest match
That's the lowest I've seen yet. You must write uniquely :)
Hmmm, doesn't seem to work. But you have convinced me (and many others?) to search our alts consecutively and so now do know who has alts?
totally on spot

my current and my old account

Sticking myself in (I haven't ever had another account) my closest match (at 0.43) is the maintainer of an Open Source project which I have occasionally commented about. They are also British, as am I.

My guess is that as they commonly mention the project and I have on a number of occasions, that has formed the link. Plus maybe usage of common British terms, but that seems far less significant.

It's super interesting!

It would be good if there were more controls to filter the type of words and language that are used for the matching algorithm. So you could say exclude words not in the dictionary. I wander how that would effect my link with this other person.