Резолюция штата США из неструктурированного текста

У меня есть база данных с полем «местоположение», которое содержит неограниченный пользовательский ввод в виде строки. Я хотел бы сопоставить каждую запись либо с состоянием США, либо с NULL.

Например:

'Southeastern Massachusetts' -> MA
'Brookhaven, NY' -> NY
'Manitowoc' -> WI
'Blue Springs, MO' -> MO
'A Damp & Cold Corner Of The World.' -> NULL
'Baltimore, Maryland' -> MD
'Indiana' -> IN

Я могу допустить некоторые ошибки, но, очевидно, было бы лучше, если бы их было меньше. Каков наилучший способ сделать это?


person James Atwood    schedule 09.10.2015    source источник


Ответы (2)


Вы можете использовать Geonames, который предоставляет очень большие списки названий местоположений с информацией о них и является бесплатным. Сопоставление строк (или приблизительное сопоставление строк), вероятно, будет не слишком сложно реализовать в простейших случаях.

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

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

person eldams    schedule 09.10.2015

Для потомков: я просто добавил к нему кучу регулярных выражений, которые сработали «довольно хорошо».

person James Atwood    schedule 29.10.2015