Алгоритм поиска имён в тексте

Есть несколько текстов на пару тысяч слов каждый. есть список(пару сотен) имён (Александр, Иван итд).
Если за именем идут слова с большой буквы, то считаем это именем и фамилией.
Есть ли более эффективный способ нахождения имени и фамилии кроме тупого перебора?

хоть это и не важно, но язык — PHP
  • Вопрос задан
  • 4768 просмотров
Пригласить эксперта
Ответы на вопрос 4
Более эффективные алгоритмы конечно есть, но я бы не стал терять время на оптимизацию, если несколько текстов по паре тысяч слов — это все что надо обработать. Есть большая вероятность что создание оптимальной программы займет больше времени чем работа неоптимальной.
Ответ написан
Комментировать
sledopit
@sledopit
При чём тут фамилии и нужны ли они я так и не понял. PHP я знаю на уровне
<?php echo "Hello world" ?>
.
А вот bash я знаю неплохо. И сделал бы так:
for FILE in *txt ; do
comm -12 <(cat $FILE | sed 's/[!?., ]/\n/g'|sort -u) <(sort FILE_WITH_NAME_LIST)
done

Раз просили алгоритм, то делает оно следующее: превращает файл в последовательность строк, где в каждой строке лишь одно слово. Так же подразумевается, что файл с именами представляет из себя тоже такую же последовательность, ну а потом comm таки перебором ищет совпадения.
Сравнить этот способ с php ни по производительсности ни по трудоёмкости, увы, не могу.
Ответ написан
Может я не понял, что хочет именно српашивает автор, но реализовать отбор можно так:
разбиваем строки на куски отдельные (explode), если конечно они разделены, например, только пробелами или каким нибудь символом. Потом аналогично разбиваем отдельно имя на массив символов и проверяем первый символ на заглавную букву.
Ответ написан
winolog
@winolog
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы