2014-09-23 42 views
0

我有一個響應系統,我試圖獲得它,所以你可以輸入一個字符串,並通過循環每個字符串並通過預定義的問題測量Levinshtein距離並使用一些其他算法。如何檢測包含任意字符串的模式?

例如:如果您輸入「嗨,你好嗎?」它會搜索其數據庫中相同或非常相似的內容(如「你好,你好嗎?」)。但我希望它能夠檢測是否正在使用取決於環境的特定短語,如:

「給我10個餅乾。」現在,我不想在數據庫中添加所有可能數量的cookie。那是不可能的。因此,在數據庫中,它會是這樣的:

「給我[個]餅乾。」我如何檢測模式?請記住,我也將使用字符串模式作爲其他響應。

回答

1

使用正則表達式解決此問題是不可能的。正則表達式代表regular grammar您需要一個context-sensitive grammar解析器用於此目的。

+0

嗯。任何Java示例?圖書館? :I – ColonelHedgehog 2014-09-23 19:08:05

+0

帶有模糊查詢的Lucene看起來不錯,但我無法告訴你比你自己可以找到的一些研究更多。 – bidusurf 2014-09-25 03:25:00

2

Library? Apache Lucene Core及其FuzzQuery

+0

謝謝。那麼,我如何能夠將FuzzyQuery用作CSG解析器? – ColonelHedgehog 2014-09-23 19:43:09

+0

將[lucene-core](http://search.maven.org/#search|gav|1|g%3A%22org.apache.lucene%22%20AND%20a%3A%22lucene-core%22)添加爲依賴於你的Maven POM。 – 2014-09-23 21:11:18

+0

我做到了,我只是指你如何尋找模式? – ColonelHedgehog 2014-09-23 21:53:04

相關問題