Package etc.aloe.cscw2013

Source Code of etc.aloe.cscw2013.FeatureExtractionImplTest

/*
* This file is part of ALOE.
*
* ALOE is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.

* ALOE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License
* along with ALOE.  If not, see <http://www.gnu.org/licenses/>.
*
* Copyright (c) 2012 SCCL, University of Washington (http://depts.washington.edu/sccl)
*/
package etc.aloe.cscw2013;

import etc.aloe.data.ExampleSet;
import etc.aloe.data.FeatureSpecification;
import etc.aloe.data.Message;
import etc.aloe.data.Segment;
import etc.aloe.data.SegmentSet;
import java.util.Date;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import weka.core.Attribute;
import weka.core.Instances;
import weka.core.SelectedTag;
import weka.filters.unsupervised.attribute.Add;
import weka.filters.unsupervised.instance.RemoveWithValues;

/**
*
* @author Michael Brooks <mjbrooks@uw.edu>
*/
public class FeatureExtractionImplTest {

    public FeatureExtractionImplTest() {
    }

    @BeforeClass
    public static void setUpClass() {
    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    /**
     * Test of extractFeatures method, of class FeatureExtractionImpl.
     */
    @Test
    public void testExtractFeatures() {
        System.out.println("extractFeatures");
        SegmentSet segments = new SegmentSet();

        Segment seg0 = new Segment();
        seg0.add(new Message(0, new Date(), "Alice", "it's"));
        seg0.add(new Message(1, new Date(), "Bob", "cow"));
        seg0.add(new Message(2, new Date(), "Alice", "time"));
        seg0.setTrueLabel(Boolean.TRUE);
        segments.add(seg0);

        Segment seg1 = new Segment();
        seg1.add(new Message(3, new Date(), "Bob", "noooooooo"));
        seg1.setTrueLabel(Boolean.FALSE);
        segments.add(seg1);

        Segment seg2 = new Segment();
        seg2.add(new Message(4, new Date(), "Bob", "once"));
        seg2.add(new Message(5, new Date(), "Alice", "upon"));
        seg2.setTrueLabel(Boolean.FALSE);
        segments.add(seg2);

        Segment seg3 = new Segment();
        seg3.add(new Message(6, new Date(), "Bob", "a"));
        seg3.add(new Message(7, new Date(), "Alice", "time"));
        seg3.setTrueLabel(Boolean.TRUE);
        segments.add(seg3);

        Instances basicInstances = segments.getBasicExamples().getInstances();

        String attrName = "newAtt";
        Add addFilter = new Add();
        addFilter.setAttributeName(attrName);
        addFilter.setAttributeType(new SelectedTag(0, Add.TAGS_TYPE));
        try {
            addFilter.setInputFormat(basicInstances);
        } catch (Exception e) {
            assertTrue(e.getMessage(), false);
        }

        RemoveWithValues removeFilter = new RemoveWithValues();
        removeFilter.setAttributeIndex("3"); //the label attribute
        removeFilter.setNominalIndicesArr(new int[]{0}); //false
        try {
            removeFilter.setInputFormat(addFilter.getOutputFormat());
        } catch (Exception e) {
            assertTrue(e.getMessage(), false);
        }

        FeatureSpecification spec = new FeatureSpecification();
        spec.addFilter(addFilter);
        spec.addFilter(removeFilter);

        FeatureExtractionImpl instance = new FeatureExtractionImpl();
        ExampleSet examples = instance.extractFeatures(segments.getBasicExamples(), spec);
        assertNotNull(examples);
        assertNotNull(examples.getInstances());

        Instances instances = examples.getInstances();
        //3 base attrs + 4 basic features + 1 label
        assertEquals(8, instances.numAttributes());
        //Contains the added attribute in the right place
        assertEquals(attrName, instances.attribute(basicInstances.numAttributes()).name());

        // the middle 2 segments were removed
        assertEquals(2, instances.size());

        //The base attributes are present
        assertNotNull(instances.attribute(ExampleSet.MESSAGE_ATTR_NAME));
        assertNotNull(instances.attribute(ExampleSet.LABEL_ATTR_NAME));
        Attribute idAttr = instances.attribute(ExampleSet.ID_ATTR_NAME);
        assertNotNull(idAttr);

        //Basic features are present
        assertNotNull(instances.attribute(SegmentSet.CPS_ATTR_NAME));

        //The correct segments remain
        assertEquals(seg0.getId(), instances.get(0).value(idAttr), 0);
        assertEquals(seg3.getId(), instances.get(1).value(idAttr), 0);
    }
}
TOP

Related Classes of etc.aloe.cscw2013.FeatureExtractionImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.