从R中的文本中提取信息

时间:2014-05-13 14:04:38

标签: regex r stringr named-entity-extraction

我正在研究R中的实体提取 我有UniqueIDText字段 - 需要从文本字段中提取位置信息。 “我的文本”字段包含位置名称

的说明
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 EstateSenoko (半名)或拼写错误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

1 个答案:

答案 0 :(得分: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)

我没有完全按照您要求的格式,但这将是第二列(也就是位置)的内容。我在你正在寻找的字符串之前和之后使用正则表达式“。*”,以防有其他可能性/拼写错误。这将使其更加健壮。

希望这有帮助!