【问题标题】:Recognize if string contains geographical references识别字符串是否包含地理参考
【发布时间】:2014-12-05 09:55:47
【问题描述】:

在 Java 中,如何理解 String 值(例如,来自用户生成的内容)是否包含地理参考?也就是说,

  • 城市名称
  • 地址
  • 状态

我当前的解决方案是将字符串提交给 Geolocation API(特别是this one),这样如果找到与某个真实位置匹配的内容,则提取其坐标。

(关于这种方法的相关问题:this one

但是,某些字符串会导致错误。例如,给定字符串 location "everywhere",它并不意味着反映任何地理位置,实际上返回的是美国的结果。

我确定了两种可能的解决方案,即本体或实体识别策略。但是,我想问一下哪个是最好的解决方案(即对成本和时间的影响最小)。

【问题讨论】:

  • 以任何可靠性执行此操作听起来像是一个强人工智能问题。

标签: java geolocation ontology named-entity-recognition gis


【解决方案1】:

现在据我所知,java 中没有任何方法。您必须手动完成(字符串配对)。

现在让我们从逻辑上思考问题:

城市名称:这只是一个普通字符串。唯一的方法是将它与世界上所有城市的名称进行比较。您必须获取String中的所有单词并将每个单词与世界上所有城市的列表进行比较。(您可以在比较中进行优化,但仍然不能加快速度)

地址:如果您的地址有开头(或有)一些特殊字符,这会更容易。

:与城市名称相同。

【讨论】:

  • 这应该是一个非常容易实现的解决方案。但是,我认为 NLP 要复杂得多。例如,如果我在字符串中指定村庄的名称而不是城市,该怎么办?所需的“城市/村庄/国家”分类会非常大......(而且我不知道在哪里可以检索到足够丰富的列表)。
  • 如果您可以尝试定义字符串的结构,那会容易得多。例如,城市名称、位置、...
  • 是的,这是真的,但假设字符串不受任何结构的约束,因为它来自例如用户生成的内容。在这种情况下,您无法在生成的字符串上强制使用结构,因此更难以获得字符串内容的真实性质。
  • @Eleanore 正如您问题下的评论所说,这听起来像是模式识别中的一个问题。我没有那个背景可以帮忙。试图研究该领域的一些算法。听起来像是一个经典的问题。
猜你喜欢
  • 2011-05-26
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 2013-03-15
  • 2020-02-19
  • 2010-10-28
相关资源
最近更新 更多