【问题标题】:How to create the train file for svm light when a word occurs many times in a sentence当一个单词在一个句子中出现多次时如何为svm light创建train文件
【发布时间】:2016-05-15 05:28:50
【问题描述】:

我正在使用 SVM-Light(在网站 http://svmlight.joachims.org/)。我想问你一个问题。 我有一句话“他很聪明,他是个好学生”。这句话是肯定句。当我从这句话创建一个单词列表时,我将有一个列表,每个单词的索引如下:{1 - he, 2 - is, 3 - smart, 4 - and, 5 - a, 6 - good, 7 - 学生}。然后我按单词索引重写句子如下:“1 2 3 4 1 2 5 6 7”。每个单词的值是“1:0.4 2:0.2 3:0.8 4:0.3 1:0.2 2:0.4 5:0.5 6:0.7 7:0.6” 根据train文件的格式,词的索引必须按索引号递增的顺序排列,所以我安排如下“1 1:0.4 1:0.2 2:0.2 2:0.4 3:0.8 4:0.3 5:0.5 6:0.7 7 :0.6"。 但是,我收到一个错误“功能必须按递增顺序!!!”当我运行 svm_learn.我注意到这个错误是因为我的句子有两个“he”词和两个“is”词。在您的火车文件中,每个功能只出现一次。 我应该如何解决这个问题?你给我解释一下? 非常感谢。

【问题讨论】:

    标签: svmlight


    【解决方案1】:

    您不能对同一个功能有多个值。 根据您在问题中所写的内容,我认为,这种情况的解决方案只是忽略某些单词被看到两次的事实,因为本质上这些单词在句子中具有不同的值。

    您可以假设您在一个句子中拥有与您的单词一样多的特征。那就是你的第一个特征将是句子中第一个词的权重,第二个特征是句子中第二个词的权重,第三个特征是句子中第三个词的权重,依此类推。因此,对于您的示例,您将拥有一个特征向量 [1:0.4 2:0.2 3:0.8 4:0.3 5:0.2 6:0.4 7:0.5 8:0.7 9:0.6]。这种方法的问题是不同的句子会有不同的长度。在这种情况下,SVMlight 将假设每个句子的长度都是最长的,其余的值只是零(这本质上是为输入中的特征提供索引背后的想法:在稀疏数据的情况下,这只允许提及具有非零值的特征)。这么说,如果你的数据中的第二个句子恰好是“他不仅聪明而且他也是一个好学生”,那么 first 句子的特征向量将被解释为:[1:0.4 2:0.2 3:0.8 4:0.3 5:0.2 6:0.4 7:0.5 8:0.7 9:0.6 10:0.0 11:0.0 12:0.0] .

    另一种解决方案是像您一样创建一个“字典”,然后如果该词在一个句子中出现多次,则组合该词的值。这可以通过取最大值/最小值、平均值、总和、乘积等来完成。您可能希望组合这些功能的方式取决于应用程序的领域。例如,如果您决定取一个单词的所有值的总和,那么您的字典 {1 - he, 2 - is, 3 - smart, 4 - and, 5 - a, 6 - good, 7 - student} 的特征向量将是:1:0.6 2:0.6 3:0.8 4:0.3 5:0.5 6:0.7 7:0.6

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 2012-01-06
      • 2022-06-19
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多