这是我笔记本上的密码:
%tensorflow_version 1.x
import tensorflow as tf
import tensorflow_hub as hub
elmo = hub.Module("https://tfhub.dev/google/elmo/2", trainable=True)
tf.logging.set_verbosity(tf.logging.ERROR)
def elmo_vectors(x):
embeddings = elmo(x, signature="default", as_dict=True)["elmo"]
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
sess.run(tf.tables_initializer())
return sess.run(embeddings)非英语输出:(本例中为印地语)
words = ['गोकुल']
v = elmo_vectors(words)
print(v.shape) # (1,1,1024)
print(v[0][0])
# Output: [ 0.3731584 0.5700774 -0.48072845 ... -0.1241736 0.5961436 -0.6986947 ]关于Tensorflow集线器的预训练ELMo文档显示,它只接受过英语培训。
也就是说,10亿字基准的数据集是基于单语英语数据的。(来源)
那么,我是如何/为什么使用TF集线器模型从ELMo获得非英语词汇的嵌入呢?
发布于 2020-06-25 12:46:09
虽然ELMo接受了英语数据方面的培训,但它不知道您作为输入提供的数据是否为英语。
ELMo的输入是在字符级接收的.可能发生的情况是,1B单词数据混合了印地语字符,在这种情况下,您的字符将按其原样进行编码,或者,很可能您的字符被编码为未知字符(就像单词级NLP的未知令牌<unk> (但用于字符)一样)。
ELMo只是一堆数学运算,所以它需要它接收到的任何东西并计算它的操作,首先,将字符嵌入到传递给它的字符中,然后使用char-CNN,然后是两个高速公路层,最后是双向的LSTM。
https://datascience.stackexchange.com/questions/76652
复制相似问题