Live data from Hacker News

Using aligned word vectors for instant translations with Python and Rust

instantdomainsearch.com

11–20 of 38 posts

Re: Using aligned word vectors for instant translations with Python and Rust

#11
post #9
post #8

Earlier quoted context omitted.

Google Translate is state of the art, so I’m not sure why that would be surprising. That said, is there something wrong with the translations offered?

> That said, is there something wrong with the translations offered? I think in French hello = "bonjour" and hi = "salut"... not sure where "bonjours" and "salutations" came from.

The Italian "auguri" means "best wishes"; "chiamatemi" means "call me". Neither is a plausible translation of "hello". The obvious one, "ciao", is missing.

Re: Using aligned word vectors for instant translations with Python and Rust

#13

> For example, here are the results of translating the English word "hello": > Language: fr, Translation: bonjours > Language: fr, Translation: bonsoir > Language: fr, Translation: salutations > Language: it, Translation: buongiorno > Language: it, Translation: buonanotte > Language: fr, Translation: rebonjour > Language: it, Translation: auguri > Language: fr, Translation: bonjour, > Language: it, Translation: buona…

It would be better to run the vectors through an attention layer if you want sentence to sentence translation.

Re: Using aligned word vectors for instant translations with Python and Rust

#14

> For example, here are the results of translating the English word "hello": > Language: fr, Translation: bonjours > Language: fr, Translation: bonsoir > Language: fr, Translation: salutations > Language: it, Translation: buongiorno > Language: it, Translation: buonanotte > Language: fr, Translation: rebonjour > Language: it, Translation: auguri > Language: fr, Translation: bonjour, > Language: it, Translation: buona…

These results are less accurate than Google Translate. But they are far faster to get, and far less expensive to generate: https://cloud.google.com/translate/pricing — our goal is here is speed. We want to search through many possibilities as quickly as possible.

The word vectors have been aligned in multiple languages. Using an approximate nearest neighbor search we are able to find the nearest vector to the input in multiple languages very quickly.

To keep the example simple, we did not try to filter the data through hand-built language dictionaries. In fact, we simply drop words in other languages that also appear in the English .vec file. Words like "ciao" appear frequently enough in otherwise English sentences that the example code drops it from Italian, and so is not shown in the results:

% curl -s "https://dl.fbaipublicfiles.com/fasttext/vectors-aligned/wiki..." | grep -n ciao 50393:ciao 0.0120 ...

One improvement would be to filter out any words that do not appear in a hand-curated dictionary instead of filtering out words that already appear in English. We decided not to show how to do this because we'd already introduced a few concepts, like aligned word vectors, approximate nearest neighbour searches, and wanted to keep the example as simple as possible.

Re: Using aligned word vectors for instant translations with Python and Rust

#15
post #8

> For example, here are the results of translating the English word "hello": > Language: fr, Translation: bonjours > Language: fr, Translation: bonsoir > Language: fr, Translation: salutations > Language: it, Translation: buongiorno > Language: it, Translation: buonanotte > Language: fr, Translation: rebonjour > Language: it, Translation: auguri > Language: fr, Translation: bonjour, > Language: it, Translation: buona…

Google Translate is state of the art, so I’m not sure why that would be surprising. That said, is there something wrong with the translations offered?

> Google Translate is state of the art

For French/English/German, DeepL is much better IME.

Re: Using aligned word vectors for instant translations with Python and Rust

#16
post #9
post #8

Earlier quoted context omitted.

Google Translate is state of the art, so I’m not sure why that would be surprising. That said, is there something wrong with the translations offered?

> That said, is there something wrong with the translations offered? I think in French hello = "bonjour" and hi = "salut"... not sure where "bonjours" and "salutations" came from.

"Bonjours" doesn't exist, and "salutations" is a tad quirky, but OK in informal settings, especially when addressing many people at once.

Re: Using aligned word vectors for instant translations with Python and Rust

#18
post #3

We've released the underlying Rust implementation here: https://github.com/InstantDomain/instant-distance with Python bindings at https://pypi.org/project/instant-distance — feedback welcome!

Did you try spacy's most similar method? It's written in cython so is presumably quite fast as well. Thanks for the rust implementation though, I will most likely use this.

Re: Using aligned word vectors for instant translations with Python and Rust

#19
post #3

We've released the underlying Rust implementation here: https://github.com/InstantDomain/instant-distance with Python bindings at https://pypi.org/project/instant-distance — feedback welcome!

For Linux, in the Makefile change the copy command to

cp target/release/libinstant_distance.so instant-distance-py/test/instant_distance.so

and it works. Built and running. The main tree was MacOS only.

Here's resource consumption in a sample run.

Time: 4.49s, Memory: 1552 mb.

Single word. Three langs including en.

Post reply on HN