【发布时间】:2015-08-17 10:28:28
【问题描述】:
我必须在文本文件中查找单词“age”和类似的单词。
我有以下句子:
- 18岁
- 51岁的男人
- 男性年龄在 25 到 50 岁之间
- 5 到 75 岁之间。(带点)
- 5 到 75 岁之间,(带逗号)
- 代理名称是 xyz(代理包含年龄)。
String.contains 在每种情况下始终返回 true。我的要求是通过前五句话,在最后一种情况下返回 false。
我将通过编写一些包含一堆字符串“age”、“age”的代码来解决这个问题。 、“年龄”、“年龄”、“年龄”等。
有没有更好的方法来解决这个问题。
【问题讨论】:
-
也许你应该使用词干提取,或者计算编辑距离(simmetrics 提供)
-
您需要使用全文搜索和文本分析来计算相似度
-
一个容易测试的东西是“LevenshteinDistance - 将一个字符串更改为另一个字符串所需的更改次数”,Apache StringUtils 有一个实现