【问题标题】:String array attribute in wekaweka中的字符串数组属性
【发布时间】:2017-01-16 03:03:53
【问题描述】:

我需要一个 weka 训练文件 (arff) 来包含一个名称 (String) 和一个与该名称关联的字符串数组,以便分类器在我对任何文本运行时将名称与这些字符串相关联。对于这个任务,我如何在 weka 中创建一个字符串数组的属性?或者有没有其他方法可以做到这一点?

(我使用的是朴素贝叶斯分类器)

例如: Deepika Shah,贪婪的读者,有趣,漂亮

因此,如果我有一个包含上面给出的任何与 Deepika Shah 的字符串的句子,它应该将该句子归类为关于 Deepika Shah。

编辑: 我需要使用句子中的单词和短语将句子分类为关于名称的句子。所以我给出了一组与名称相关联的字符串以及它们与什么名称相关联。分类器应该从句子中找到类别。或者,在我从句子中提取特征之后(假设我已经提取了特征)。

【问题讨论】:

  • 那么你的名字是你想要为字符串数组预测的类吗?能否请您提供至少一个示例,以便我们清楚地了解。
  • 是的,名字就是类。
  • 然后在你的字符串数组上使用 StringToWordVector 过滤器(我想你的字符串数组是单词数组,比如说“你是个好人”)。在 StringToWordvector 类中,您可以将字符串数组(由一个或多个单词组成的句子)转换为 N-gram,您可以通过 Tokenizer 类指定 N 的任何值。您需要将字符串数组指定为字符串属性 n arff 文件。在 arff 文件的引号中包含它的值('You are a nice guy')。如果您无法理解此评论,请告诉我,我将在答案部分提供详细分析。
  • 是的,我不太明白你的回答。另外,我的字符串数组是示例中的“贪婪的读者”、“有趣的”、“漂亮的”部分,Deepika Shah 是类。
  • 真的是分类任务吗?类属性有多少个值?请您详细说明您的问题,并提供训练和测试集的详细信息。

标签: java string classification weka arff


【解决方案1】:

您的 arff 文件需要采用以下格式:

@Relation testRelation

@attribute firstAtr string
@attribute secondAtr string
@attribute thirdAtr string
@attribute yourClass {Deepika Shah, secondClass, ...other classes listed here}

@data
"Voracious reader","funny"," pretty",Deepika Shah

...more data here

然后你就可以在weka中导入你的arff文件了。

现在您需要将字符串值转换为数字。为此,您必须使用位于预处理选项卡过滤器部分的weka->unsupervised->attribute->StringToWordVector 过滤器。 您可以单击过滤器来调整参数,如术语表示 (tf,tf-idf)、停用词、词干分析器算法、n-gram 等。 然后点击应用。

此过程完成后,您就可以进入分类选项卡并继续分类。您可以选择您的分类器,一切顺利。

注意:您需要选择名义类(Nom)yourClass(位于测试选项下)才能使开始按钮可点击。

注意2:如果您的刺痛属性是固定值,例如有趣、悲伤、中性等,您可以使用名义属性而不是字符串


p.s 一个包含以上所有内容的好例子可以在这里找到:https://www.youtube.com/watch?v=jSZ9jQy1sfE

【讨论】:

  • 我的问题是每个类的字符串属性的数量可以不同。 Deepika Shah 可能有 3 个字符串来描述她,Katrina Kaif 可能有 5 个字符串,等等。在这种情况下我该怎么办?
  • 3 个字符串是什么意思?如果您的意思是有 n 个字符串来描述一个类,那么您应该手动将所有 n 个字符串替换为一个通用类。例如,如果 Deepika Shah、blablabla1、blablabla2 指的是同一个类,则将所有 blablabla1 和 blablabla2 替换为 Deepika Shah
  • 你可以只有一个属性并连接所有需要的字符串属性,例如“Voracious reader funny pretty”,Deepika Shah
  • 不需要分隔符。只需将所有单词属性用作单个字符串,无论如何 StringToWordVector 会将它们转换为 N-Grams
  • 是的,它是一回事。 Weka 会根据您在 stringToWordVector 过滤器上设置的表示形式自动将您的字符串转换为向量
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 2013-03-16
  • 2012-07-21
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 2018-08-15
相关资源
最近更新 更多