svm的数据表示

时间:2014-07-10 00:36:29

标签: svm libsvm feature-extraction data-representation

我有一百万个文件,其中包含免费文字。已为每个文件分配了代码或代码数。代码可以假定为类别。我通过删除停用词来规范化文本。我正在使用scikit-learn libsvm来训练模型以预测正确代码(类别)的文件。

我已经阅读和搜索了很多,但我无法理解如何将我的文本数据表示为整数,因为SVM或大多数机器学习工具使用数值进行学习。

我想我需要为整个语料库中的每个术语找到tf-idf。但我仍然不确定如何帮助我将文本数据转换为libsvm格式。

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:1)

您不必被迫使用tf-idf。

首先要遵循这个简单的方法:

  1. 选择所有文档中的所有不同字词。这将是你的词汇。将其保存在文件中。
  2. 对于特定文档中的每个单词,将其替换为词汇表文件中单词的索引。
  3. 并添加单词出现在文档中的时间

  4. 示例:

    我有两个文件(停止删除词,阻止词):

      

    你好世界

      天空晴朗你好

    第1步:我生成以下词汇

    hello
    sky
    sunny
    world
    

    第2步:

    我可以像这样代表我的文件:

      

    1 4

    (因为单词hello在词汇表中位于第1位,单词world位于第4位) 和

      

    1 2 3 1


    第3步:我在每个字词附近添加术语频率并删除重复项

      

    1:1 4:1

    (因为单词hello在文档中出现1次,单词world出现1次)

      

    1:2 2:1 3:1


    如果在每行前面添加类号,则会有一个libsvm格式的文件:

    1 1:1 4:1
    2,3 1:2 2:1 3:1 
    

    这里第一个文档有第1类,第二个文档有第2和第3类。

    在此示例中,每个单词与术语频率相关联。要使用tf-idf,你可以这样做,但用计算的tf-idf替换tf。