Fasttext 算法只使用词和子词?还是句子呢?

Fasttext algorithm use only word and subword? or sentences too?

如果有学习方法(或更可能的学习过程)的任何好的例子,我也阅读了这篇论文并用谷歌搜索

对于word2vec,假设有语料句

I go to school with lunch box that my mother wrapped every morning

然后 window 大小为 2,它将尝试通过使用周围的单词

来获取 'school' 的向量

['go', 'to', 'with', 'lunch']

现在FastText说是用subword来获取vector,所以肯定是用n gram subword,比如n=3,

['sc', 'sch', 'cho', 'hoo', 'ool', 'school']

到这里,我明白了。 但是不清楚其他词是否被用于学习'school'。我只能猜测其他周围的词也像 word2vec 一样被使用,因为论文提到

=> 术语 WcWt 都用于函数

其中 Wc 是上下文词,Wt 是序列 t 处的词。

但是,FastText 是如何学习单词向量的还不清楚。

.

.

请说清楚程序中FastText的学习过程是如何进行的?

.

.

更准确地说,我想知道如果 FastText 在学习 n-gram 特征子词时也遵循与 Word2Vec 相同的过程 此外.或者只有 n-gram 表征的子词与正在使用的词?

它如何向量化初始的子词?等等

fastText 站点 states 至少有 2 个实现的算法确实在句子中使用了周围的词。

此外,原始的 fastText 实现是 open source,因此您可以通过探索代码来检查它的工作原理。

任何上下文词都有其候选输入向量,该向量由其全词标记和所有字符 n-gram 的组合组装而成。因此,如果上下文词是 'school',并且您使用的是 3-4 个字符的 n-gram,则训练中的输入向量是 school、[=22] 的全词向量的组合=]和['sch', 'cho', 'hoo', 'ool', 'scho', 'choo', 'hool']的所有n-gram向量。)

当通过训练调整该候选向量时,所有 成分向量都会调整。 (这有点像在 word2vec CBOW 模式中,单个平均上下文输入向量的所有 一起调整,当它们预测单个目标输出词的能力被评估并且改进了。)

因此,那些在许多相似词中恰好是有意义的暗示的 n-grams——例如,常见的词根或 prefixes/suffixes——被定位在它们赋予这种意义的地方。 (其他 n-gram 可能主要保持低幅度噪声,因为它们出现的地方几乎没有有意义的模式。)

训练后,还通过组合全词向量和所有 n-gram 来构建单个词汇表中单词的报告向量。

然后,当你也遇到一个词汇外的词时,如果它与形态相似的训练词共享一些或许多 n-gram,它将得到一个相似的计算向量——因此总比没有好,猜测那个词的向量应该是什么。 (如果出现小拼写错误或已知单词的轻微变体,合成向量可能会非常好。)