Как классифицировать невидимые текстовые данные? - PullRequest
2 голосов
/ 16 января 2020

Я тренирую текстовый классификатор для адресов, так что, если данное предложение является адресом или нет.

Sentence examples :- 
(1) Mirdiff City Centre, DUBAI United Arab Emirates 
(2) Ultron Inc. <numb> Toledo Beach Rd #1189 La Salle, MI <numb>
(3) Avenger - HEAD OFFICE P.O. Box <numb> India

Поскольку адреса могут быть n типов, очень трудно создать такой классификатор. Существует ли какая-либо предварительно обученная модель или база данных для того же или любого другого способа без ML.

Ответы [ 4 ]

2 голосов
/ 25 января 2020

Как упоминалось ранее, проверка правильности адреса - вероятно, лучше формализовать как проблему поиска информации, а не как проблему машинного обучения. (например, с помощью службы).

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

Я бы рекомендовал обогатить данные с NER, например spacy , и используют типы сущностей для функции или правила.

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

0 голосов
/ 27 января 2020

Как упоминал Ури Горен, проблема заключается в распознавании именованных сущностей, в то время как на рынке есть много обученных моделей. Тем не менее, лучшее, что нельзя получить - это NER Стэнфорда.

https://nlp.stanford.edu/software/CRF-NER.shtml Это условное случайное поле NER. Доступен в java.

Если вы ищете python реализацию того же самого. Посмотрите: Как установить и запустить Stanford NERTagger?

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

Спасибо.

0 голосов
/ 20 января 2020

Поскольку вы запрашиваете рекомендации по литературе (кстати, этот вопрос, вероятно, слишком широк для этого места), я могу порекомендовать вам две ссылки: https://www.reddit.com/r/datasets/comments/4jz7og/how_to_get_a_large_at_least_100k_postal_address/

https://www.red-gate.com/products/sql-development/sql-data-generator/

https://openaddresses.io/

Вам необходимо создать помеченные данные, как уже упоминал @Christian Sauer, где у вас есть примеры с адресами. И, вероятно, вам также нужно вводить неверные данные с неправильными адресами! Так, например, вы должны составлять предложения только с номерами телефонов или что-то еще. Но в любом случае это будет довольно несбалансированный набор данных, поскольку у вас будет много правильных адресов и только несколько из них не являются адресами. В общей сложности вам потребуется около 1000 примеров, чтобы иметь для этого отправную точку.

Другой вариант - вручную определить базовые адреса c и выполнить анализ сходства, чтобы определить предложения, наиболее близкие к нему.

0 голосов
/ 16 января 2020

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

Я наконец-то создаю heuristi c (содержит его, например, PO BOX, вероятное название страны (grep wikipedia), может быть, названия городов), а затем бросил каждый оставшийся адрес в API карт Google. GM неплохо распознает адреса, но даже у них могут быть ложные срабатывания, поэтому, скорее всего, потребуется ручная проверка.

Я не использовал ML, потому что моя база данных адресов была "большой", но недостаточно большой для обучения особенно нам не хватало помеченных данных о тренировках.

...