2

我可能误解了快速文本/深度学习如何用于分类,我想考虑最近邻来预测标签。我工作的目的是用同义词预测标签。

我用 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

还有很多其他带有其他标签的消息,如果没有找到,则为“ok”。

“skype”的最近邻居是(带有fasttext nn models/sem.bin):

  • 电子邮件
  • 振动器
  • 电子邮件
  • skp

这很好,fasttext 给了我很好的相似词。但如果我问一个预测:

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?

4

1 回答 1

1

因为您使用示例训练模型,其中只有带有“Skype”一词的消息具有标签 Skype。因此,带有“电子邮件”和“Viber”等词的消息被标记为“ok”。

你的第一遍告诉你应该重新贴标签。使用正则表达式来标记数据总是会导致这样的问题。您现在至少可以将任何带有“电子邮件”或“Viber”的消息重新标记为“__label__skype”,这样它就会学习这种模式。但是,它可能不会比仅使用正则表达式作为分类器更好,因为模型将学习进入的模式:如果它有这个短列表中的一个单词,则将其标记为“Skype”,否则将其标记为“好的”。

通过手动标记数据而不是使用正则表达式,您可以获得更好的结果。

于 2018-07-09T06:23:29.570 回答