【问题标题】:how to extract listed names (placenames) from a text?如何从文本中提取列出的名称(地名)?
【发布时间】:2016-06-09 12:49:57
【问题描述】:

我想从文本中提取地名并在地图上对其进行地理定位 - 使用 R 自动进行。第一步是提取地名。

我下载了一个地名列表(来自geonames);但是如何匹配文本中 geonames-placename-list 中的单词?

intersect() 的可能性仅在我将文本转换为向量时才有效 - 因此需要将文本拆分为单词,这导致匹配运算符只能找到像“柏林”这样的单字地名但不是“纽约”等。

是否存在将列表与文本(作为字符串)进行比较的函数?

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"

【问题讨论】:

    标签: r list compare geocoding text-mining


    【解决方案1】:

    你可以使用类似的东西

    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"
    

    【讨论】:

    • 谢谢!实际上,您帮助我的答案是命令str_extract()。我的主要观点是从unlist(str_extract_all(text,list)) 获取输出 - 谢谢!
    【解决方案2】:

    根据复杂程度,您也可以使用(注意空格)

    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"

    【讨论】:

      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2014-02-13
      • 1970-01-01
      相关资源
      最近更新 更多