2014-09-23 2 views
0

У меня есть система ответа, и я пытаюсь получить ее, чтобы вы могли ввести String, и она соответствует ей с вероятнейшей строкой в ​​своей базе данных, пробирая каждый из них и измеряя расстояние Levinshtein с заданными вопросами и используя несколько других алгоритмов.Как получить шаблон, содержащий произвольную строку?

Пример: Если вы вводите «Привет, как дела?» Он будет искать в своей базе данных что-то идентичное или очень похожее (например, «Привет, как дела?»). Но я хочу, чтобы он мог определить, используется ли конкретная фраза, зависящая от обстоятельств, например:

«Дайте мне 10 куки». Теперь я не хочу добавлять все возможные количества файлов cookie в базу данных. Это было бы невозможно. Итак, в базе данных это будет примерно так:

«Дайте мне [число] куки». Как бы я обнаружил шаблон? Имейте в виду, что я также буду использовать шаблоны String для других ответов.

ответ

1

Невозможно использовать регулярные выражения для решения этой проблемы. Регулярные выражения представляют regular grammar, для этого вам нужен парсер context-sensitive grammar.

+0

Хм. Любые примеры Java? Библиотеки? : I – ColonelHedgehog

+0

Lucene с нечетким запросом выглядит нормально, но я не могу рассказать вам больше, чем вы можете найти сами с некоторыми исследованиями. – bidusurf

2

Библиотека? Apache Lucene Core с его FuzzQuery.

+0

Спасибо. Итак, как я могу использовать FuzzyQuery в качестве парсера CSG? – ColonelHedgehog

+0

Добавить [lucene-core] (http://search.maven.org/#search|gav|1|g%3A%22org.apache.lucene%22%20AND%20a%3A%22lucene-core%22) как зависимость от вашего Maven POM. –

+0

Я сделал это, я просто имею в виду, как вы ищете шаблон? – ColonelHedgehog

Смежные вопросы