Esempio n. 1
0
    def translate_new_words(self):
        if not os.path.isfile(self.yandex_translate_key_file):
            print('put your api ket in {}\n'.format(
                self.yandex_translate_key_file))
            sys.exit(1)

        with open(self.yandex_translate_key_file) as f:
            api_key = f.read()

        words_translation = {}
        print('translate new words')
        try:
            YT = YandexTranslate(api_key)
            for w in sorted(self.new_words):
                words_translation[w] = ', '.join(
                    YT.translate(w, self.args.translate)['text'])
        except YandexTranslateException as ex:
            print(ex)
        else:
            tr_text = ''
            for w, tr in words_translation.items():
                tr_text += '{} = {}\n'.format(w, tr)
            tr_file = self.new_words_translation_file.format(
                self.args.translate.replace('-', '_'))
            with open(tr_file, 'wt', encoding='utf-8') as f:
                f.write(tr_text)
Esempio n. 2
0
def get_translated_text_from_api(api, original_text, destination_language):
    if api is 'google_translate':
        translator = Translator()
        return translator.translate(original_text, dest=destination_language).text
    else:
        translator = YandexTranslate(app.config['API_KEY'])
        return translator.translate(original_text, destination_language)['text'][0]
Esempio n. 3
0
def translate(text,source,dest):
    # print("\n\n {0} {1} {2} \n\n".format(text,source,dest))
    translate = YandexTranslate('trnsl.1.1.20190515T114153Z.33301c8ad79f95bd.69a1158dfac270a48213caaf9b6102a3115b8fe1')
    if source =='Eng':
        lang_source='en'
    if source =='Ru':
        lang_source='ru'
    if dest =='Eng':
        lang_dest='en'
    if dest =='Ru':
        lang_dest='ru'
    if source == 'Fra':
        lang_source='fr'
    if dest =='Fra':
        lang_dest='fr'

    try:
        check = translate.detect(text)
    except:
        print("Check Exception on text: {}".format(text))
        return text

    # print("\n\n check: {0} \n\n".format(check))
    if not check.find(lang_dest):
        empty = lang_dest + '-' + lang_source
        #print("\n\n empty: {0} \n\n".format(empty))
        rez=translate.translate(text, empty)
        s = rez['text'][0].decode('utf8')
        # print(u"\n\n rez: {0} \n\n".format(s))
        return s
    return text
Esempio n. 4
0
 def __init__(self, parent=None, api_key=None):
     self.parent = parent
     self.api_key = api_key
     if not YandexTranslate:
         raise GnrException(
             'Missing YandexTranslate. hint: pip install yandex.translate')
     self.translator = YandexTranslate(self.api_key)
Esempio n. 5
0
    def main(self):
        log.info('run serve subcommand')

        token = Core.config.telegram.api_token()
        if type(token) is not str:
            log.critical(
                'Can not find "telegram:api_token" in config. Exiting.')
            exit(1)

        self._bot = Bot(token=Core.config.telegram.api_token())
        dp = Dispatcher(self._bot)

        self._processor = VolleyProcessor(
            YandexTranslate(Core.config.yandex_translate.api_key()),
            ChatScript(Core.config.chatscript.host(),
                       Core.config.chatscript.port(), 'botan'))

        dp.register_message_handler(self.send_welcome,
                                    commands=['start', 'help'])
        dp.register_message_handler(self.everything)

        start_polling(
            dp,
            skip_updates=True,
            # on_startup=self.on_startup,
            # on_shutdown=self.on_shutdown
        )
Esempio n. 6
0
 def test_blocked_key(self):
     translate = YandexTranslate(
         "trnsl.1.1.20130723T112255Z.cfcd2b1ebae9f"
         "ff1.86f3d1de3621e69b8c432fcdd6803bb87ef0e963")
     with self.assertRaises(YandexTranslateException,
                            msg="ERR_KEY_BLOCKED"):
         languages = translate.detect("Hello!")
