The RapidMiner community is on read-only mode until further notice. Technical support via cases will continue to work as is. For any urgent licensing related requests from Students/Faculty members, please use the Altair academic forum here.
How to use TextInput operator
Hi,
I am running some test and I want to use TextInput operaotr in my code so can I read a bunch of text files(which is in a specific location) in order to do the textclassifiction. Can some one please show how to use the TextInput operator in my code so I can read some text files and get the classification (I am new in programming).
My test code:===================================
import java.io.File;
import java.io.IOException;
import com.rapidminer.RapidMiner;
import com.rapidminer.example.Example;
import com.rapidminer.example.ExampleSet;
import com.rapidminer.operator.IOContainer;
import com.rapidminer.operator.Model;
import com.rapidminer.operator.Operator;
import com.rapidminer.operator.OperatorChain;
import com.rapidminer.operator.OperatorCreationException;
import com.rapidminer.operator.OperatorException;
import com.rapidminer.tools.OperatorService;
public class tect {
private OperatorChain wvtoolOperator;
private Operator modelApplier;
private Model model;
public tect(File modelFile, File wordListFile)
throws IOException, OperatorCreationException, OperatorException {
String path="C:\\Program Files\\Rapid-I\\RapidMiner-4.3\\";
System.setProperty("rapidminer.home",path );
//String pluginDirString = new File("rapidminer.home","C:\\Documents and Settings\\ssubpol\\Desktop\\WorkFile\\rapidminertest\\lib").getAbsolutePath();
// System.setProperty(RapidMiner.PROPERTY_RAPIDMINER_INIT_PLUGINS_LOCATION, pluginDirString);
//String pluginDirString=new File ();
RapidMiner.init(false, false, false, true);
// Create the text input operator and set the path to the word list you stored using Rapid Miner
// As there is only a single text, we use the SingleTextInput operator
wvtoolOperator = (OperatorChain) OperatorService
.createOperator("SingleTextInput");
wvtoolOperator.setParameter("input_word_list", wordListFile
.getAbsolutePath());
// Add additional processing steps.
// Note the setup must be same as the one you used when creating the classification model
wvtoolOperator.addOperator(OperatorService.createOperator("StringTokenizer"));
wvtoolOperator.addOperator(OperatorService.createOperator("EnglishStopwordFilter"));
wvtoolOperator.addOperator(OperatorService.createOperator("TokenLengthFilter"));
wvtoolOperator.addOperator(OperatorService.createOperator("PorterStemmer"));
// Create the model applier
modelApplier = OperatorService.createOperator("ModelApplier");
// Load the model into a field of the class
Operator modelLoader = OperatorService.createOperator("ModelLoader");
modelLoader.setParameter("model_file", modelFile.getAbsolutePath());
IOContainer container = modelLoader.apply(new IOContainer());
model = container.get(Model.class);
}
public String apply(String text) throws OperatorException {
// Set the text
wvtoolOperator.setParameter("text", text);
// Call the text input operator
IOContainer container = wvtoolOperator.apply(new IOContainer(model));
// Call the model applier (the model was added already before calling the text input)
container = modelApplier.apply(container);
// Obtain the example set from the io container. It contains only a single example with our text in it.
ExampleSet eset = container.get(ExampleSet.class);
Example e = eset.iterator().next();
// Compare the predicted label with the positive label
return eset.getAttributes().getPredictedLabel().getMapping().mapIndex((int) e.getPredictedLabel());
}
public static void main(String args[]) throws Exception {
// Create a text classifier
//System.setProperty("rapidminer.home", "C:\\Documents and Settings\\ssaha\\Desktop\\Workstation2\\rapidminertest\\data\\");
tect tr = new tect(
new File(
"C:\\Documents and Settings\\ssaha\\Desktop\\Workstation2\\rapidminertest\\data\\mod2.mod"),
new File(
"C:\\Documents and Settings\\ssaha\\Desktop\\Workstation2\\rapidminertest\\data\\wordlist.list"));
// Call the classifier with texts
System.out.println("Test1:" + tr.apply("sdjklfjasd'jgma'sd jd'sjf'sjk"));
System.out.println("Test2:" + tr.apply("workstation intel switch"));
System.out.println("Test3:" + tr.apply("workstation exploit cinninati"));
}
}
Please help me out, I am stuck!!!!!! help....
I am running some test and I want to use TextInput operaotr in my code so can I read a bunch of text files(which is in a specific location) in order to do the textclassifiction. Can some one please show how to use the TextInput operator in my code so I can read some text files and get the classification (I am new in programming).
My test code:===================================
import java.io.File;
import java.io.IOException;
import com.rapidminer.RapidMiner;
import com.rapidminer.example.Example;
import com.rapidminer.example.ExampleSet;
import com.rapidminer.operator.IOContainer;
import com.rapidminer.operator.Model;
import com.rapidminer.operator.Operator;
import com.rapidminer.operator.OperatorChain;
import com.rapidminer.operator.OperatorCreationException;
import com.rapidminer.operator.OperatorException;
import com.rapidminer.tools.OperatorService;
public class tect {
private OperatorChain wvtoolOperator;
private Operator modelApplier;
private Model model;
public tect(File modelFile, File wordListFile)
throws IOException, OperatorCreationException, OperatorException {
String path="C:\\Program Files\\Rapid-I\\RapidMiner-4.3\\";
System.setProperty("rapidminer.home",path );
//String pluginDirString = new File("rapidminer.home","C:\\Documents and Settings\\ssubpol\\Desktop\\WorkFile\\rapidminertest\\lib").getAbsolutePath();
// System.setProperty(RapidMiner.PROPERTY_RAPIDMINER_INIT_PLUGINS_LOCATION, pluginDirString);
//String pluginDirString=new File ();
RapidMiner.init(false, false, false, true);
// Create the text input operator and set the path to the word list you stored using Rapid Miner
// As there is only a single text, we use the SingleTextInput operator
wvtoolOperator = (OperatorChain) OperatorService
.createOperator("SingleTextInput");
wvtoolOperator.setParameter("input_word_list", wordListFile
.getAbsolutePath());
// Add additional processing steps.
// Note the setup must be same as the one you used when creating the classification model
wvtoolOperator.addOperator(OperatorService.createOperator("StringTokenizer"));
wvtoolOperator.addOperator(OperatorService.createOperator("EnglishStopwordFilter"));
wvtoolOperator.addOperator(OperatorService.createOperator("TokenLengthFilter"));
wvtoolOperator.addOperator(OperatorService.createOperator("PorterStemmer"));
// Create the model applier
modelApplier = OperatorService.createOperator("ModelApplier");
// Load the model into a field of the class
Operator modelLoader = OperatorService.createOperator("ModelLoader");
modelLoader.setParameter("model_file", modelFile.getAbsolutePath());
IOContainer container = modelLoader.apply(new IOContainer());
model = container.get(Model.class);
}
public String apply(String text) throws OperatorException {
// Set the text
wvtoolOperator.setParameter("text", text);
// Call the text input operator
IOContainer container = wvtoolOperator.apply(new IOContainer(model));
// Call the model applier (the model was added already before calling the text input)
container = modelApplier.apply(container);
// Obtain the example set from the io container. It contains only a single example with our text in it.
ExampleSet eset = container.get(ExampleSet.class);
Example e = eset.iterator().next();
// Compare the predicted label with the positive label
return eset.getAttributes().getPredictedLabel().getMapping().mapIndex((int) e.getPredictedLabel());
}
public static void main(String args[]) throws Exception {
// Create a text classifier
//System.setProperty("rapidminer.home", "C:\\Documents and Settings\\ssaha\\Desktop\\Workstation2\\rapidminertest\\data\\");
tect tr = new tect(
new File(
"C:\\Documents and Settings\\ssaha\\Desktop\\Workstation2\\rapidminertest\\data\\mod2.mod"),
new File(
"C:\\Documents and Settings\\ssaha\\Desktop\\Workstation2\\rapidminertest\\data\\wordlist.list"));
// Call the classifier with texts
System.out.println("Test1:" + tr.apply("sdjklfjasd'jgma'sd jd'sjf'sjk"));
System.out.println("Test2:" + tr.apply("workstation intel switch"));
System.out.println("Test3:" + tr.apply("workstation exploit cinninati"));
}
}
Please help me out, I am stuck!!!!!! help....
Tagged:
0
Answers
I do not know much about text mining, but there are some things mixed up in your code, so I suggest...
- Read the tutorial.pdf (also available at rapidminer's page at sourceforge), especially "Extending RapidMiner" and "Integrating RapidMiner in your application"
- Restructure your code
- ask again if you still got problems
good night and good luckSteffen
Please help me how to use Cluster operator in rapidminer?
Thanks,
Palani Thirumal Valavan
your post has nothing to do with the original question. Please open a new thread for a new problem - and more important: in the correct forum.
Cheers,
Ingo