/*
* Carrot2 project.
*
* Copyright (C) 2002-2010, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/
package org.carrot2.examples.core;
import java.io.InputStream;
import java.util.Map;
import org.carrot2.clustering.lingo.LingoClusteringAlgorithm;
import org.carrot2.core.Controller;
import org.carrot2.core.ControllerFactory;
import org.carrot2.core.ProcessingResult;
import org.carrot2.core.attribute.CommonAttributesDescriptor;
import org.carrot2.examples.ConsoleFormatter;
import org.carrot2.examples.SampleDocumentData;
import org.carrot2.util.CloseableUtils;
import org.carrot2.util.attribute.AttributeValueSets;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
/**
* This example shows how load a set of attribute values from an XML stream.
*
* @see SavingAttributeValuesToXml
* @see <a href="http://download.carrot2.org/head/manual/#section.customizing.component-suites-and-attributes.saving-with-workbench">Saving attributes to XML using Carrot2 Document Clustering Workbench</a>
*/
public class LoadingAttributeValuesFromXml
{
public static void main(String [] args) throws Exception
{
InputStream xmlStream = null;
try
{
xmlStream = LoadingAttributeValuesFromXml.class
.getResourceAsStream("algorithm-lingo-attributes.xml");
// Load attribute value sets from the XML stream
final AttributeValueSets attributeValueSets = AttributeValueSets
.deserialize(xmlStream);
// Get the desired set of attribute values for use with further processing
final Map<String, Object> defaultAttributes = attributeValueSets
.getDefaultAttributeValueSet().getAttributeValues();
final Map<String, Object> fasterClusteringAttributes = attributeValueSets
.getAttributeValueSet("faster-clustering").getAttributeValues();
// Perform processing using the attribute values
final Controller controller = ControllerFactory.createSimple();
// Initialize the controller with one attribute set
controller.init(fasterClusteringAttributes);
// Perform clustering using the attribute set provided at initialization time
Map<String, Object> requestAttributes = Maps.newHashMap();
CommonAttributesDescriptor.attributeBuilder(requestAttributes)
.documents(Lists.newArrayList(SampleDocumentData.DOCUMENTS_DATA_MINING))
.query("data mining");
ProcessingResult results = controller.process(requestAttributes, LingoClusteringAlgorithm.class);
ConsoleFormatter.displayClusters(results.getClusters());
// Perform clustering using some other attribute set, in this case the
// one that is the default in the XML file.
requestAttributes =
CommonAttributesDescriptor.attributeBuilder(Maps.newHashMap(defaultAttributes))
.documents(Lists.newArrayList(SampleDocumentData.DOCUMENTS_DATA_MINING))
.query("data mining").map;
results = controller.process(requestAttributes, LingoClusteringAlgorithm.class);
ConsoleFormatter.displayClusters(results.getClusters());
}
finally
{
CloseableUtils.close(xmlStream);
}
}
}