class JapaneseWordTokenizer implements Tokenizer {

  private final StringTagger stringTagger;

  public JapaneseWordTokenizer() {
    stringTagger = SenFactory.getStringTagger(null, false);
  }

  @Override  
  public List<String> tokenize(String text) {<FILL_FUNCTION_BODY>}
}

    List<String> ret = new ArrayList<>();
    try {
      synchronized (stringTagger) {
        List<Token> tokens = new ArrayList<>();
        stringTagger.analyze(text, tokens);
        for (Token token : tokens) {
          String basicForm;
          if (token.getMorpheme().getBasicForm().equalsIgnoreCase("*")) {
            basicForm = token.getSurface();
          } else {
            basicForm = token.getMorpheme().getBasicForm();
          }
          ret.add(token.getSurface() + " " + token.getMorpheme().getPartOfSpeech() + " " + basicForm);
        }
      }
    } catch (Exception e) {
      return ret;
    }
    return ret;
  
<no_super_class>