FastText模型会找到语法上相似的单词

2024-06-07 17:50:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在探索gensim中实现的FastText单词嵌入。 我正在使用20个新闻组语料库(from sklearn.datasets import fetch_20newsgroups)来训练FastText模型。在基本清理(去除标点、停止词和数字)之后,语料库的min_count=4阈值约为30K个单词,用于模型训练:

fastmodel = FastText(all_tokens, size=300, window=3, min_count=4, iter=30, sg=1)

一旦接受培训,我就用这个模型来寻找最相似的词:

fastmodel.wv.most_similar(positive=['baseball'], topn=10, restrict_vocab=30000)

>>>[('eyeball', 0.6450698375701904),
 ('fireball', 0.6277647018432617),
 ('basketball', 0.6046291589736938),
 ('softball', 0.5981404781341553),
 ('fastball', 0.5965794324874878),
 ('pinball', 0.5785440802574158),
 ('oddball', 0.5607066750526428),
 ('spaceball', 0.5140796899795532),
 ('football', 0.5082539319992065),
 ('ball', 0.5010384321212769)]

你可以看到前10个单词中有一半是有意义的。然而,其他5个词,包括最上面两个最相似的词(“眼球”和“火球”)都是古怪的(双关语)。他们和“棒球”唯一的相似之处是“球”,但这不是语义上的相似,这更像是句法上的相似。你知道吗

我想,我明白为什么会这样。FastText将单词拆分为ngrams,四字“ball”将其向量贡献给包含它的所有单词。然而,这种理解并不能真正帮助解决如何过滤掉这些单词的问题。你知道吗

我发现一个post解决了一个类似的问题。不过,问题是,那些毫无意义的话被退回来了。通过将restrict_vocab设置为50000来解析。不过,在我的例子中,返回的单词并不是没有意义的,它们是真实的单词,只是语义上不相似。你知道吗

我想知道这是否是FastText方法固有的局限性。然而,我找不到任何迹象表明这样的限制提到网上,所以这是很有可能我错过了一些东西在这里。你知道吗


Tags: from模型countmin单词意义语料库vocab

热门问题