示例#1
0
def evaluate(T_s2t, T_t2s, src_emb, tgt_emb, s2t_dict, t2s_dict):
    src_emb, tgt_emb, s2t_dict, t2s_dict, T_s2t, T_t2s = [x.cpu().numpy() if isinstance(x, torch.Tensor) else x
                                                          for x in (src_emb, tgt_emb, s2t_dict, t2s_dict, T_s2t, T_t2s)]
    TranslatedX = src_emb.dot(np.transpose(T_s2t))
    TranslatedY = tgt_emb.dot(np.transpose(T_t2s))

    s2t_nn = utils.get_word_translation_accuracy(TranslatedX, tgt_emb, "nn", s2t_dict)
    s2t_csls = utils.get_word_translation_accuracy(TranslatedX, tgt_emb, "csls_knn_10", s2t_dict)

    t2s_nn = utils.get_word_translation_accuracy(TranslatedY, src_emb, "nn", t2s_dict)
    t2s_csls = utils.get_word_translation_accuracy(TranslatedY, src_emb, "csls_knn_10", t2s_dict)

    return {"s2t_nn": s2t_nn, "s2t_csls": s2t_csls, "t2s_nn": t2s_nn, "t2s_csls": t2s_csls}
示例#2
0
import numpy as np
import utils
import params


src_id2word, src_word2id, src_embeddings = utils.read_txt_embeddings('data/wiki.%s.vec' % params.src_lang, params.n_eval_ex, False)
tgt_id2word, tgt_word2id, tgt_embeddings = utils.read_txt_embeddings('data/wiki.%s.vec' % params.tgt_lang, params.n_eval_ex, False)

print("%s_%s" % (params.src_lang, params.tgt_lang))

TranslatedX  = np.load("output/TranslatedX-relu.npy")

cross_dict = utils.load_dictionary('../data-test/medical/test-dict-only-words.txt', src_word2id, tgt_word2id)
utils.get_word_translation_accuracy(params.src_lang, src_word2id, TranslatedX,
                                    params.tgt_lang, tgt_word2id, tgt_embeddings,
                                    params.method, cross_dict, src_id2word)

# TranslatedX = to_translate_src_embeddings.dot(np.transpose(T))

cross_dict, existing_emb_tgt_translated, existing_emb_tgt_real, existing_src_id2word = utils.load_dictionary(
    'data/new-test-dict-only-words-no-parsed.txt',
    src_word2id,
    tgt_word2id,
    to_translate_src_word2id,
    translated_tgt_word2id,
    TranslatedX,
    tgt_embeddings,
    src_embeddings,
)

utils.get_word_translation_accuracy(params.src_lang, src_word2id,
                                    existing_emb_tgt_translated,
                                    params.tgt_lang, tgt_word2id,
                                    existing_emb_tgt_real, params.method,
                                    cross_dict, existing_src_id2word)

print("%s_%s" % (params.tgt_lang, params.src_lang))

#uncomment for comparing with the global transformation
TranslatedY = to_translate_src_embeddings

# T = np.load("../Non-adversarialTranslation/%s/%s_%s_T.npy" % (params.cp_dir, params.tgt_lang, params.src_lang))
# TranslatedY = translated_tgt_embeddings.dot(np.transpose(T))
cross_dict, existing_emb_tgt_translated, existing_emb_tgt_real, existing_src_id2word = utils.load_dictionary(
    'data/new-test-dict-only-words-no-parsed-es-en.txt',
    tgt_word2id,
    src_word2id,
    translated_tgt_word2id,