I'd like to add that if you don't have pairwise preference data (A > B) but do have binary data (A is good for x_1, B is good for x_2, etc.), then Kahneman-Tversky Optimization (KTO) might be a better fit. Despite learning with a weaker signal, it works as well or better than dpo in practice.
That's a fair point. I was initially thinking of targeting businesses rather than individual consumers, so I thought a flexible pricing plan would be helpful (given variations in headcount, sector, etc.). It looks like individual consumers are interested in it as well, so I'll add a more transparent pricing tier for them. Thanks for the feedback!
This is a fascinating idea - it's definitely possible, though easier for some groups of people than others (I don't think I'll be able to hire doctors for $25/article). I think the human and AI analyses would contrast each other nicely -- the model would estimate how well people will react on average and the human analysis, although idiosyncratic, will pick up on more abstract qualities of writing, like the flow. I'll put this down as a feature to implement in the long-term -- thanks for the idea!
Thanks for the feedback! User privacy is definitely important to me, especially since users might be entering recruiting / product-related data into the app. The text that you analyze is not stored on any Toasted database (the most recent text you analyze is stored as a cookie so that you don't lose progress if you accidentally close the tab). Moving forward, I'll work on options to allow for anonymous payment.
I definitely wasn't planning to base pricing on what users were submitting or how frequently they were using the app. I was initially thinking of selling to businesses rather than individual consumers, and enterprise pricing is pretty variable -- based on factors like head count, which categories (e.g., 'accountants', 'doctors') would be useful, etc. Hence the flexible pricing model. If there's enough interest among individual users though -- which there seems to be -- I'd be happy to offer a basic tier that's transparent.
Thanks for taking the time to write this out! I agree on the UX suggestions. The suggestions for each word are a list of terms that could work, with the score being conditional on the cohort selected. The darker the alternative, the worse it is -- the pinker, the better.
The reason why technical articles -- or in your case, very domain-specific ones -- get average scores is that the model was intended to be used for recruiting and ad-copy. So at the moment, it works on a common vocabulary for all groups, whereas one reason your article might be intriguing to programmers is because it discusses a lot of domain-specific terms (e.g., discussing 'exploits' and 'network security'). If I modified the model to consider more domain-specific terms, I think the article you provided would rank very highly. There are other reasons as well, like the pithiness and clarity of it, but I do think the vocabulary is an important part of it.
From the little beta-testing I've done, the people who find it most useful are -- for example -- people without a CS/medical/accounting background who have to interact with, recruit, and sell to CS/medical/accounting people. For those folks, I would say there's some value, even at the vocabulary-level, though I agree that there's much more to writing style than just vocabulary.
Got it. The system does use a state-of-the-art POS tagger, but I think 'key' was mistakenly tagged as an adjective instead of as a noun for your sentence. I'll try to fix that -- thank for pointing it out!
Textio looks like a a great product, but IIUC its use case is very specific -- how can you make your job description more enticing and gender-neutral?
Toasted is meant to be more of a big tent product: you're not just working with men/women, but very specific groups of people (e.g., retirees and accountants) and you want to use language in the way that they're using it, which is helpful for things like writing ad copy as well.
Glad you like the idea! At the moment, the model requires a fairly large amount of data, which is why the app only offers large well-defined cohorts to select from (e.g., accountants, retirees). I like your idea though, and it may be possible to use some of transfer learning to work on smaller groups of people or even individual customers. I'll try to implement that at some point in the future.
Thanks for trying it out! The possible changes you can make stays the same across different cohorts of people, but the score assigned to the word changes (e.g., 'security' has a higher score for retirees than college students). The pinker the word, the higher the score.
Would it be better if only the top 3-4 options were given for each word?
Interesting question! I think you have the right idea: the GloVe or SGNS vector for a word is some composition of the word sense representations. The number of senses for a word isn't necessarily finite either -- one could argue that each possible context a word could appear in denotes a unique word sense.
I suspect that ELMo (and others) work by mapping a word vector to a word sense vector conditioned on the context, which is much larger than what is used in shallow embeddings like GloVe. If GloVe and SGNS are implicitly factorizing word-context matrices containing a co-occurrence statistic like PMI, then ELMo might be implicitly factorizing a (word sense)-(context sense) matrix containing the same co-occurrence statistic. If this is true, then we'd expect the csPMI property to hold at the word sense-level as well. It'd be much harder to prove though, due to the relative complexity of ELMo compared to GloVe/SGNS.
Hi, first author here! Feel free to ask any questions.
TL;DR: We prove that linear word analogies hold over a set of ordered pairs (e.g., {(Paris, France), (Ottawa, Canada), ...}) in an SGNS or GloVe embedding space with no reconstruction error when PMI(x,y) + log p(x,y) is the same for every word pair (x,y). We call this term the csPMI (co-occurrence shifted PMI). This has a number of interesting implications:
1. It implies that Pennington et al. (authors of GloVe) had the right intuition about why these analogies hold.
2. Adding two word vectors together to compose them makes sense, because you're implicitly downweighting the more frequent word -- like TF-IDF or SIF would do explicitly.
3. Using Euclidean distance to measure word dissimilarity make sense because the Euclidean distance is a linear function of the negative csPMI.
Thanks for taking a look! "Feeling" and "feel" are both pretty close to neutral, but it looks like the different in verb tense is responsible for them being on different halves of the spectrum.
I'd like to add that if you don't have pairwise preference data (A > B) but do have binary data (A is good for x_1, B is good for x_2, etc.), then Kahneman-Tversky Optimization (KTO) might be a better fit. Despite learning with a weaker signal, it works as well or better than dpo in practice.