首页 文章

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

提问于
浏览
1

如果学习方法有任何好的例子(或者更有可能是学习程序),我也会阅读论文并用Google搜索

对于word2vec,假设有语料库句子

我带着午餐盒去学校,我的母亲每天早上都会把它包起来

然后使用窗口大小2,它将尝试通过使用周围的单词来获得“学校”的向量

['去','到','有','午餐']

现在,FastText说它使用子字来获取向量,所以肯定使用n gram子字,例如n = 3,

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

到此为止,我明白了 . 但目前尚不清楚,如果其他词语被用于学习“学校” . 我只能猜测其他周围的单词也像word2vec一样使用,因为文章提到了

=>术语Wc和Wt都用在函数中

其中Wc是上下文字,Wt是序列t中的字 .

但是,目前尚不清楚FastText如何学习单词的向量 .

.

.

请清楚解释FastText学习过程如何进行?

.

.

更确切地说,我想知道如果FastText也遵循与Word2Vec相同的过程,同时它学习n-gram特征子字 in addition . 或者只有n-gram表征使用单词的子词?

它如何在初始时对子字进行矢量化?等等

2 回答

  • 0

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

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

    结果,那些碰巧在许多相似单词中有意义的n-gram(例如,常见的词根或前缀/后缀)被定位在它们赋予该含义的位置 . (其他n-gram可能仍然主要是低幅度噪声,因为它们出现的位置没有什么有意义的模式 . )

    在训练之后,还通过组合全字向量和所有n元语法来构建针对个体词汇单词的报告向量 .

    然后,当你也遇到一个词汇外单词时,如果它与形态相似的训练单词分享一些或多个n-gram,它将得到一个类似的计算向量 - 因此总比没有好,猜猜那个词的矢量应该是什么 . (在小错别字或已知单词的轻微变体的情况下,合成矢量可能相当不错 . )

  • 0

    fastText网站states,至少有两个实现的算法确实使用了句子中的周围单词 .

    此外,原始的fastText实现是open source,因此您可以检查它在探索代码时的工作原理 .

相关问题