Esempio n. 7
0
def get_lyrics_translation():
    translate = YandexTranslate('')
    con = mdb.connect(ADDRESS, USERNAME, PASSWORD, SCHEMA)
    con.set_character_set('utf8')
    with con:
        cur = con.cursor()
        cur.execute('SET CHARACTER SET utf8')
        cur.execute('SET character_set_connection=utf8')
        dict_of_lyrics = dict()
        try:
            cur.execute("SELECT song_id, text, src_lang FROM lyrics WHERE text != '' AND translation IS NULL")
            if cur.rowcount == 0:
                exit(0)
            for i in range(cur.rowcount):
                row = cur.fetchone()
                song_id = row[0]
                text = row[1]
                src_language = row[2]
                if src_language == '':
                    src_language = 'en'
                message = translate.translate(text, src_language + '-he')
                if message.get('code') == 200:
                    translation = message.get('text')
                    dict_of_lyrics.update({song_id: translation})
                else:
                    print message.get('code')
        except Exception as e:
            print "error occurred: "
            print e.message
            print "size of dict: " + str(len(dict_of_lyrics))
        insert_into_lyrics_translation(cur, dict_of_lyrics)
Esempio n. 8
0
def translate_corpus(api_key,
                     translation_pair,
                     path_in,
                     path_out,
                     max_sent=float('inf')):

    translator = YandexTranslate(api_key)
    fails = []
    with open(path_out, "w") as fod:
        with open(path_in) as fid:
            for i, l in enumerate(fid):
                if i > max_sent:
                    break
                elif not i % 1000:
                    sys.stdout.write("\r> %d" % i)
                    sys.stdout.flush()
                try:
                    tr = translator.translate(
                        l, translation_pair)['text'][0].strip("\n")
                except:
                    fails.append(l)
                fod.write(tr.encode("utf-8") + "\n")
    print "\ntranslated corpus @ %s " % path_out
    print "fails"
    print fails
Esempio n. 9
0
 async def callback(data):
     match = reg.match(data['body'])
     convo = data['convo']
     if match and (convo == from_convo or (from_convo is None)):
         query = (match.group(1) or '').strip()
         try:
             if pass_data:
                 res = await func(data, query)
             else:
                 res = await func(query)
         except Exception as e:
             import traceback
             traceback.print_exc()
             lang = data.get('country', 'US').split('-')[0].lower()
             if lang == 'us':
                 lang = 'en'
             if lang not in error_cache:
                 translator = YandexTranslate(config.yandex_translate_key)
                 error_cache[lang] = translator.translate(config.error_message, 'en-{}'.format(lang))['text'][0]
                 with open('errors.json', 'w') as f:
                     json.dump(error_cache, f)
             res = error_cache[lang]
         if not res:
             return
         elif type(res) in (str,):
             body, file = res, None
         else:
             body, file = res
         if not file and post_avatar:
             file = os.path.join(config.avatar_folder, random.choice(os.listdir(config.avatar_folder)))
         body = u'>>{}\n{}'.format(data['count'], body)
         await post(body, config.bot_name, to_convo if to_convo else data['convo'], config.bot_trip, file)
         return match
Esempio n. 10
0
    def __init__(self, file1, file2, lang1, lang2):
        self.es = Elasticsearch()

        self.translate = YandexTranslate(
            'trnsl.1.1.20161120T092429Z.26536300f1fab524.bb5fcc81494303125cb46f52681dfdcf652477e0'
        )

        self.file1 = file1
        self.file2 = file2

        self.file1_lang = lang1
        self.file2_lang = lang2

        self.paragraphLinks = []

        self.withoutWhiteChars = re.compile(r'[\n\t \r]+')
        self.nonAlphaNumeric = re.compile(r'^\W+$')
        self.endOfSetnence = re.compile(r'([\.\?\!:])')
        self.sentences_pair = []
        self.getNameWords = re.compile(r'([A-ZА-Я]\w+)')
        self.onlyLetters = re.compile(r'[^a-zA-Zа-яА-Я ]+')

        self.MIN_RATE = 75
        self.synced_sentences = []
        self.nonsynced_sentences = {'first': [], 'second': [], 'keywords': []}
