2017-04-03 3 views
0

1- J'essaie d'appliquer le filtre StringToWordVector au texte par le codage java, mais cela ne fonctionne pas. La sortie du filtre est incorrecte. le code que je:Erreur StringToWordVectore dans Java pour la classification de texte

Instances instances = source.getDataSet(); 
instances.setClassIndex(instances.numAttributes()-1); 
StringToWordVector stwv = new StringToWordVector(); 
//Splits a string into an n-gram with min and max grams. 
NGramTokenizer tokenizer = new NGramTokenizer(); 
tokenizer.setNGramMinSize(1); 
tokenizer.setNGramMaxSize(1); 
tokenizer.setDelimiters(" \r\n\t.,;:'\"()?!'"); 
stwv.setTokenizer(tokenizer); 

stwv.setDoNotOperateOnPerClassBasis(true); 
stwv.setOutputWordCounts(true); 
stwv.setDictionaryFileToSaveTo(new File("/forEclips/RandomForset/DictionaryFile.txt")); 
//------------------------ 
stwv.setInputFormat(instances); 
// Apply the filter 
Instances dataFiltered = weka.filters.Filter.useFilter(instances, stwv); 
System.out.println("\n\nFiltered data:\n\n" + dataFiltered.toString()); 

Le résultat ressemble à:

@relation 'DIMS-weka.filters.unsupervised.attribute.StringToWordVector-R1-W10-prune-rate-1.0-C-N0-stemmerweka.core.stemmers.NullStemmer-stopwords-handlerweka.core.stopwords.Null-M1-O-tokenizerweka.core.tokenizers.NGramTokenizer -max 1 -min 1 -delimiters \" \\r\\n\\t.,;:\\\'\\\"()?!\\\'\"-dictionary/forEclips/RandomForset/DictionaryFile.txt 
@attribute class {Di,MS} 
@attribute اشبو numeric 
@attribute اللي numeric 
@attribute المويه numeric 
@attribute النار numeric 
@attribute تشوفوا numeric 
@attribute تعرفون numeric 
@attribute حبايبي numeric 
@attribute حجازي numeric 
@attribute خلال numeric 
@attribute دي numeric 
@attribute زي numeric 
@attribute سيدي numeric 
@attribute صور numeric 
@attribute في numeric 
@attribute كتير numeric 
@attribute كتييير numeric 
@attribute كتيييير numeric 
@attribute كده numeric 
@attribute مثل numeric 
@attribute من numeric 
@attribute مو numeric 
@attribute هل numeric 
@attribute وعيشوا numeric 
@attribute وقدود، numeric 
@attribute يا numeric 
@attribute يده numeric 

@data 
{0 MS,9 1,13 3,20 2} 
{0 MS,9 3,13 1,20 2} 
{0 MS,6 1,22 1} 
{5 1,16 1,17 1,23 1,24 1} 
{2 2,3 1,4 1,8 1,11 1,14 2,19 1,21 1,26 2} 
{1 1,7 1,10 1,12 1,15 1,18 1,20 1,25 1}` 

On peut voir ici, il ne met pas la classe à la fin dans la section @ ajout attribute.In, dans la section @data, les trois premières instances, la classe dans la première, tandis que les trois dernières, ne possèdent aucun identifiant de classe et de classe. Il devrait être à la fin de la classe avec c'est id.

2- De plus, je veux ajouter un attribut (newattribut) avec le type numérique pour toutes les instances que j'ai avec le même poids (valeur = 44).
que signifie la section @attribute ressemblera:

@attribute اشبو numeric 
    @attribute اللي numeric 
    @attribute المويه numeric 
    @attribute النار numeric 
    @attribute تشوفوا numeric 
    @attribute تعرفون numeric 
    @attribute حبايبي numeric 
    @attribute حجازي numeric 
    @attribute خلال numeric 
    @attribute دي numeric 
    @attribute زي numeric 
    @attribute سيدي numeric 
    @attribute صور numeric 
    @attribute في numeric 
    @attribute كتير numeric 
    @attribute كتييير numeric 
    @attribute كتيييير numeric 
    @attribute كده numeric 
    @attribute مثل numeric 
    @attribute من numeric 
    @attribute مو numeric 
    @attribute هل numeric 
    @attribute وعيشوا numeric 
    @attribute وقدود، numeric 
    @attribute يا numeric 
    @attribute يده numeric 
    @attribute newattribute numeric 
    @attribute class {Di,MS} 


    @data 
    {8 1,12 3,19 2,26 44,27 MS} 
    {8 3,12 1,19 2,26 44, 27 MS} 
    {5 1,21 1,26 44,27 MS} 
    {4 1,15 1,16 1,22 1,23 1,26 44,27 Di} 
    {1 2,2 1,3 1,7 1,10 1,13 2,18 1,20 1,25 2,26 44,27 Di} 
    {0 1,6 1,9 1,11 1,14 1,17 1,19 1,24 1,26 44,27 Di} 

3- Je veux utiliser ces données de formation pour classer le texte par Naive Baîse, Forêt aléatoire et SVM. Comment construire la validation croisée pour l'entraînement et le test des données en utilisant la bibliothèque weka dans Java. J'essaye d'employer SVM en ajoutant Libsvm dans le chemin de construction de java mis cela me donne une erreur.

Cordialement;

+0

Y a-t-il une commande ou une suggestion? S'il vous plaît. –

+0

J'essaye d'ao la même idée dans cet exemple http://stackoverflow.com/documentation/weka/7753/text-classification/25415/text-classification-with-liblinear#t=201702100929141774578 mais ne fonctionne pas –

Répondre