【问题标题】:Use nearest neighbors to predict text classification with fasttext使用最近邻来预测带有 fasttext 的文本分类
【发布时间】:2018-06-20 16:39:03
【问题描述】:

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

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

【问题讨论】:

    标签: deep-learning text-classification fasttext


    【解决方案1】:

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

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

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

    【讨论】:

    • 那么,预测时从不考虑NN?
    • 我不知道它看的是什么功能,但是当有这么简单的模式时,它只会看那个是有道理的
    猜你喜欢
    • 2014-03-13
    • 2015-05-12
    • 2022-01-25
    • 2016-08-20
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多