@Override public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = ((Text) value).toString(); List<String> tokens = new ArrayList<String>(); StringTokenizer itr = new StringTokenizer(line); int numWords = 0; while (itr.hasMoreTokens() && numWords < 100) { String w = itr.nextToken().toLowerCase().replaceAll("(^[^a-z]+|[^a-z]+$)", ""); if (w.length() == 0) continue; if (!tokens.contains(w)) { tokens.add(w); } numWords++; } for (int i = 0; i < tokens.size(); i++) { MAP.clear(); for (int j = 0; j < tokens.size(); j++) { if (i == j) continue; MAP.increment(tokens.get(j)); } KEY.set(tokens.get(i)); context.write(KEY, MAP); } }