我有一百万个文件,其中包括自由文本。每个文件都被分配了一个代码或多个代码。可以将代码假定为类别。我通过删除停用词对文本进行了规范化。我正在使用 scikit-learn libsvm 来训练模型以预测正确代码(类别)的文件。
我已经阅读和搜索了很多,但我不明白如何将我的文本数据表示为整数,因为 SVM 或大多数机器学习工具使用数值进行学习。
我想我需要为整个语料库中的每个术语找到 tf-idf。但我仍然不确定这将如何帮助我将文本数据转换为 libsvm 格式。
任何帮助将不胜感激,谢谢。
我有一百万个文件,其中包括自由文本。每个文件都被分配了一个代码或多个代码。可以将代码假定为类别。我通过删除停用词对文本进行了规范化。我正在使用 scikit-learn libsvm 来训练模型以预测正确代码(类别)的文件。
我已经阅读和搜索了很多,但我不明白如何将我的文本数据表示为整数,因为 SVM 或大多数机器学习工具使用数值进行学习。
我想我需要为整个语料库中的每个术语找到 tf-idf。但我仍然不确定这将如何帮助我将文本数据转换为 libsvm 格式。
任何帮助将不胜感激,谢谢。
您不必强制使用 tf-idf。
首先遵循这个简单的方法:
我有两个文件(停用词删除,词干):
你好世界
和
你好天空晴朗你好
第 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。