Извлечение информации из текста в R

Я работаю над извлечением сущностей в R. У меня есть поля UniqueID и Text — нужно извлечь информацию о местоположении из текстового поля. Мое текстовое поле имеет описание с названиями местоположений

text <- c("SERANGOON JC","Blk 4","SHELL TAMPINES AVE  4","SENOKO INDUSTRIAL ESTATE","Senoko Estate","Senoko","senok Est.") 

У меня есть список местоположений;

Loc <- c("SERANGOON JUNIOR COLLEGE","Block 4","SHELL TAMPINES AVENUE 4","SENOKO INDUSTRIAL ESTATE")

Необходимо сопоставить loc и извлечь это местоположение из поля text. В текстовом поле SENOKO INDUSTRIAL ESTATE пишется по-разному Senoko Estate или Senoko (половина имен) или с орфографической ошибкой senok Est.. нужно получить точное имя от loc т.е. SENOKO INDUSTRIAL ESTATE.

Мой вывод будет выглядеть так: (Извлечь местоположение из текстового поля - получить правильные слова для слов, написанных наполовину и с ошибками)

ID   Location
123  SERANGOON JUNIOR COLLEGE|Block 4|SHELL TAMPINES AVENUE 4|SENOKO INDUSTRIAL ESTATE|SENOKO INDUSTRIAL ESTATE|SENOKO INDUSTRIAL ESTATE|SENOKO INDUSTRIAL ESTATE

person Prasanna Nandakumar    schedule 13.05.2014    source источник
comment
Есть ли функция или пакет, чтобы попробовать вышеуказанный в R?   -  person Prasanna Nandakumar    schedule 14.05.2014
comment
Ну что ты пробовал? Я действительно ничего не знаю об этом, но почему бы не использовать agrep?   -  person llrs    schedule 27.05.2014


Ответы (1)


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

text <- c("SERANGOON JC","Blk 4","SHELL TAMPINES AVE  4","SENOKO INDUSTRIAL ESTATE","Senoko Estate","Senoko","senok Est.") 

Loc <- c("SERANGOON JUNIOR COLLEGE","Block 4","SHELL TAMPINES AVENUE 4","SENOKO INDUSTRIAL ESTATE")

text <- gsub(".*serang.*", "SERANGOON JUNIOR COLLEGE", text, ignore.case=TRUE)
text <- gsub(".*bl.* 4.*", "Block 4", text, ignore.case=TRUE)
text <- gsub(".*shell.*", "SHELL TAMPINES AVENUE 4", text, ignore.case=TRUE)
text <- gsub(".*senok.*", "SENOKO INDUSTRIAL ESTATE", text, ignore.case=TRUE)


print(text)

Я не представил его точно в том формате, который вы просили, но это будет содержимое второго столбца (также известного как «Местоположение»). Я использовал выражение регулярного выражения ".*" до и после строк, которые вы искали, на случай, если есть другие возможности/опечатки. Это сделало бы его более прочным.

Надеюсь это поможет!

person user3389288    schedule 27.05.2014