0

I have experience with object-oriented programming languages (C++ and Java), but I am wondering what kinds of programming languages — including OOP languages– or programming paradigms might be suitable for a rule-based natural-language translation program.

Does existing machine-translation software tend to use a certain paradigm or language?

migrated from stackoverflow.com Sep 16 '14 at 15:39

This question came from our site for professional and enthusiast programmers.

  • You're just doing translation? Going from say Japanese to the equivalent English in a general purpose environment? – Telastyn Sep 16 '14 at 15:47
  • Just translation unless I'm not thinking of something that most natural-language translation programs do. I was not contemplating languages with Asian characters. – CarbonandH20 Sep 16 '14 at 16:02
3

In all honesty: natural language translation is so incredibly, mindbogglingly, insanely, hard in general that the choice of language is completely and utterly irrelevant. Even when programming in Malbolge, your 99.9999999% of your time, effort, resources, manpower and money is going to be spent researching and inventing the algorithms rather than implementing them.

There are basically two known approaches to machine translation that "work" (as in "produce results that are slightly better than complete garbage"): the classical approach and the Google approach:

  • classical approach:
    1. hire a dozen or so researchers (alternatively: donate a couple of million dollars to a university)
    2. wait twenty years
  • Google approach:
    1. create a database of everything ever written in the entire history of humankind
    2. pattern match your input text against documents where the same document was written in both the source and target language you want to translate from and to

There is also a third approach that IMO works best:

  • use the Google Translate API

Now, if you insist on doing it yourself, then whenever you hear the words "rule-based", you should think of languages like Prolog and Mercury or embedded DSLs such as KANREN and miniKANREN.

  • 1
    Thanks. This is for learning purposes and not to produce something that would actually compete with existing software. I will read about the languages you mentioned. – CarbonandH20 Sep 16 '14 at 16:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.