Замена знаков препинания Unicode приближением ASCII

Я читаю некоторые текстовые файлы в программе Java и хотел бы заменить некоторые символы Unicode аппроксимациями ASCII. Эти файлы в конечном итоге будут разбиты на предложения, которые будут переданы в OpenNLP. OpenNLP не распознает символы Unicode и дает неправильные результаты по ряду символов (он маркирует «girl» как «girl» и «s», но если это цитата Unicode, она обрабатывается как одиночный маркер).

Например, исходное предложение может содержать направленную цитату Unicode U2018 ('), и я хотел бы преобразовать ее в U0027 ('). В конце концов, я удалю оставшийся Unicode.

Я понимаю, что теряю информацию, и я знаю, что могу писать регулярные выражения для преобразования каждого из этих символов, но я спрашиваю, есть ли код, который я могу повторно использовать для преобразования некоторых этих символов.

Это то, что я мог, но уверен, что буду делать ошибки / пропустить что-то / и т. д .:

    // double quotation (")
    replacements.add(new Replacement(Pattern.compile("[\u201c\u201d\u201e\u201f\u275d\u275e]"), "\""));

    // single quotation (')
    replacements.add(new Replacement(Pattern.compile("[\u2018\u2019\u201a\u201b\u275b\u275c]"), "'"));

replacements - это настраиваемый класс, который я позже использовал и применил замены.

    for (Replacement replacement : replacements) {
         text = replacement.pattern.matcher(text).replaceAll(r.replacement);
    }

Как видите, мне нужно было найти:

  • LEFLE SINGLE QUOTATION MARK
  • RIGHT SINGLE QUOTATION MARK
  • SINGLE LOW -9 ЦИТАТНЫЙ ЗНАК (что это / должен ли я это заменить?)
  • ОДИН ВЫСОКОПЕРЕВЕРНУТЫЙ-9 ЦИТАТНЫЙ ЗНАК (что это / следует ли заменить?)

19
задан schmmd 26 January 2011 в 19:57
поделиться