如何从文本中提取列出的名称(地名)?

时间:2016-06-09 12:49:58

标签: r list compare geocoding text-mining

我想从文本中提取地名并在地图上进行地理定位 - 自动使用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"

2 个答案:

答案 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"