Thanks!
[^1]: Everyone hijacked the character.
On the other hand, OpenNMT appears able to translate the "f* you!" sentence to "你妈!" in Chinese, a form of "操你妈" with the F word not spoken but implied. The single-f-word sentence generates amusing variations when used with different punctuations, although many ("...", "?", "!", "") fail by reducing the sentence to a normal call for one's own mother.These experiments make me curious about what kind of corpora the system was trained on.
* * *
The test sentences used were:
操你十八辈子祖宗![^2]
操你十八辈祖宗!
操你妈!
[^2]: This one is technically wrong.
For the orthodox version, replace all instances of 操 with 肏.As an additional experiment, I tested some variations of "mother" profanities without "操":
1. 你妈!
2. 他妈的!
3. 他妈的。
Between #2 and #3, PNMT appears more sensitive to punctuations than human do. #1 is only included as a round-trip validation.Edit: (#1) ... and is not supposed to be translated back into profanity due to high false positive rate.
It's great to see that the MT field has made such great progress in the last few years and that the latest NMT models are doing just that.
Several papers that really demonstrated this was possible at scale came out around over the next year, the most well known is "Sequence to Sequence Learning with Neural Networks" (https://papers.nips.cc/paper/5346-sequence-to-sequence-learn...). It's been quite fun watching something I assumed was too hard at the time, become essential to the field.
I'm curious about the minimum size of the dataset that would be required to get any reasonable output. I understand that this maybe dependent on the language pair, yet some concrete numbers (like for a few language-pairs shown in the demo) would help me get an idea. Also, what can I do to make it work for language pairs which have very small parallel/aligned data available. I would be grateful for any pointers regarding this.
(1) You can pre-initialize your model with monolingual word embeddings. We recommend using the Polyglot embeddings which exist for many different languages. See http://opennmt.net/Advanced for details.
(2) You can train your model with a nearby language. For instance we have a model that uses data from all the Romance languages simultaneously.
(3) You can use monolingual data in other ways. For instance, if you are translating into English, you can combine with a standard language model or pretrain on the English data.
There are a bunch of other approaches in the literature, but these are some of the more common tricks.
Of course assuming there is an available dataset of input-output pairs to train with.
Note though that NMT is particularly helpful for variable-length output. If you know the target is the same length as the source, then there are likely easier ways to go.
Do you happen to have links to the projects you mentioned for non-standard mappings? Would love to see the results and insights from them, before embarking on assembling training sets for my use case
But if you want to get involved more generally our gitter is http://gitter.im/OpenNMT and our forum is at http://forum.opennmt.net.