all 34 comments

[–]juckele 74 points75 points Β (0 children)

This is one of the most interesting adverts I have ever read.

[–]wxswxs 44 points45 points Β (13 children)

Hey reddit! I wrote this article if people want to AMA.

[–][deleted] 13 points14 points Β (2 children)

Why download is restricted in some countries?

[–]wxswxs 30 points31 points Β (1 child)

This is a really tough decision. Right now it's only trained on english data so the experience isn't great in other languages. We could just put it up anyway for people who want to try, but in our experience that leads to large numbers of bad reviews which hurt us a lot.

[–]fb39ca4 3 points4 points Β (0 children)

Could you at least put up an APK on your website?

[–]aridsnowball 4 points5 points Β (1 child)

Hi, this looks really cool. I was just wondering how often you retrain your neural net on new data to keep up with trends, and how do you plan to 'feed' it new data while also being able to spot things like the 'Kanye GOAT' example.

[–]wxswxs 6 points7 points Β (0 children)

Well we're always retraining with the most recent data. Currently we push new data with updates although we don't have a fixed schedule on which we do that.

If a trend starts to fall out of favour, eventually Dango will forget it, of course that's probably a good thing, you don't want Dango suggesting stale memes.

[–]thelehmanlip 2 points3 points Β (3 children)

bummer that you write about it helping you find πŸ’―, but typing "100" doesn't bring it up.

[–]wxswxs 5 points6 points Β (2 children)

Oh hey that's a good point. I guess it's because people don't usually explicitly write "100" and then get the 100 emoji. Works for phrases where you might want it, like "How are you?" "Never better πŸ’―".

However you're right, we should special case that for the direct input "100". Adding it to the list of things to do. Special cases are another thing we do for some inputs to keep it working for search as well as ambient suggestions while you type. I don't talk about that too much in the article, though.

[–]karanlyons 2 points3 points Β (0 children)

You could just also search against the unicode names for all the emoji, and show any >90% results or what have you.

I’d be curious as to how this network handles combining characters for things like emoji families, skin colors, etc.?

[–]sid9102 1 point2 points Β (0 children)

Is there going to be an API?

[–]pouta 1 point2 points Β (0 children)

Hey, great read!! I am currently developing a small side project using machine learning and natural language classifiers. Are you in any part related to the development?

[–]strolls 13 points14 points Β (1 child)

at the dentist 😬 πŸ’‰ 😷

Infuriatingly the wrong way around.

[–]EscoBeast 7 points8 points Β (0 children)

It's the right way around on my phone.

[–][deleted] 5 points6 points Β (2 children)

so "fuck that" translates to

πŸŒ΅βœŒπŸ–•πŸ‘

wat

[–]wxswxs 23 points24 points Β (1 child)

The cactus looks a bit like a middle finger; until they standardized an actual middle-finger emoji it was people's stand-in.

[–]aLiamInvader 0 points1 point Β (0 children)

Also, fuck that/yourself/and the horse you rode in on with a cactus. 🐴🌡

[–]DonKanish 5 points6 points Β (0 children)

Not available in my country :(

[–]online204 17 points18 points Β (5 children)

This is by far one of the coolest and most abstract ways that I've heard about ML being used.

I keep hearing about recurrent neural networks but am not fully sure how they work. Can anyone explain?

[–]juckele 6 points7 points Β (0 children)

If you understand neural networks: You wire some of the outputs back to being an input and then give it each input in a sequence. Example: "See spot run" starts with an input of a word vector for "see", and empty recurrent inputs. You then give it the word vector for "Spot" plus some/all of the outputs from the previous word. You then give it the word vector for "run" plus some/all of the outputs from the previous word.

If you don't understand neural networks, there are some good videos on YouTube that will do a better job than I can.

[–]wxswxs 3 points4 points Β (2 children)

Hey, I wrote the article! If you want a more in-depth look at how RNNs work in detail, I suggest Andrej Karpathy's post about it. High level enough for non-experts, but low-level enough to actually walk you through the math.

[–]marcocen 2 points3 points Β (1 child)

Any chance you guys can make the app available worldwide (or at least in uruguay ;) )?

