2011-06-20 81 views
0

我想了解用戶的serarh術語。想想有人在尋找「紐約的主食」 - 我想了解它的位置搜索關鍵字是主食和位置是紐約。同樣,如果有人輸入「cat in hat」,解析器不應該將其標記爲位置搜索,這裏整個關鍵字是「cat in hat」。 是否有任何算法或開源庫可用於解析搜索詞並瞭解其比較(如A vs B)或其基於位置的搜索(如X中的A)?解析器解析搜索條件並提取有價值的信息

回答

3

您描述的問題稱爲information extraction。存在大量算法,最簡單的是正則表達式匹配,最好的結構化機器學習。如果您知道Python,請先嚐試使用regexps,然後看看NLTK之類的東西。

如果程序知道「NY」是位置,則可以將「NY中的主食」與「貓咪帽子」區分開來。您可以通過大寫或由於「NY」出現在名爲gazetteer的列表中。

這個問題一般是AI-complete,所以如果你想得到好的結果,那麼就需要付出很多努力。

+0

如何使用地名錄?這是我可以採取轉儲地址和解析的東西嗎?有沒有提供此服務的服務提供商? – Shamik

+0

@Shamik:如果你想要一個服務,那麼你可以從OpenCalais等地方獲得完整的IE服務。如果你在免費搭車,請下載維基百科數據庫轉儲並從中提取地名索引。 –

+0

@Shamic http://dbpedia.org/提供了這一點。 –

0

不太清楚,但兩種方法按我的經驗與分析 -

  1. 定義語法可以解析的表達和收集值/參數。你可能想拿出一個關鍵詞字典,然後你可以推斷出這種搜索類型。

  2. 定義語法時要嚴格,以便表達式本身告訴您關於搜索的類型。 例如LOC:B中的A,價值$到歐元。等等。

解析器參見ANTLR/jcup & jflex。