0

我有一个分类任务,它将一个字符串作为输入并将其分类为一些标签。训练数据如下:

Text1: label_1
Text2: label_2
Text3: label_1

当我使用 weka 时,很多分类给出了例外:

weka.core.UnsupportedAttributeTypeException: weka.classifiers.functions.MultilayerPerceptron: Cannot handle string attributes!
    at weka.core.Capabilities.test(Capabilities.java:979)
    at weka.core.Capabilities.test(Capabilities.java:868)
    at weka.core.Capabilities.test(Capabilities.java:1084)
    at weka.core.Capabilities.test(Capabilities.java:1022)
    at weka.core.Capabilities.testWithFail(Capabilities.java:1301)
4

1 回答 1

4

很难理解您到底想要实现什么,但在机器学习中,大多数分类器都在寻找数字/二进制属性,而不是字符串属性。

您可以做的一件事是使用某些模型将您的特征空间转换为数字/二进制属性。袋模型是一种常见的解决方案。

根据这个模型,你要做的是:

  1. 遍历数据库中的所有“特征”(字符串),为每个字符串/单词分配一个数字/特征
  2. 对于每个分类示例,创建一个具有修改的特征空间的新实例 - 对于每个单词/字符串,您现在有一个数字(从步骤 1 开始),因此将匹配此数字的属性设置为该单词在文本中的出现次数. 标签保持不变
  3. 使用新的(数字)特征空间在修改后的示例上运行学习算法
  4. 在分类过程中,如果您遇到一个无法识别的单词(您之前没有它并且没有分配给它的属性编号) - 您可以默默地忽略它,或者使用一些启发式方法来预测它是否以某种方式连接对你确实看到的一个词。对于初学者,我会忽略它,稍后再回来执行此步骤以进行以后的优化。
于 2012-12-29T15:04:05.520 回答