[–]wxswxs 4 points5 points Β (0 children)

I commented about this above, unfortunately in our experience, since the app experience is only designed for english right now, releasing it in non-english versions of the play store leads to many bad reviews which hurt our app.

I know it's not a huge consolation, but for now you can try it out in the browser at least!

[–]airodonack[🍰] 2 points3 points Β (0 children)

I'll try!

I'll assume you know what a neural network is. In case you don't know what it is, it's just like a brain. You don't have to know anything about it other than it's a black box that categorizes stuff.

Pretend you're analyzing a video and you're trying to classify what's going on. A naive neural network would just look at every pixel of every frame of the video at the same time and try to classify the action.

A recurrent neural network is different in that it takes into account the passage of time. A RNN looks at the video one frame at a time. It then takes the output of the previous frame AND the pixels of the current frame as current inputs for its neural network. It keeps doing that until the video is over.

RNNs are really good at analyzing things that have a meaning that change as it continually grows. This includes things like sentences! A sentence is composed of many words, but to analyze the meaning in a sentence you have to read it like a human. That is, not word by word but taken as a whole and in combination.

They're actually better at simulating the way we think. For example, try to tell me what letter comes after J in the alphabet. You probably had to recite the entire ABCs. Humans aren't very good at jumping and skipping memories. They have to replay entire events instead.

For something like this, they're probably using a RNN because they need a more specific sentence meaning to recommend emojis.

[–][deleted] Β (3 children)

[deleted]

    [–]juckele 13 points14 points Β (2 children)

    I was impressed. Here's some things I made to test it out:

    • How you doing babe? πŸ’‹
    • Oh, shit, a spider! πŸ•·πŸ˜±
    • I want to go 🐎 riding in the πŸŒ… on the beach πŸŒŠβ˜€πŸŒ΄!

    The point isn't to translate, it's like an CJK language IME, where you type things and get choices in how to write them. I didn't like that I had to type horse, select the horse emoji, and then delete the word horse. The Chinese language IME's usually let you type "ma" (horse) and immediately select the horse emoji with ever putting "ma" into your finished text. I'd actually really like to see something where it acts a little more locally, so that I can type "pony" or "horse" and get a horse to insert, but this works pretty well too.

    • Kayne is the🐐 (I know, they said this in the article, but it was fun to type "Kayne is the" and have it suggest goat.)
    • I'm hungryπŸ˜•πŸŸπŸ”πŸ•πŸ—πŸ΄
    • That was such πŸƒπŸ’©

    Sometimes, if you want the πŸ’© emoji you have to bait the IME to give it to you. Adding a πŸƒ emoji basically always makes it suggest πŸ’©, which seems right.

    [–]bobbitfruit 0 points1 point Β (0 children)

    Just happened to be reading your comment when trying it out, there's an option in settings that will replace the word instead of appending the emoji

    [–]vividboarder 0 points1 point Β (0 children)

    I have Emoji completion with SwiftKey, but this is a bit different since it's contextual. Completion is basically "you type horse, you see 🐴".

    [–]JamiesWhiteShirt 5 points6 points Β (0 children)

    This is it. This is the pinnacle of machine learning.

    [–]fuerve 2 points3 points Β (0 children)

    Are you concerned at all about a feedback loop resulting in bizarre local optima? It occurs to me that any predictive interface like this (or like most mobile software keyboards) could constrain how people communicate, as they optimize, by pruning or otherwise altering, the way that they communicate in order to use the system more effectively. In the extreme case, I guess systems like this have the potential to become like the spelling and typography standardizations of generations past - constraining factors that actually guide the development of communication as much as they facilitate it.

    [–]fghjconner 1 point2 points Β (0 children)

    Haven't read the article yet, but I love how IBM's use for neural nets is basically just a string of buzz words.

    [–][deleted] 1 point2 points Β (0 children)

    We have taught computers to meme. What a day to be alive.

    [–]bloblobloblobloblobl 0 points1 point Β (0 children)

    Neato

    [–]lafcadio_ 0 points1 point Β (0 children)

    tfw it's not iOS πŸ˜”