1

我有一百万个文件,其中包括自由文本。每个文件都被分配了一个代码或多个代码。可以将代码假定为类别。我通过删除停用词对文本进行了规范化。我正在使用 scikit-learn libsvm 来训练模型以预测正确代码(类别)的文件。

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

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

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

4

1 回答 1

1

您不必强制使用 tf-idf。

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

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

例子:

我有两个文件(停用词删除,词干):

你好世界

你好天空晴朗你好

第 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 替换为计算出的 tf-idf。

于 2014-07-10T15:49:01.470 回答