Esempio n. 11
0
def translationAugmentYandex(X, y, key, export_path, begin=0):
    n_negative = np.sum(y)
    X_ret = []
    n_sentences_processed = 0
    for ind in range(X.shape[0]):
        if y[ind] == 1:
            if n_sentences_processed >= begin:
                try:
                    en = re.sub(r'[\\][tnrfv]', ' ', X[ind])
                    en = re.sub(r'[\\]xa0', ' ', en)
                    en = re.sub(r'[\\]+[^\w]', '', en)
                    en = re.sub(r'[^\w \'\\]',
                                lambda x: " " + x.group(0) + " ", en)
                    # en = re.sub(r'[.,?!:;=-]', lambda x: " " + x.group(0) + " ", en)
                    en = re.sub(r' +', ' ', en)
                    en = re.sub(r'[^\w \'<>]', '', en)

                    translator = YandexTranslate(key)
                    de_en = translator.translate(translator.translate(
                        en, lang="en-zh")["text"][0],
                                                 lang="zh-en")["text"][0]
                    es_en = translator.translate(translator.translate(
                        en, lang="en-ko")["text"][0],
                                                 lang="ko-en")["text"][0]
                    print(X[ind])
                    print(de_en)
                    print(es_en)
                    X_ret.append(de_en)
                    X_ret.append(es_en)
                    n_sentences_processed += 1

                except YandexTranslateException:
                    y_ret = np.ones(shape=((n_sentences_processed - begin) *
                                           2))
                    d = {"Comment": np.array(X_ret), "Insult": y_ret}
                    df = pd.DataFrame(data=d)
                    df.to_csv(path_or_buf=export_path, header=True, index=True)
                    if n_sentences_processed == begin:
                        print("Run out of characters available")
                        return np.array(X_ret)
                    else:
                        str_len = len(export_path)
                        file_name = export_path[0:str_len - 5]
                        n_csv = str(int(export_path[-5]) + 1)
                        translationAugmentYandex(X,
                                                 y,
                                                 key,
                                                 file_name + n_csv + ".csv",
                                                 begin=n_sentences_processed)
            else:
                n_sentences_processed += 1

    y_ret = np.ones(shape=((n_sentences_processed - begin) * 2))
    d = {"Comment": np.array(X_ret), "Insult": y_ret}
    df = pd.DataFrame(data=d)
    df.to_csv(path_or_buf=export_path)

    return np.array(X_ret)
Esempio n. 12
0
def get_translated_text_from_api(api, original_text, destination_language):
    if api is "google_translate":
        translator = Translator()
        return translator.translate(original_text,
                                    dest=destination_language).text
    else:
        translator = YandexTranslate(app.config["API_KEY"])
        return translator.translate(original_text,
                                    destination_language)["text"][0]
Esempio n. 13
0
def translate_yandex(text, src="auto", dst="en"):
    if src != "auto":
        lang = "{src}-{dst}".format(src=src, dst=dst)
    else:
        lang = dst
    langdex = YandexTranslate(yandex_key)
    result = langdex.translate(text, lang)
    assert result['code'] == 200
    return result['text'][0]
Esempio n. 14
0
    def __init__(self):

        self.__api_key = 'trnsl.1.1.20170419T213309Z.70ddc54f4fe2d025.fa23b8e218345631f11e83f28520ea417e7e44f9'

        self.__ya_translator = YandexTranslate(self.__api_key)

        self.__con = sqlite3.connect("translator/dictionary.db")

        self.__cur = self.__con.cursor()
Esempio n. 15
0
    def translate(text: str) -> str:
        """
            :text:  --> The text in arabic
            :return:  --> return a translation of :text: in english
        """
        DEBUG = False

        if text == "":
            return ""
        self = FatabyyanoFactCheckingSiteExtractor
        yandexAPI = self.YANDEX_API_KEY
        yandex = YandexTranslate(yandexAPI)

        responses = []
        try:
            response = yandex.translate(text, 'ar-en')
            if DEBUG:
                print("response : " + response, end='\n\n')
            responses = [response]
            text_too_long = False
        except YandexTranslateException as e:
            if e.args == 'ERR_TEXT_TOO_LONG' or 'ERR_TEXT_TOO_LONG' in e.args:
                text_too_long = True
            else:
                print(text, end='\n\n')
                print("Erreur API Yandex\nCode d'erreur : " + str(e.args))
                sys.exit(1)

        text_list = [text]

        while text_too_long:
            if DEBUG:
                print("cutting : " + str(text_list), end='\n\n')
            text_too_long = False
            try:
                text_list = self.cut_str(text_list)
            except ValueError:
                print("Erreur ")
                sys.exit(1)
            responses = []
            for t in text_list:
                try:
                    responses.append(yandex.translate(t, 'ar-en'))
                except YandexTranslateException:
                    text_too_long = True
                    continue

        text_list = []
        for r in responses:
            if int(r['code'] != 200):
                print("Erreur lors de la traduction\nCode de l'erreur : " +
                      r['code'])
                sys.exit(1)
            else:
                text_list.append(r['text'][0])

        return self.concat_str(text_list)
