//////////////////////////////////////////////////////////////////////////////// // This file is part of MABED. // // // // MABED 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. // // // // MABED 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 MABED. If not, see <http://www.gnu.org/licenses/>. // //////////////////////////////////////////////////////////////////////////////// package fr.ericlab.util; import fr.ericlab.mabed.algo.MABED; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.LinkedList; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.commons.io.FileUtils; import org.apache.commons.io.LineIterator; /** * * @author Adrien GUILLE, ERIC Lab, University of Lyon 2 * @email [email protected] */ public class Util { static public LinkedList<String> readStopWords(String pathToStopwordsFile){ LinkedList<String> stopWords = new LinkedList<>(); if(pathToStopwordsFile != null){ LineIterator it = null; try { it = FileUtils.lineIterator(new File(pathToStopwordsFile), "UTF-8"); while (it.hasNext()) { stopWords.add(it.nextLine()); } } catch (IOException ex) { Logger.getLogger(MABED.class.getName()).log(Level.SEVERE, null, ex); } finally { LineIterator.closeQuietly(it); } } return stopWords; } static public String getDate(){ DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); Date date = new Date(); String dateString = dateFormat.format(date); return dateString; } static public long getTime(){ Date date = new Date(); return date.getTime(); } static public int sum(short tab[], int a, int b){ int sum = 0; for(int i = a; i <= b; i++){ sum += tab[i]; } return sum; } static public float sum(float tab[], int a, int b){ float sum = 0; for(int i = a; i <= b; i++){ sum += tab[i]; } return sum; } static public float[] toFloatArray(short[] array){ float[] newArray = new float[array.length]; for(int i = 0; i < array.length; i++){ newArray[i] = array[i]; } return newArray; } static public float[] smoothArray(float array[], int windowSize){ float[] smoothedArray = new float[array.length]; for(int i = 0; i < array.length-1; i++){ smoothedArray[i] = centeredMovingAverage(array, i, windowSize); } return smoothedArray; } static public float[] smoothArray(short array[], int windowSize){ float[] smoothedArray = new float[array.length]; for(int i = 0; i < array.length-1; i++){ smoothedArray[i] = centeredMovingAverage(array, i, windowSize); } return smoothedArray; } static public double getMedian(double array[]){ Arrays.sort(array); return array[array.length/2]; } static public float centeredMovingAverage(float[] array, int index, int windowSize){ int halfWindowSize = windowSize/2; int possibleLeftWindow = (index >= halfWindowSize)?halfWindowSize:index; int possibleRightWindow = (index+halfWindowSize < array.length-1)? halfWindowSize:array.length-2-index; int i1 = index - possibleLeftWindow, i2 = index + possibleRightWindow; float total = 0; for(int i = i1; i <= i2; i++){ total += array[i]; } return total/(float)(possibleLeftWindow+possibleRightWindow); } static public float centeredMovingAverage(short[] array, int index, int windowSize){ int halfWindowSize = windowSize/2; int possibleLeftWindow = (index >= halfWindowSize)?halfWindowSize:index; int possibleRightWindow = (index+halfWindowSize < array.length-1)? halfWindowSize:array.length-2-index; int i1 = index - possibleLeftWindow, i2 = index + possibleRightWindow; float total = 0; for(int i = i1; i <= i2; i++){ total += array[i]; } return total/(float)(possibleLeftWindow+possibleRightWindow); } }