如何从文本中提取列出的名称(地名)?
how to extract listed names (placenames) from a text?
我想从文本中提取地名并在地图上对它们进行地理定位 - 使用 R 自动进行。第一步是提取地名。
我下载了地名列表(来自geonames);但是如何在文本中匹配 geonames-placename-list 中的单词?
intersect()
的可能性仅在我将文本转换为向量时有效 - 因此需要将文本拆分为单词,这导致匹配运算符只能找到一个单词的地名喜欢 "berlin" 但不喜欢 "new york" 等
是否存在将列表与文本(作为字符串)进行比较的函数?
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"
你可以使用类似的东西
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"
根据复杂性,您也可以使用(注意空格)
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"
我想从文本中提取地名并在地图上对它们进行地理定位 - 使用 R 自动进行。第一步是提取地名。
我下载了地名列表(来自geonames);但是如何在文本中匹配 geonames-placename-list 中的单词?
intersect()
的可能性仅在我将文本转换为向量时有效 - 因此需要将文本拆分为单词,这导致匹配运算符只能找到一个单词的地名喜欢 "berlin" 但不喜欢 "new york" 等
是否存在将列表与文本(作为字符串)进行比较的函数?
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"
你可以使用类似的东西
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"
根据复杂性,您也可以使用(注意空格)
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"