我正在開發酒店預訂系統。我的任務是實現一個算法,當酒店的名稱輸入錯誤時,它會給出正確的建議。例如,如果用戶輸入酒店名稱爲「MOFENBICK」而不是真名「MOVENPICK」,那麼我的算法應該顯示「您的意思是MOVENPICK」。我計劃使用機器學習理念來實現它。這個問題有什麼好的功能選擇?在酒店名稱輸入時實施建議
回答
你不需要去執行一個神經網絡。這對於這個特殊的任務來說太過分了。
建議使用Levenshtein距離。 Levenshtein距離背後的想法是它定義了一個字符串度量。簡單來說,它允許計算機算法說「mofenbick」和「movenpick」在距離2(因爲2個字母被改變)。
一些僞代碼來計算Levennshtein:
function LevenshteinDistance(char s[1..m], char t[1..n]):
// create two work vectors of integer distances
declare int v0[n + 1]
declare int v1[n + 1]
// initialize v0 (the previous row of distances)
// this row is A[0][i]: edit distance for an empty s
// the distance is just the number of characters to delete from t
for i from 0 to n:
v0[i] = i
for i from 0 to m-1:
// calculate v1 (current row distances) from the previous row v0
// first element of v1 is A[i+1][0]
// edit distance is delete (i+1) chars from s to match empty t
v1[0] = i + 1
// use formula to fill in the rest of the row
for j from 0 to n-1:
if s[i] = t[j]:
substitutionCost := 0
else:
substitutionCost := 1
v1[j + 1] := minimum(v1[j] + 1, v0[j + 1] + 1, v0[j] + substitutionCost)
// copy v1 (current row) to v0 (previous row) for next iteration
swap v0 with v1
// after the last swap, the results of v1 are now in v0
return v0[n]
一旦你有超過字符串定義的指標,你需要一個快速的方法來查詢課程的酒店名單。 天真的實施將 1.疊代數據庫中的所有酒店名稱/設定 2.計算給定的輸入和酒店名稱 3之間的Levenshtein距離挑選產生最小編輯距離
名稱雖然這對小集合來說工作得很好,但您可以使用BK-Tree進一步優化它。
閱讀材料:
非常感謝。我會盡力實現這一點。但我也打算使用神經網絡來制定解決方案,因爲我希望發展我的機器學習技能。因此,如果我使用神經網絡來實現這一點,那麼每個輸入中的輸入特徵可能會給我帶來良好的學習曲線? –
除此之外,在遍歷所有酒店名稱時,計算上每次用戶輸入時都會有數千個酒店名稱,這在計算上會花費太多嗎?如果我們可以得到ML參數,我們需要的是與參數矩陣相乘,並將sigmoid和map最高索引映射到特定的類。我是編程的新手。所以我的論點可能是錯誤的。 –
@Joris:我很好奇爲什麼你要添加僞代碼,如果有這麼多真正的GNU Octave實現,例如我在https:// sourceforge上面鏈接了什麼。net/p/octave/strings/ci/default/tree/inst/editdistance.m此外,odepkg具有levenshtein距離 – Andy
- 1. 酒店每月預訂分組由酒店編號和酒店名稱
- 2. IOS實施建議
- 3. 實施Google建議
- 4. 實施OOP的建議
- 5. 地址欄建議實施
- 6. 建酒店預訂
- 7. 時輸入目錄名稱並輸入
- 8. Google Adwords通過GTM實施 - 請建議正確實施
- 9. Netbeans IDE - 在輸入時自動建議
- 10. 實施UIActivityItemSource協議
- 11. 實施Bittorrent協議
- 12. 實施IPSEC協議
- 13. 實施AirDrop協議
- 14. 在Node.JS中實施倒計時的建議
- 15. 在Python中輸入輸入建議
- 16. 版本控制實施建議(SVN)
- 17. Angular2實施性能建議作者:YSlow
- 18. Amadeus:旅遊建設要求酒店迴應錯誤17 |會議
- 19. 撥號調制解調器傳輸協議和酒店酒店(客戶端和服務器)
- 20. JDialog輸入建議
- 21. 酒店CancelPolicy在HotelPropertyDescriptionRS
- 22. 在輸入字段中輸入字符時自動建議?
- 23. 通過Google Maps v3 API中的酒店名稱搜索
- 24. 選擇名稱時填入輸入
- 25. 建議在CSS中輸入顏色的名稱而不是十六進制值?
- 26. 如何從附近的地方API的谷歌地圖酒店圖像獲取酒店名稱?
- 27. 酒吧子實施零mq 3.xx
- 28. 在JadaSite中實施的網上商店
- 29. 需要關於實施時間限制試用的建議
- 30. 建議:實施iPhone應用程序內購買時的挑戰
的可能的複製[如何在谷歌「嗎?你的意思是」算法的工作?](https://stackoverflow.com/問題/ 307291/how-do-google-did-you-mean-algorithm-work) – m7913d
您正在GNU Octave或MATLAB中實施酒店預訂系統嗎?我會看看leventhstein,例如https://octave.sourceforge.io/strings/function/editdistance.html關鍵詞搜索可能是「模糊搜索」https://en.wikipedia.org/wiki/Approximate_string_matching – Andy
我計劃首先在Octave中實現一個原型。我希望從頭開始。我打算做的是建立一個神經網絡或使用線性迴歸來訓練數據集,以便它可以預測測試或驗證集的輸出。由於我是機器學習的新手,我很難選擇神經網絡或線性迴歸模型的特徵。 –