我正在使用 fasttext 模型来预测文本标签。
通常 fasttext 可以在单词级别对文本进行分类,例如:
model = fasttext.train_supervised(input="training_fasttextFormat.csv", lr=0.1, epoch=50, loss='hs', wordNgrams=2, dim=200)
print(model.test('testing_fasttextFormat.csv'))
但是https://fasttext.cc/docs/en/options.html中的参数解释似乎也可以做字符级别:
The following arguments for the dictionary are optional:
-minCount minimal number of word occurrences [1]
-minCountLabel minimal number of label occurrences [0]
-wordNgrams max length of word ngram [1]
-bucket number of buckets [2000000]
-minn min length of char ngram [0]
-maxn max length of char ngram [0]
-t sampling threshold [0.0001]
-label labels prefix [__label__]
但是我不确定如何使用这些参数在字符级别上运行 fasttext,有人可以举个例子吗?
如果您指的是
minn
和 maxn
参数,在经典的非分类(不是 supervised
)FastText 模式中,这些参数控制 FastText 与原始 word2vec 的主要区别:此外,还学习单词片段的向量到全词向量。
这样的单词片段向量可以用来合成训练期间没有看到的单词的单词向量——“词汇表之外”(或“oov”)单词。这些合成的向量通常工作得相当好,或者至少比没有好,特别是对于诸如拼写错误或词根强烈暗示含义的单词之类的事情。
我怀疑您引用的摘录仅显示
0
作为 minn
模式下 maxn
和 supervised
的默认值,并且如果在不带参数的情况下执行 fasttext skipgram
(等),您会看到其他默认值。 (实际上,将这些参数设置为 0
使得用于单词建模的 Fasttext 本质上是普通的 word2vec。)
鉴于
supervised
模式似乎将这些默认为 0
可能意味着 FastText 的创建者并不认为或发现子词向量在分类情况下同样有用。
但是,您当然可以尝试将它们设置为其他值,并检查它们是否比默认值改善您的分类结果。