Esempio n. 16
0
 def __init__(self):
     print('Iniciando Classifier')
     self.vocabulary = []
     self.modules = {}
     self.input_vector = []
     self.output_vector = []
     self.config = Config()
     self.translator = YandexTranslate(self.config.get_token_yandex())
     self.dao = Mongo_DAO('localhost', 27017, 'classifier') 
Esempio n. 17
0
def translate(text):
    trans = YandexTranslate('trnsl.1.1.20190421T135944Z.7292abf1150a9315.88e1b4e89ec715ff8de021cc3eaf0ef1cae0259b')
    if not russian(text):
        resp = ''.join(trans.translate(text, 'en-ru')['text'])
    else:
        resp = ''.join(trans.translate(text, 'ru-en')['text'])
    if resp:
        return resp
    return False
Esempio n. 18
0
    async def ytranslate(self, ctx, language: str, *, text: str):
        """Translate text via yandex

        Language may be just "ru" (target language to translate)
        or "en-ru" (original text's language - target language)"""
        text = chat.escape(text, formatting=True)
        apikeys = await self.bot.db.api_tokens.get_raw("yandex", default={"translate": None})
        try:
            translate = YandexTranslate(apikeys["translate"])
            response = translate.translate(text, language)
        except YandexTranslateException as e:
            if str(e) == "ERR_LANG_NOT_SUPPORTED":
                await ctx.send(chat.error("An error has been occurred: Language {} is not supported"
                                          .format(chat.inline(language))))
            elif str(e) == "ERR_TEXT_TOO_LONG":
                # Discord will return BAD REQUEST (400) sooner than this happen, but whatever...
                await ctx.send(chat.error("An error has been occurred: Text that you provided is too big to "
                                          "translate"))
            elif str(e) == "ERR_KEY_INVALID":
                await ctx.send(chat.error("This command requires Yandex.Translate API key\n"
                                          "You can set it via {}ytapikey".format(ctx.prefix)))
            elif str(e) == "ERR_KEY_BLOCKED":
                await ctx.send(chat.error("API key is blocked. You need to get new api key or unlock current."))
            elif str(e) == "ERR_DAILY_REQ_LIMIT_EXCEEDED":
                await ctx.send(chat.error("Daily requests limit reached. Try again later."))
            elif str(e) == "ERR_DAILY_CHAR_LIMIT_EXCEEDED":
                await ctx.send(chat.error("Daily char limit is exceeded. Try again later."))
            elif str(e) == "ERR_UNPROCESSABLE_TEXT":
                await ctx.send(chat.error("An error has been occurred: Text is unprocessable by translation server"))
            elif str(e) == "ERR_SERVICE_NOT_AVAIBLE":
                await ctx.send(chat.error("An error has been occurred: Service Unavailable. Try again later"))
            else:
                await ctx.send(chat.error("An error has been occurred: {}".format(e)))
            return
        input_lang = None
        output_lang = None
        if len(language) == 2:
            try:
                input_lang = translate.detect(text=text)
            except YandexTranslateException as e:
                if str(e) == "ERR_LANG_NOT_SUPPORTED":
                    await ctx.send(chat.error("This language is not supported"))
                else:
                    await ctx.send(chat.error("Unable to detect language: {}".format(e)))
                return
            output_lang = language
        elif len(language) == 5:
            input_lang = language[:2]
            output_lang = language[3:]
        if response["code"] == 200:
            await ctx.send("**[{}] Input:** {}".format(input_lang.upper(), chat.box(text)))
            await ctx.send("**[{}] Translation:** {}".format(output_lang.upper(), chat.box(response["text"][0])))
        else:
            # According to yandex.translate source code this cannot happen too, but whatever...
            await ctx.send("An error has been occurred. Translation server returned code {}"
                           .format(chat.inline(response["code"])))
    def translate(text):
        """
            :text:  --> The text in arabic
            :return:  --> return a translation of :text: in english
        """

        translate = YandexTranslate(
            'trnsl.1.1.20200311T210815Z.796b747ff14857c9.2e7b856527d2689a26379ff56769f5b3c087f55b'
        )
        return translate.translate(text, 'ar-en')['text'][0]
