我正在尝试通过从几个选项中进行选择来实现一个简单的单词预测算法来填补句子中的空白:
在伦敦街头驾驶 ---- 并不好玩。
- 苹果
- 车
- 书
- 国王
使用正确的模型:
问题 1.必须使用什么操作/功能才能找到最佳拟合选择?库中的相似度函数定义在一个词与另一个词之间,而不是一个词与词列表之间(例如 most_similar_to_given 函数)。我在任何地方都找不到这个原始功能,而它是 CBOW 承诺的主要操作(见下文)!我在这里看到一些不直观的建议!我在这里想念什么?
我决定遵循头部优先的方法,从提供库和预训练数据集的 fastText 开始,但很快就陷入了文档中:
fastText 提供了两种计算单词表示的模型:skipgram 和 cbow('continuous-bag-of-words')。skipgram 模型通过附近的词来学习预测目标词。另一方面,cbow 模型根据其上下文预测目标词。上下文表示为包含在目标单词周围固定大小窗口中的单词包。
我的解释不清楚,因为“附近的词”与“上下文”具有相似的含义。我用谷歌搜索了一下,最终得到了这个替代定义:
在 CBOW 模型中,将上下文(或周围单词)的分布式表示结合起来预测中间的单词。而在 Skip-gram 模型中,输入词的分布式表示用于预测上下文。
有了这个定义,CBOW 是我必须使用的正确模型。现在我有以下问题:
问题 2.使用哪个模型来训练fastText 预训练的词向量?CBOW还是skipgram?
问题 3.知道必须使用的正确模型是 CBOW,我可以将由 skipgram 模型训练的预训练向量用于我的单词预测用例吗?