Settings

Theme

Twss.js

github.com

305 points by nezzor 14 years ago · 54 comments

Reader

tibbon 14 years ago

Now I'm just waiting for someone to make a Twitter bot that randomly samples tweets and responds to them with this...

notb 14 years ago

I think your negative sample set is a little biased. Since all the phrases start with verbs like "was in the car" or "went to the park", these kinds of phrases are given lower probabilities.

For example:

    > twss.prob("was on a stiff pole");
    0.016050826334564946
Only 1.6% chance of that's what she said?!?

EDIT: Counter example:

    > twss.prob("that's one stiff pole");
    0.9767718880285885
blahpro 14 years ago

Related: http://www.quora.com/How-would-you-programmatically-parse-a-...

driverdan 14 years ago

An interesting (and funny) exercise.

For those interested in neural networks and Bayesian classifiers check out the brain.js library: http://harthur.github.com/brain/

It works in both node and the browser.

yuvadam 14 years ago

A while back I was interested in implementing a much less naive algorithm for classifying TWSS expressions, based on this [1] paper. Never actually got around to finishing the work.

Interesting problem though, and nice work.

[1] - http://www.cs.washington.edu/homes/brun/pubs/pubs/Kiddon11.p...

adam_albrecht 14 years ago

Well that open source project left me satisfied and smiling

TwistedWeasel 14 years ago

Soon to be implemented in all IRC bots the world over

bjornsteffanson 14 years ago

This is probably the first time I've understood node.js.

VolatileVoid 14 years ago

I was wondering if anyone knew of a place where I could learn about this stuff in general. I know nothing about unigrams, bigrams, trigrams, tf-idf, Bayesian filtering, etc. Maths - while not awful - is not my strongest point, but I think I could grok a well-written tutorial to this stuff (with code examples!).

I was hoping/wondering if anyone knew of sites I could start learning about this from? I find this very interesting, and I'm sure it could be highly useful and applicable to many different types of problems...

zeratul 14 years ago

DanielRapp: in file twss.js/lib/classifier/knn.js, number of NN should be odd to prevent ties [EDIT: also, NN should be large enough to prevent over-fitting; small NN would mean that the difference (decision boundary) between twss and not-twss is highly non-linear; you need to implement cross-validation to find best NN]

Note to self: machine learning using node.js; what's the speed of calculations, what's the memory management in node.js, can I find pure JS implementation of SVM?

donohoe 14 years ago

I'm still looking for a classifier that will take a phrase, determine if and what the "In Soviet Russia X Y you" response would be.

Anyone?

  • samg_ 14 years ago

    I don't think that would be a classifier, or at least not reasonably. You could have "In Soviet Russie X Y you" for each X,Y as your classes, but that would be unreasonable.

    Yakov Smirnoff is a structural joke. You would need to parse sentences, pattern match, transform it, and then do some kind of regression on the phrase to get its humor quotient.

    The Stanford Parser for structural parsing, then some custom pattern matching and transforming code, might get you somewhere.

  • aidenn0 14 years ago

    A first approximation might just taking the simple permutation's such as

    You can X Y <-> Y X you

    and find the probability that it is an english sentence

phreeza 14 years ago

Has anyone thrown this on a web server with a simple interface?

mckoss 14 years ago

MRI's have shown that humans are able to do this because of a dedicated site in the brain called "Scott's region". Once activated, this linguistic region is constantly searching for linguistic cues, surfacing signals to our conscious thoughts when the cues are strong enough.

tnorthcutt 14 years ago

I've seen a Siri proxy TWSS implementation: http://www.youtube.com/watch?v=p4LamngB070

jfriedly 14 years ago

We made our IRC bot respond to TWSS jokes, but ours was just a dumb match from a set of few thousand jokes that we scraped from offline. You can look at the code at: https://github.com/jfriedly/jenni

Now that I took Stanford's Machine Learning class though, I think I might just duplicate what this guy did for our bot.

Zelphyr 14 years ago

While it seems on the surface like a waste of time (albeit amusing one), I actually expect this is a great project to learn from because of its use of Bayesian classifiers.

In other words, I'm TOTALLY going to be using this on my next project.

mertd 14 years ago

The training data is pretty funny. I suppose he collected it from an online TWSS thread.

radikalus 14 years ago

Great start -- interesting to watch it go vs the twitter stream. (If you restrict to < 8 word tweets)

loganlinn 14 years ago

Looks like this could easily be integrated into a script for Hubot

tibbon 14 years ago

I've never had a script do that for me

tlrobinson 14 years ago

What exactly is Node.js specific about this?

  • ricardobeat 14 years ago

    Using exports, NPM package, and an executable that depends on /usr/bin/node? What's your point?

    • tlrobinson 14 years ago

      I just hate when people release JavaScript libraries that needlessly depend on specific platforms. For awhile that dependency was usually jQuery, then with the rise of server-side JavaScript it was the DOM in general, now it appears to be Node.js.

      Just write "X for JavaScript", dammit.

      That said, this doesn't appear to have any Node.js specific dependencies, it could be used in any CommonJS environment.

      • DanielRapp 14 years ago

        The reason I chose node over "browser-js" is because it was originally going to be a Twitter bot, but decided to simplify the GitHub repo into just a node module to make it more useful.

        But you're totally correct. This could've easily be written in any language.

      • ricardobeat 14 years ago

        The source is open and it is really easy to port it to the browser, so this shouldn't warrant a complaint. Each one works with what he feels more comfortable with.

aithleyadeno 14 years ago

goo.gl/39SLa

TWSS 14 years ago

I approve this post.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection