TfIdf.java Normalization.java

123 return mean; } private double[] getStdDevdouble[][] mat { std = new double[mat.length]; for int i = 0; i mat.length; i++ { double temp = 0; for int j = 0; j mat[i].length; j++ { temp += Math.powmat[i][j] - mean[i], 2; } temp = temp mat[i].length; std[i] = Math.sqrttemp; } return std; } private double[] getMindouble[][] mat { min = new double[mat[0].length]; for int i = 0; i mat[0].length; i++ { double m = mat[0][i]; for int j = 0; j mat.length; j++ { if mat[j][i] m { m = mat[j][i]; } } min[i] = m; } return min; } private double[] getMaxdouble[][] mat { max = new double[mat[0].length]; for int i = 0; i mat[0].length; i++ { 124 double m = mat[0][i]; for int j = 0; j mat.length; j++ { if mat[j][i] m { m = mat[j][i]; } } max[i] = m; } return max; } }

6. VarianceInit.java

package sentimentanalysis; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; public class VarianceInit { private LinkedHashMapInteger, Double varianceMap = new LinkedHashMap; private LinkedHashMapInteger, double[] sortedMap = new LinkedHashMap; private LinkedHashMapInteger, double[] centroidMap = new LinkedHashMap; private int max; public VarianceInitLinkedHashMapInteger, double[] feature, int k { LinkedHashMapInteger, double[] termsMap = new LinkedHashMap; for int i = 1; i = feature.get1.length; i++ { double[] d = new double[feature.size]; for int j : feature.keySet { 125 d[j - 1] = feature.getj[i - 1]; } termsMap.puti, d; } getVariancetermsMap; sortMapfeature; getInitCentsortedMap, k; } public LinkedHashMap getInitialCentroid { return centroidMap; } public LinkedHashMap getSortedMap { return sortedMap; } private void getVarianceLinkedHashMapInteger, double[] map { max = 1; for int key : map.keySet { double[] data = map.getkey; double sum = 0; double mean; double temp = 0; double variance; for double a : data { sum += a; } mean = sum data.length; for double a : data { temp += mean - a mean - a; 126 } variance = temp data.length; varianceMap.putkey, variance; if varianceMap.getkey varianceMap.getmax { max = key; } } } private LinkedHashMap sortMapLinkedHashMapInteger, double[] passedMap { ArrayList mapKeys = new ArrayListpassedMap.keySet; ArrayList mapValues = new ArrayList; for int key : passedMap.keySet { mapValues.addpassedMap.getkey[max - 1]; } Collections.sortmapValues; Collections.sortmapKeys; Iterator valueIt = mapValues.iterator; while valueIt.hasNext { Object val = valueIt.next; Iterator keyIt = mapKeys.iterator; while keyIt.hasNext { Object key = keyIt.next; double comp1 = passedMap.getkey[max - 1]; double comp2 = double val; if comp1 == comp2 { mapKeys.removekey; sortedMap.putint key, passedMap.getkey; break; } } } 127 return sortedMap; } private LinkedHashMap getInitCentLinkedHashMapInteger, double[] sortedMap, int k { ArrayList mapKeys = new ArrayListsortedMap.keySet; int splitSize = int Math.ceildouble sortedMap.size k; int x = 0; for int i = 0; i k - 1; i++ { ArrayList index = new ArrayList; for int j = x; j = x + splitSize - 1; j++ { index.addmapKeys.getj; } centroidMap.putmedianindex, sortedMap.getmedianindex; x = x + splitSize; } ArrayList index = new ArrayList; for int j = x; j sortedMap.size; j++ { index.addmapKeys.getj; } centroidMap.putmedianindex, sortedMap.getmedianindex; return centroidMap; } public static int medianArrayList m { int middle = m.size 2; if m.size 2 == 1 { return int m.getmiddle; } else { return intintm.getmiddle - 1 + intm.getmiddle 2; } } } 128

7. Distance.java

package sentimentanalysis; public class Distance { double dotProduct = 0.0; double magnitude1 = 0.0; double magnitude2 = 0.0; double cosSim; double eucDist = 0.0; double manDist = 0.0; public double cosineSimilaritydouble[] input1, double[] input2 { for int i = 0; i input1.length; i++ { dotProduct += input1[i] input2[i]; magnitude1 += Math.powinput1[i], 2; magnitude2 += Math.powinput2[i], 2; } magnitude1 = Math.sqrtmagnitude1; magnitude2 = Math.sqrtmagnitude2; if magnitude1 = 0.0 magnitude2 = 0.0 { cosSim = dotProduct magnitude1 magnitude2; } else { return 0.0; } return cosSim; } public double euclideanDistancedouble[] input1, double[] input2 { for int i = 0; i input1.length; i++ { 129 eucDist += Math.powinput1[i]-input2[i], 2; } eucDist = Math.sqrteucDist; return eucDist; } public double manhattanDistancedouble[] input1, double[] input2 { for int i = 0; i input1.length; i++ { manDist += Math.absinput1[i]-input2[i]; } return manDist; } }

8. NegationHandling.java

package sentimentanalysis; import java.util.ArrayList; import java.util.LinkedHashMap; public class NegationHandling { public LinkedHashMap negationHandlingLinkedHashMapInteger, ArrayListString map { for int key : map.keySet { ArrayListString list = map.getkey; for int i = 0; i list.size; i++ { String check = list.geti; switch check { case tidak: if i + 1 = list.size - 1 { list.seti, tidak + list.geti + 1;