Raj*_*aju 3 supervised-learning text-classification fasttext
阅读《高效文本分类技巧袋》后,我有点困惑。wordNgramsargs和minn之间有什么区别maxn
例如,文本分类任务和 Glove 嵌入为 pretrainedVectors
ft.train_supervised(file_path,lr=0.1,epoch=5,wordNgrams=2,dim=300,loss='softmax', minn=2,maxn=3,pretrainedVectors='glove.300d.txt',verbose=0)
Run Code Online (Sandbox Code Playgroud)
输入句子是“我爱你”。给定minn=2,maxn=3,整个句子转化为[<I, I>], [<l, <lo, lo, lov,.....]etc 对于love这个词,它的fasttext嵌入= (emb(love)(作为一个完整的词)+ emb(<l)+emb(<lo)+。 ...) / n. 对于句子,它被分成[I love, love you](因为 wordNgrams=2) 并且这些 2-gram 嵌入是[(fasttext emb(I)+fasttext emb(love))/2, (fasttext emb(love)+fasttext emb(you))/2]。句子嵌入是 2-gram 嵌入的平均值,维数为 300。然后它通过具有 #labels 神经元的层(即乘以大小为 [300, #labels] 的矩阵)。
这是正确的吗?如果我错了请纠正我
小智 5
拉朱,
你几乎是对的,但平均发生在最后。
首先,一个句子是如何标记化的?
整个句子用空格标记。所以“我爱你”会产生4个词:“我”、“爱”、“你”和一个特殊词EOS(句尾)。到目前为止我们有 4 个代币。然后,对于每个单词,根据您对minn和的设置maxn,fastText 将计算子单词并将它们也视为标记。因此,在 minn=2、maxn=3 的情况下,它将是:(我们还"<I", "<I>", "I>", "<l", "<lo", "lo", "lov", "ov", "ove", "ve", "ve>", "e>", "<y", "<yo", "yo", "you", "ou", "ou>", "u>"添加单词字符的开头和结尾(<和))。>
所以总体代币将为"I", "love", "you", EOS, "<I", "<I>", "I>", "<l", "<lo", "lo", "lov", "ov", "ove", "ve", "ve>", "e>", "<y", "<yo", "yo", "you", "ou", "ou>", "u>".
现在,当 wordNgrams=2 时,我们还添加与单词对相对应的标记:"I love", "love you", "you EOS"
一旦我们有了代币:
为了计算隐藏层,句子的嵌入将是上面各个标记的嵌入的平均值。这是通过对输入矩阵中对应的 300 维列向量求和,然后除以标记数来获得这行代码的平均值来完成的。
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |