У меня есть набор данных из многих британских адресов, которые мне нужно будет проанализировать, и для каждого адреса выведите разные (приемлемые) варианты адреса.
Во-первых, я пытаюсь выяснить, могу ли я уменьшить проблему проще (возможно, используя уже имеющуюся библиотеку)? Если нет, я пытаюсь найти метод использования различных функций Python / R для анализа каждого ввода адреса и получения приемлемых выходных данных.
Например:
(Actual address) Flat 24a Ardshiel Avenue, Drum Brae, Edinburgh EH4 7HP
Допустимые варианты, которые должен выводить код Python / R:
*Flat24a Ardshiel Avenue, Drum Brae, Edinburgh EH4 7HP
*F24a Ardshiel Avenue, Drum Brae, Edinburgh EH4 7HP
*f24a Ardshiel Avenue, Drum Brae, Edinburgh EH4 7HP
*f24 a Ardshiel Avenue, Drum Brae, Edinburgh EH4 7HP
The following sets are also acceptable variant outputs
(with postcodes written without space):
*Flat24a Ardshiel Avenue, Drum Brae, Edinburgh EH47HP
*F24a Ardshiel Avenue, Drum Brae, Edinburgh EH47HP
*f24a Ardshiel Avenue, Drum Brae, Edinburgh EH47HP
*f24 a Ardshiel Avenue, Drum Brae, Edinburgh EH47HP
Некоторые другие формы адреса, которые необходимо проанализировать, что позволяет
варианты для идентификации:
161-163 Newhaven Road, Edinburgh EH6 4QA
49a Torphin Road, Edinburgh EH13 0PQ
23/27 Gylemuir Road, Edinburgh EH12 7UB
Код должен иметь возможность выводить разные варианты (возможно, 5 или 6 разных типов) для каждого адреса, который вводится для синтаксического анализа. В центре внимания должны быть первые две строки адреса (потому что именно здесь люди обычно сокращают слова / упрощают адрес) - остальные строки адреса, которые указывают город / населенный пункт / округ / страну (возможно, потребуется анализировать только обеспечить строчные возможности).
Структура и форма адреса становятся более важными, потому что он должен вывести «f24», так как люди могут написать f24
для Flat 24
и, возможно, даже пробелы между ними. Возможно ли это с помощью Python / R, основанного на регулярных выражениях, и есть ли у кого-нибудь образец, с которым они работали раньше?
#
ОБНОВЛЕНИЕ: Одна из более простых форм использования, о которой я мог подумать, - это анализатор на основе правил. Например, каждый британский адрес структурирован таким образом, что каждая строка в адресе разделяется запятой. Следовательно, правило может применяться до тех пор, пока каждая запятая не заканчивается. После чего следующее правило выполняется и обрабатывает следующую строку, пока запятая не заканчивается.
Flat 24a Ardshiel Avenue, Drum Brae, Edinburgh EH4 7HP
Rule 1 = *Flat 24a Ardshiel Avenue*
The acceptable variant outputs that should be provided by the parser is:
1) Flat 24a Ardshiel Avenue (The actual line itself)
2) Flat 24a, Ardshiel Avenue (With a comma)
3) Flat24a Ardshiel Avenue
4) F24a Ardshiel Avenue
5) f24a Ardshiel Avenue
6) f24 Ardshiel Avenue
7) Flat24a Ardshiel Ave
8) F24a Ardshiel Ave
9) f24a Ardshiel Ave
10) f24 Ardshiel Ave
Rule 2 = *Drum Brae*
The acceptable variant outputs that should be provided by the parser is:
Since, not many variants can be produced with these two seperating words, maybe
and acceptable variant could be:
1) Drum Brae (The actual line itself)
2) DrumBrae (Assuming that people can still denote Street names in this way)
Rule 3 = *Edinburgh EH4 7HP*
The acceptable variant outputs that should be provided by the parser is:
1) Edinburgh EH4 7HP (The actual line itself)
2) Edinburgh EH47HP
В конце каждый вывод (части) должен быть добавлен вместе для формирования правильного синтаксиса адреса.
Я пытаюсь увидеть, есть ли библиотека, которую можно использовать, или кто-то может помочь мне с парсером на основе правил / с помощью регулярных выражений, чтобы решить вышеизложенное.
ОБНОВЛЕНИЕ 2: Было бы полезно написать много утверждений IF-ELSE для решения этой проблемы? Если да, есть кто-нибудь, кто мог бы помочь поделиться некоторыми подобными примерами кода, с которых я мог бы начать?