Esempio n. 20
0
    def __yandex_translate__(self, text, lang_to, lang_from, formatt):

        translator = YandexTranslate(self.yandex_api_key)
        try:
            if not lang_from:
                lang_from = self.detect_lang(text)
            lang = "{}-{}".format(lang_from, lang_to)
            translated = translator.translate(text, lang, format=formatt)
            return translated['text'][0]
        except YandexTranslateException:
            return text
Esempio n. 21
0
def translate_language(sourcetext, translationfrom, translationTo):
    translate = YandexTranslate(
        'trnsl.1.1.20171108T161528Z.11fd5cf559085f7e.68f45fa90a6197a56fc8353410bec46f7386e419'
    )
    print('Languages:', translate.langs)
    print('Translate directions:', translate.directions)
    print('Detect language:', translate.detect(sourcetext))
    translated_text = translate.translate(
        sourcetext, translationfrom + '-' + translationTo)
    arr = translated_text['text']
    return arr
    print(arr)
Esempio n. 22
0
def translate(text, source_language, dest_language):
    # Yandex doesn't require requests (implied?)
    # Yandex doesn't require wrapping key in auth
    # Yandex returns a dict of lists, the translation is found in ['text'][0]
    if ("YANDEX_TRANSLATOR_KEY" not in current_app.config
            or not current_app.config["YANDEX_TRANSLATOR_KEY"]):
        return _("Error: the translation service is not configured.")
    t = YandexTranslate(current_app.config["YANDEX_TRANSLATOR_KEY"])
    r = t.translate(text, source_language + "-" + dest_language)
    if r["code"] != 200:
        return _("Error: the translation service failed. %r" % (r["code"]))
    return r["text"][0]
Esempio n. 23
0
def translate(text, source_language, dest_language):
  # Yandex doesn't require requests (implied?)
  # Yandex doesn't require wrapping key in auth
  # Yandex returns a dict of lists, the translation is found in ['text'][0]
    if 'TRANSLATOR_KEY' not in current_app.config or \
        not current_app.config['TRANSLATOR_KEY']:
        return _('Error: the translation service is not configured.')
    t = YandexTranslate(current_app.config['TRANSLATOR_KEY'])
    r = t.translate(text, source_language + '-' + dest_language)
    if r['code'] != 200:
        return "Error: the translation service failed. %r" % ( r['code'] )
    return r['text'][0]
Esempio n. 24
0
def yandex_translate():
    translated_text = ""
    if len(request.form['text']) > 0:
        translator = YandexTranslate(
            "trnsl.1.1.20170124T023923Z.db368f9b9c7a7f06.26bd8be0cf53946d203c786ae83d24c73ea5954d"
        )
        translated_text = translator.translate(request.form['text'],
                                               request.form['dest'])['text'][0]

    return jsonify({
        'translation': translated_text,
        'original_text': request.form['text']
    })
Esempio n. 25
0
def to_english(message):
    # Detect language
    english_set = set(w.lower()
                        for w in nltk.corpus.words.words())
    text_set = set( w.lower() for w in
                      re.sub( '\W', ' ', message).split()
                      if w[0].isalpha() )
    unusual = text_set.difference(english_set)
    if len(unusual)*3 > len(text_set):
        print("Translating...")
        translate = YandexTranslate('trnsl.1.1.20170406T225123Z.cb036d7ebd624db9.8835c34234d938773f407ac77a601e10fc1e1771')
        message = translate.translate(message, 'en')['text'][0]
    return message
