Регулярное выражение или база данных для проверки, является ли строка именем человека? - PullRequest
2 голосов
/ 18 ноября 2009

У меня есть приложение, которое читает XML-информацию о названии транспортного средства и анализирует ее в моем приложении. В моей базе данных я всегда храню свои имена в соответствии с тем, является ли это имя человека или название компании (потому что это может произойти в моей системе). Проблема в том, что источник XML имеет данные об имени, но он не указывает, является ли он физическим лицом или компанией. Мне нужно знать, чтобы я мог сохранить его в своей базе данных. Есть ли база данных имен или регулярное выражение или библиотека, которая может проверить строку, чтобы увидеть, соответствует ли она имени человека? Спасибо!

Ответы [ 5 ]

5 голосов
/ 18 ноября 2009

Нет, нет способа узнать. Вы имеете дело с ребенком Фрэнка Заппы, Лунным отделением, или с Лунным подразделением, вашим источником номер один для настоящих лунных рок-памятных вещей? Имена могут быть любыми, названия компаний могут быть любыми (включая имена их владельцев!). Единственный способ узнать наверняка, что это, если данные вам предоставлены.

5 голосов
/ 18 ноября 2009

У большой телекоммуникационной компании, на которой я работал, была эта проблема. Мы проверили следующее регулярное выражение на 2 миллиона плюс имена

([A-Z][a-z][a-z]*)  *([A-Z][a-z]*)\.?  *([A-Z][a-z][a-z][a-z]*)

Мы получили точность 99,8%. Данные были довольно чистыми. Это было для механизма регулярных выражений в C - так что синтаксис может немного отличаться от Perl. Я не знаю если ты понадобится скобка.

0 голосов
/ 20 марта 2019

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

Вы можете использовать эти наборы данных для обучения вашей модели с именами

https://mbejda.github.io/

и тогда у вас будет очень точная модель, чтобы определить, является ли слово именем человека.

Рекомендовать Python и библиотеку scki-learn.

Надеюсь, эта помощь.

Пожалуйста, спросите меня, есть ли у вас проблемы

С уважением.

0 голосов
/ 18 ноября 2009

Ну, у имен, очевидно, есть имя и фамилия, разделенные пробелом, у компаний, с другой стороны, были бы Ltd (Limited), PLC (Открытая листинговая компания) или LLC (тип компании, зарегистрированный в соответствии с правилами США). ... Я собираюсь сойти с проторенной дорожки здесь? если last_name и first_name пустые, проверьте поле компании и наоборот ... Кажется, вы поместили комбинацию двух в одно поле, что усложняет процесс ....

0 голосов
/ 18 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...