Определение слова "есть" - классификация токена - PullRequest
3 голосов
/ 28 января 2010

Я пишу мост между пользователем и поисковой системой, а не поисковой системой. Часть моей добавленной стоимости будет выводить цель запроса. Назначение номера для отслеживания, биржевого символа или адреса довольно очевидно. Если я могу классифицировать запрос, то я могу решить, нужно ли пользователю видеть результаты поиска. Конечно, если я не могу, то они увидят результаты поиска. В настоящее время я разрабатываю этот механизм вывода.

Я пишу парсер; он должен взять любой данный токен и назначить ему категорию. Вот несколько теоретических примеров на английском языке:

  • "Денвер" - это USCITY и PLACENAME
  • "aapl" - это NASDAQSYMBOL и STOCKTICKERSYMBOL
  • "555 555 5555" - это USPHONENUMBER

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

В идеале я хотел бы получить что-то простое, например:

queryCategory = magicCategoryFinder( query )

    >print queryCategory
    >"SOMECATEGORY or a list"

Ответы [ 5 ]

3 голосов
/ 28 января 2010

Чтобы узнать о тегах (термин искусства для того, что вы пытаетесь сделать), я предлагаю поиграть с модулем тегов NLTK . В целом, NLTK , Natural Language ToolKit, является отличным инструментарием (на основе языка программирования Python) для экспериментов и обучения в области обработки естественного языка (подходит ли он для данного производства ). Приложение может быть другой проблемой, особенно если указанное приложение требует очень высокой скорости обработки больших объемов данных - но вам нужно пройтись, прежде чем вы сможете запустить! -).

3 голосов
/ 28 января 2010

Разбор естественного языка - сложная тема. Одна из проблем здесь заключается в том, что определение слова зависит от контекста и подразумеваемых знаний. Кроме того, вы не столько интересуетесь словами , сколько вы группами слов . Представьте, что «Нью-Йорк» - это место, но его три слова, два из которых (новый и городской) имеют другое значение.

также вы должны учитывать двусмысленность, в которой снова возникает контекст и подразумеваемые знания. Например, JAVA является (или был) символом акций для Sun Microsystems. Это также язык программирования, место и имеет значение, связанное с кофе. Как вы это классифицируете? Вам нужно знать контекст, в котором он был использован.

И если вы можете решить эту проблему надежно , вы можете сделать себя очень богатым.

Что все-таки поможет?

1 голос
/ 28 января 2010

Хотя это может не сильно помочь вам в устранении неоднозначности, вы можете использовать Cyc . Это огромная база данных о вещах , которые предназначены для использования в приложениях ИИ (хотя я не слышал историй успеха).

1 голос
/ 28 января 2010

Как уже отмечали другие, это исключительно сложная задача. Классический тест представляет собой пару предложений:

  1. Время летит как стрела.
  2. Плод летит как банан.
В первом предложении «мухи» - это глагол. Во втором это часть существительного. В первом «лайк» - это наречие, а во втором - глагол. Контекст не делает это особенно легко разобрать - нет очевидной разницы между «время» и «фрукты» (как правило, существительные). Аналогично, «стрела» и «бананна» обычно являются существительными.

Это может быть сделано - но это действительно решительно нетривиально.

1 голос
/ 28 января 2010

Вы сталкиваетесь с одной из самых сложных проблем в области компьютерных наук сегодня ... определение семантики из английского контекста. Это классическая проблема с анализом текста, и она затрагивает некоторые очень сложные темы. Я думаю, я бы предложил больше подумать о вашей проблеме и посмотреть, сможете ли вы: а) обойтись без категоризации или б) возможно использовать структурную информацию, такую ​​как положение документа или что-то еще, чтобы дать вам подсказку (это либо город, либо название места, либо неопределенный ) и, возможно, некоторые справочные таблицы, чтобы помочь. т.е. биржевые символы довольно легко создать для довольно полного поиска. Возможно, вы захотите загрузить справочник по ЦРУ для поиска городов ... и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...