我正在开发酒店预订系统。我的任务是实现一个算法,当酒店的名称输入错误时,它会给出正确的建议。例如,如果用户输入酒店名称为“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中实现一个原型。我希望从头开始。我打算做的是建立一个神经网络或使用线性回归来训练数据集,以便它可以预测测试或验证集的输出。由于我是机器学习的新手,我很难选择神经网络或线性回归模型的特征。 –