我想从文本中提取地名并在地图上进行地理定位 - 自动使用R.第一步是提取地名。
我下载了一个地名列表(来自geonames);但是如何匹配文本中geonames-placename-list中的单词?
intersect()
的可能性仅在我将文本转换为矢量时才起作用 - 因此需要将文本拆分为单词,这会导致匹配运算符只能找到像单词一样的单字位置#34;柏林"但不是"纽约"等
是否存在将列表与文本(作为字符串)进行比较的函数?
MWE:
list = c("Wien", "London", "New York")
text = "Er sah den Stadtplan von Wien in New York."
words = unlist(strsplit(text, "\\W"))
intersect(list, words)
仅导致:
> [1] "Wien"
答案 0 :(得分:0)
你可以使用类似的东西
library(stringr)
list = c("Wien", "London", "New York")
text = "Er sah den Stadtplan von Wien in New York."
words=as.character()
for (i in 1:length(list)){
if (is.na(str_extract(text,list[i]))) next
x<-str_extract(text,list[i])
words<-c(words,x)
}
> words
[1] "Wien" "New York"
答案 1 :(得分:0)
根据复杂程度,您也可以使用(小心空格)
list = c("Wien", "London", "NewYork")
text = "Er sah den Stadtplan von Wien in NewYork."
words = unlist(strsplit(text, "\\W"))
list[list %in% words]
"Wien" "NewYork"