Esempio n. 26
0
    def mainTestInteractive(self, sess):
        """ Try predicting the sentences that the user will enter in the console
        Args:
            sess: The current running session
        """
        # TODO: If verbose mode, also show similar sentences from the training set with the same words (include in mainTest also)
        # TODO: Also show the top 10 most likely predictions for each predicted output (when verbose mode)
        # TODO: Log the questions asked for latter re-use (merge with test/samples.txt)





        #print('Testing: Launch interactive mode:')
        translate = YandexTranslate('trnsl.1.1.20180403T155201Z.58ec00a2b669a2cc.8e269003229f8e698616dad576839b9cf5335af8')

        #print('')
        #print('Welcome to the interactive mode, here you can ask to Deep Q&A the sentence you want. Don\'t have high '
         #     'expectation. Type \'exit\' or just press ENTER to quit the program. Have fun.')

        while True:
            question = input(self.SENTENCES_PREFIX[0])
            traduccion = translate.translate (question, 'en')
            texto = str (traduccion['text'])
            texto = texto.replace ("['", "")
            texto = texto.replace ("[", "")
            texto = texto.replace ("']", "")
            texto = texto.replace ("]", "")
            question=texto
            if question == '' or question == 'exit':
                break

            questionSeq = []  # Will be contain the question as seen by the encoder
            answer = self.singlePredict(question, questionSeq)
            if not answer:
                print('Oye baby, tu pregunta esta muy compleja, ¿podrías intentar algo más simple?')
                continue  # Back to the beginning, try again

            respuesta=self.textData.sequence2str(answer, clean=True)
            traduccion=translate.translate(respuesta, 'es')
            texto=str(traduccion['text'])
            texto=texto.replace("['", "")
            texto=texto.replace("']", "")

            print('{}{}'.format(self.SENTENCES_PREFIX[1],texto ))

            if self.args.verbose:
                print(self.textData.batchSeq2str(questionSeq, clean=True, reverse=True))
                print(self.textData.sequence2str(answer))

            print()
Esempio n. 27
0
 def __init__(self, yandex_key, src_lang=None, dest_lang=None, src_po_file=None):
     """
     Конструктор
     :param yandex_key: ключ для доступа к API яндекс-переводчика
     :param src_lang: исходный язык
     :param dest_lang: язык назначения
     :param src_po_file: исходный po-файл
     :return:
     """
     self.yandex_key = yandex_key
     self.src_lang = src_lang
     self.dest_lang = dest_lang
     self.yandex_translate = YandexTranslate(self.yandex_key)
     if src_po_file is not None:
         self.open_po_fle(src_po_file)
Esempio n. 28
0
    def __goodKeyYandex(self, key):

        success = True

        trans = YandexTranslate(key)

        try:

            trans.translate("hola", "en")["text"][0]

        except:

            success = False

        return success
Esempio n. 29
0
def main():

    update_id = lastUpdate(getUpdates())['update_id']
    while True:
        if update_id == lastUpdate(getUpdates())['update_id']:
            from yandex_translate import YandexTranslate
            translate = YandexTranslate(
                'trnsl.1.1.20181221T225719Z.e3a1a909c9a77883.918af8cc684b8477f891022c74cccc76ef2709b5'
            )
            c = (lastUpdate(getUpdates())['message']['text'])
            w = translate.translate(c, 'ru-en')

            trans = w['text']
            sendMessage(getChatId(lastUpdate(getUpdates())), trans)
            update_id += 1
    sleep(1)
Esempio n. 30
0
async def t(arg):
    'translate'
    translator = YandexTranslate(config.yandex_translate_key)
    #    lang = translator.detect(arg)

    if arg.startswith('-'):
        lang, text = arg.split(None, 1)
        lang = lang[1:]
    else:
        text = arg
        lang = translator.detect(text)

    if lang != 'en':
        translation = translator.translate(text, '{}-en'.format(lang))['text'][0]
        answer = 'translated from {}\n{}'.format(lang, translation)
        return answer
    else:
        return "That's already English"