我可能会误解快速文本/深度学习如何用于分类,我想考虑最近的邻居来预测标签。我的工作目的是预测带有同义词的标签。
我用fasttext训练了一个大数据集:
fasttext supervised -input data/spam_status.txt -output models/sem -lr 1.0 -wordNgrams 1 -epoch 25
spam_status.txt使用正则表达式标记包含单词“ skype”的邮件:
__label__skype i dont have skype __NUMBER__ sorry
__label__skype skype
__label__skype si ta un skype si
__label__skype i will give u my skype
__label__skype pv ici no skype
__label__skype skype
还有大量带有其他标签的其他消息,如果找不到任何内容,则单击“确定”。
“ skype”的最近邻居是(带有fasttext nn models/sem.bin
):
这太好了,快速文本给我很好的类似词语。但是如果我问一个预测:
fasttext predict-prob ./models/sem.bin -
donne moi ton skype
__label__skype 1.00001
donne moi ton viber
__label__ok 1.00001
donne moi ton emaill
__label__ok 1.00001
为什么这里不考虑NN?
答案 0 :(得分:1)
因为您使用示例训练了模型,其中只有带有单词“ skype”的消息带有标签Skype。因此,带有“电子邮件”和“ Viber”之类的单词的消息被标记为“确定”。
您的第一遍数据告诉您应该重新标记。使用正则表达式标记数据总是会引起这样的问题。现在,您至少可以将任何带有“电子邮件”或“ Viber”的消息重新标记为“ __label__skype”,这样它将学习该模式。但是,它可能不会给您带来任何好处,而不仅仅是使用正则表达式作为分类器,因为该模型将学习正在使用的模式:如果它具有该简短列表中的单词之一,则将其标记为“ Skype”,否则将其标记为“好”。
通过听起来几个小时手动标记数据而不是使用正则表达式,您可以获得更好的结果。