1

我目前正在使用 FastText 获取一些输入文本数据的词嵌入,以便捕捉它们之间的相似性,并将这些嵌入作为 NER 任务的神经网络的输入。我首先尝试使用 fastText .vec 文件,并且能够从中获得良好的相似性结果,然后我尝试使用 .bin 模型文件,以便我也可以从词汇外术语中获取嵌入但我注意到从 .vec 和 .bin 文件生成的向量是不同的。.vec 文件包含裁剪到 [-1,1] 范围内的嵌入,而 .bin 文件中包含的嵌入则不是这样。使用 .bin 文件我得到了非常糟糕的结果,所以我试图不明白这是否是由于这些向量(.bin)没有标准化。

有没有一种使用 Python 在 [-1, 1] 范围内标准化这些向量的好方法?

提前致谢。

4

1 回答 1

0

只需将数据重新缩放到范围 [-1, 1]。希望它可以帮助。

def norm(data):
    min_v, max_v = min(data), max(data)
    mid_v = (max_v + min_v) >> 1
    len_v = float((max_v - min_v) >> 1)
    return [(v-mid_v)/len_v for v in data]
于 2018-10-02T13:54:50.223 回答