feat: улучшение regexp + деплой одного инстанса
This commit is contained in:
@@ -153,6 +153,25 @@ public final class NameDictionary {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Слово само по себе похоже на имя, фамилию или отчество — без ролевого слова
|
||||
* или соседнего личного имени рядом, самое слабое основание для ФИО. Точное
|
||||
* совпадение с личным именем принимается в любом регистре («иван» тоже имя),
|
||||
* а вот словообразовательная эвристика (фамилия/отчество по окончанию) —
|
||||
* только с заглавной буквы: без этого «законов», «домов», «холодов» —
|
||||
* обычные родительные падежи, а не фамилии — ложно матчились бы.
|
||||
*/
|
||||
public static boolean isStandaloneNameCandidate(String word) {
|
||||
String lower = word.toLowerCase(Locale.ROOT);
|
||||
if (GIVEN_NAMES.contains(lower)) {
|
||||
return true;
|
||||
}
|
||||
if (word.isEmpty() || !Character.isUpperCase(word.codePointAt(0))) {
|
||||
return false;
|
||||
}
|
||||
return isPatronymic(lower) || isSurname(lower);
|
||||
}
|
||||
|
||||
/** Отчество: Иванович, Петровна, Сидоровна. */
|
||||
private static boolean isPatronymic(String lower) {
|
||||
return lower.matches(".*(?:ович|евич|овна|евна|ична|ичн)$");
|
||||
|
||||
Reference in New Issue
Block a user