code: public List<Map.Entry<String, Float>> analogy(String A, String B, String C, int size)
      {
          Vector a = storage.get(A);
          Vector b = storage.get(B);
          Vector c = storage.get(C);
          if (a == null || b == null || c == null)
          {
              return Collections.emptyList();
          }
  
          List<Map.Entry<String, Float>> resultList = nearest(a.minus(b).add(c), size + 3);
          ListIterator<Map.Entry<String, Float>> listIterator = resultList.listIterator();
          while (listIterator.hasNext())
          {
              String key = listIterator.next().getKey();
              if (key.equals(A) || key.equals(B) || key.equals(C))
              {
                  listIterator.remove();
              }
          }
  
          if (resultList.size() > size)
          {
              resultList = resultList.subList(0, size);
          }
  
          return resultList;
      }
docs: 返回跟 A - B + C 最相似的词语,比如 中国 - 北京 + 东京 = 日本。输入顺序按照 中国 北京 东京
  
  @param A    做加法的词语
  @param B    做减法的词语
  @param C    做加法的词语
  @param size topN个
  @return 与(A - B + C)语义距离最近的词语及其相似度列表