Как разобрать местоположение из строки запроса? - PullRequest
2 голосов
/ 11 июня 2011

Мы получаем множество запросов, таких как «что-то в Бостоне», «что-то около Нью-Йорка», «что-то в Майами-Флорида», и мы ищем лучший способ разобраться в этом.

Ответы [ 2 ]

4 голосов
/ 11 июня 2011

Если я правильно интерпретирую ваш вопрос, вы ищете способ разобрать местоположение / город по вопросу?

Поскольку слова свободно летают по-английски, лучшее предложение, которое у меня есть, - это создатьтаблица наиболее распространенных городов в интересующей вас стране и поиск по тексту без учета регистра, сканирование этих городов.

Сделал быструю реализацию теста с использованием python, используя wikipedia для извлечения спискаиз городов в США и создали поддельный вопрос с названием города в нем.Скрипты считывают оба текста из файла и производят поиск города;используя:

  • 275 городов в списке
  • вопрос с 145 словами

Время для этого показано ниже:

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

Начните со списка наиболее распространенных городов и их наиболее распространенных орфографических ошибок (спасибо Тед-хоп ).Затем используйте простую стратегию, например

  1. , для поиска города в вопросе.
  2. , если город не может быть найден, отметьте вопрос для ручного просмотра и добавьте город или опечаткугород в списке, если он найден.
  3. goto 1.

После нескольких итераций у вас должен быть хороший список, охватывающий большинство городов.

Я могу опубликовать код, если вам интересно, это действительно тривиальный поиск грубой силы в ~ 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 голос
/ 12 июня 2011

С точки зрения компьютерной лингвистики, вы ищете методологию / технологию под названием " Распознавание именованных сущностей ". Существует множество библиотек, систем или решений, которые выполняют NER, которые можно найти через Google, возможно, для выбранного вами языка разработки.

...