2014-10-01 131 views
0

我检查了各种svm分类器,它使用特征/值对格式进行分类。 (我专注于svmlight - http://svmlight.joachims.org/)格式是这样的:如何将纯文本转换为特征/值对格式

-1 1:0.43 3:0.12 9284:0.2 # abcdef 

但正如我收到用户输入以纯文本的形式,用svmlight分类它,我需要纯文本转换为这种格式。

它是如何做到的?

+0

难道你不能对你的输入文本做tf-idf并且编写一个脚本来将结果转换成libsvm格式吗? – greeness 2014-10-01 23:41:55

回答

1

你必须使用一些实际价值嵌入。换句话说,你在文本空间中有数据,这些文本或多或少都是不同长度的单词序列的空间。有许多方法,一个更好地为一个目的,等 - 另一种,是最简单的包括:

  • 上的字级编码,所以每个字为“维”,所以你的情况 - 你创造一个单词词典并为每个单词分配一个连续的整数。现在每个文档可以被编码为一个矢量,其中每个特征的值例如是“如果该单词在文档中”(单词集合)或者可能是“单词出现了多少次”(单词袋;也被称为tf)或一些更复杂的统计(例如tf-idf;词频与正向文件频率相乘)。
  • 与ngram的编码水平相似,但不是列举每个单词列举每个n-gram(n-gram是n个单词的任何序列),这是更合理的特征,但需要显着更多要训​​练的数据。
  • 使用一些“神奇编码”或专门的“字符串内核”。

前两种方法可以使用scikit学习的TFIDF矢量器轻松完成,看到http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html。最后一个需要更复杂的软件。

相关问题