code: public static void convertNonCanonicalStrings(final List<Token> sentence,
        final String lang) {
      // System.err.println((int)'’');
      for (final Token token : sentence) {
        token.setTokenValue(
            apostrophe.matcher(token.getTokenValue()).replaceAll("'"));
        token.setTokenValue(
            ellipsis.matcher(token.getTokenValue()).replaceAll(THREE_DOTS));
        token.setTokenValue(
            longDash.matcher(token.getTokenValue()).replaceAll("--"));
        if (lang.equalsIgnoreCase("en")) {
          token.setTokenValue(
              oneFourth.matcher(token.getTokenValue()).replaceAll("1\\\\/4"));
          token.setTokenValue(
              oneThird.matcher(token.getTokenValue()).replaceAll("1\\\\/3"));
          token.setTokenValue(
              oneHalf.matcher(token.getTokenValue()).replaceAll("1\\\\/2"));
          token.setTokenValue(
              threeQuarters.matcher(token.getTokenValue()).replaceAll("3\\\\/4"));
          token.setTokenValue(
              sterling.matcher(token.getTokenValue()).replaceAll("#"));
        }
        token.setTokenValue(
            oneFourth.matcher(token.getTokenValue()).replaceAll("1/4"));
        token.setTokenValue(
            oneThird.matcher(token.getTokenValue()).replaceAll("1/3"));
        token.setTokenValue(
            oneHalf.matcher(token.getTokenValue()).replaceAll("1/2"));
        token.setTokenValue(
            twoThirds.matcher(token.getTokenValue()).replaceAll("2/3"));
        token.setTokenValue(
            threeQuarters.matcher(token.getTokenValue()).replaceAll("3/4"));
        token.setTokenValue(
            cents.matcher(token.getTokenValue()).replaceAll("cents"));
      }
    }
docs: Converts non-unicode and other strings into their unicode counterparts.
  
  @param sentence
  the list of tokens
  @param lang
  the language