001/**
002 * Copyright (c) 2012, The University of Southampton and the individual contributors.
003 * All rights reserved.
004 *
005 * Redistribution and use in source and binary forms, with or without modification,
006 * are permitted provided that the following conditions are met:
007 *
008 *   *  Redistributions of source code must retain the above copyright notice,
009 *      this list of conditions and the following disclaimer.
010 *
011 *   *  Redistributions in binary form must reproduce the above copyright notice,
012 *      this list of conditions and the following disclaimer in the documentation
013 *      and/or other materials provided with the distribution.
014 *
015 *   *  Neither the name of the University of Southampton nor the names of its
016 *      contributors may be used to endorse or promote products derived from this
017 *      software without specific prior written permission.
018 *
019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
020 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
021 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
022 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
023 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
024 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
025 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
026 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
027 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
028 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029 */
030package org.openimaj.tools.twitter.modes.preprocessing;
031
032import java.io.IOException;
033import java.util.List;
034
035import org.kohsuke.args4j.CmdLineOptionsProvider;
036
037/**
038 * The mode of the twitter processing tool
039 *
040 * @author Sina Samangooei (ss@ecs.soton.ac.uk)
041 *
042 */
043public enum TwitterPreprocessingModeOption implements CmdLineOptionsProvider {
044        /**
045         * Tokenise the tweet using the twokeniser implementation
046         */
047        TOKENISE {
048                @Override
049                public TokeniseMode getOptions() {
050                        return new TokeniseMode();
051                }
052
053        },
054// TODO: Fix the NER stuff
055//      NER{
056//
057//              @Override
058//              public NERMode getOptions() {
059//                              return new NERMode();
060//              }
061//
062//      },
063        /**
064         * Language detection using the langid implementation
065         */
066        LANG_ID {
067                @Override
068                public LanguageDetectionMode getOptions()  {
069                        try {
070                                return new LanguageDetectionMode();
071                        } catch (IOException e) {
072                                return null;
073                        }
074                }
075
076        },
077        /**
078         * Stem tweets. Don't bother with non english tweets.
079         */
080        PORTER_STEM {
081                @Override
082                public TwitterPreprocessingMode<List<String>> getOptions() {
083                        try {
084                                return new StemmingMode();
085                        } catch (IOException e) {
086                                return null;
087                        }
088                }
089        },
090        /**
091         * Remove all stopwords from tokenised items
092         */
093        REMOVE_STOPWORDS{
094
095                @Override
096                public TwitterPreprocessingMode<List<String>> getOptions() {
097                        try {
098                                return new StopwordMode();
099                        } catch (IOException e) {
100                                return null;
101                        }
102                }
103                
104        },
105        /**
106         * Ascribe sentiment
107         */
108        SENTIMENT{
109
110                @Override
111                public TwitterPreprocessingMode<?> getOptions() {
112                        try {
113                                return new SentimentExtractionMode();
114                        } catch (IOException e) {
115                                return null;
116                        }
117                }
118                
119        }
120        ;
121
122        /**
123         * @return An instance (initialising any heavyweight analysis objects) of the mode
124         */
125        @Override
126        public abstract TwitterPreprocessingMode<?> getOptions() ;
127
128}
129