首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fastText生成零向量

fastText生成零向量
EN

Stack Overflow用户
提问于 2021-11-06 17:34:12
回答 2查看 76关注 0票数 0

我在计算fastText产生的嵌入上的余弦相似度时遇到了以下错误:

代码语言:javascript
复制
/home/kgarg8/anaconda3/envs/CiteKP/lib/python3.6/site-packages/scipy/spatial/distance.py:721: RuntimeWarn
ing: invalid value encountered in float_scalars                                                          
  dist = 1.0 - uv / np.sqrt(uu * vv)    

相关代码片段:

代码语言:javascript
复制
# fastText supervised training:
model = fasttext.train_supervised('merged_data_labels_prepended.txt')
model.save_model('fasttext_supervised.bin')

# model loading
model = fasttext.load_model("fasttext_supervised.bin")
代码语言:javascript
复制
# calculating cosine similarity
from scipy import spatial
def cosine_distance_wordembedding_method(s1, s2):
    vec1   = np.mean([model[word] for word in s1],axis=0)
    vec2   = np.mean([model[word] for word in s2],axis=0)
    cosine = spatial.distance.cosine(vec1, vec2)
    return round((1-cosine)*100, 2)

cosine_distance_wordembedding_method(pred.split(), label.split()) # function call

初步分析:

fastText为不在词汇表中的单词生成全零嵌入( vec1或vec2有时为零)。那么,我如何处理这些OOV单词来获得非零嵌入呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-26 22:42:50

显然,设置maxn=6解决了这个问题。默认情况下,它是0

票数 0
EN

Stack Overflow用户

发布于 2021-11-06 18:56:43

你接收的原始向量(所有0.0维度)的单词是否会非常短--比构建模型时使用的min_n参数短?

如果是这样的话,这就是模型设计的目的。当候选词的子串在较早的训练期间可能已经接收到n-gram向量时,FastText只能合成OOV词的向量。

如果训练只为3个或更多字符的字符n-gram创建了这些单词片段向量,而您要求FastText为一个包含2个字符的单词创建一个向量,那么它既没有完整的单词向量,也没有子词向量来组合到OOV向量。所以它返回零向量。

在这种情况下,您能做的最好的事情是在假设向量非零之前检测这种情况--然后可能完全忽略那个未知词及其不可猜测的向量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69866356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档