J'utilise l'API JAVA de Weka pour classer des documents selon différentes caractéristiques textuelles. En utilisant la classe TextDirectoryLoader
, je peux charger un répertoire avec des fichiers txt contenant du texte, transformer le texte en fonction numérique et classer les instances plus tard. Le problème est que ce texte sera représenté par une seule entité String dans l'ensemble de données.Comment charger des attributs textuels séparés dans weka TextDirectoryLoader?
Par exemple:
TextDirectoryLoader loader = new TextDirectoryLoader();
loader.setDirectory(new File(dataDir));
Instances dataRaw = loader.getDataSet();
StringToWordVector filter = new StringToWordVector();
filter.setInputFormat(dataRaw);
Instances dataFiltered = Filter.useFilter(dataRaw, filter);
« dataRaw » contiendra un attribut qui est le texte et un attribut qui est la classe (dérivée de la taxonomie répertoire): System.out.println(dataRaw.numAttributes()); // outputs 2
Est-il possible de séparer le texte dans les fichiers txt d'origine (par exemple avec délimiteurs?), de sorte que les différents attributs textuels sont chargés au lieu d'un seul?
Une option serait d'insérer quelques nouveaux attributs après, par exemple:
dataRaw.insertAttributeAt(new Attribute("attr2", (FastVector) null), dataRaw.numAttributes());
for (int i = 0; i < dataRaw.numInstances(); i++) {
dataRaw.instance(i).setValue(2, "sometext");
}
Ou créer un fichier arff comme:
@relation whatever
@attribute attr1 String
@attribute attr2 String
...
Est-il possible le réglage ci-dessus pourrait être atteint par le 'TextDirectoryLoader'? Merci d'avance!