如何解析查询字符串中的位置?

时间:2011-06-10 21:57:34

标签: search location

我们收到很多疑问,比如“波士顿的东西”,“纽约附近的东西”,“迈阿密的东西”,我们正在寻找解决这个问题的最好方法。

2 个答案:

答案 0 :(得分:4)

如果我正确地解释了您的问题,您正在寻找一种从问题中解析出位置/城市的方法吗?

由于单词以英语自由飞行,我提出的最佳建议是创建一个您感兴趣的国家中最常见城市的表格,并通过文本进行不区分大小写的搜索,扫描这些城市。

使用python进行快速测试实现,使用维基百科提取usa中的城市列表,并创建一个带有城市名称的假问题。脚本从文件中读取文本并搜索城市;使用:

  • 列表中的275个城市
  • 145字的问题

时间如下所示:

real        0m0.061s
user        0m0.040s
sys         0m0.016s

首先列出最常见的城市及其最常见的拼写错误(感谢ted-hop)。然后使用像

这样的简单策略
  1. 在问题中搜索城市。
  2. 如果找不到城市,请将问题标记为人工审核,如果找到,请将城市或拼写错误添加到列表中。
  3. 转到1。
  4. 经过几次迭代后,你应该有一个覆盖大部分城市的好名单。

    如果你感兴趣,我可以发布代码,这是一个非常简单的蛮力搜索~~ 12行的python。


    更新(因为人们仍然会阅读此帖子)

    查看difflib

    >>> get_close_matches('appel', ['ape', 'apple', 'peach', 'puppy'])
    ['apple', 'ape']
    >>> import keyword
    >>> get_close_matches('wheel', keyword.kwlist)
    ['while']
    >>> get_close_matches('apple', keyword.kwlist)
    []
    >>> get_close_matches('accept', keyword.kwlist)
    ['except']
    

    这可能会减轻匹配......

答案 1 :(得分:1)

在计算语言学方面,您正在寻找一种名为“Named Entity Recognition”的方法/技术。有许多可用于执行NER的库,系统或解决方案可以通过Google找到,可能是您选择的开发语言。