Я читаю некоторые текстовые файлы в программе 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);
}
Как видите, мне нужно было найти: