相关疑难解决方法(0)

Java中的相似性字符串比较

我想比较几个字符串,找到最相似的字符串.我想知道是否有任何库,方法或最佳实践将返回我哪些字符串更类似于其他字符串.例如:

  • "快狐跳了起来" - >"狐狸跳了"
  • "快速狐狸跳了" - >"狐狸"

这种比较将返回第一个比第二个更相似.

我想我需要一些方法,例如:

double similarityIndex(String s1, String s2)
Run Code Online (Sandbox Code Playgroud)

某处有这样的事吗?

编辑:我为什么这样做?我正在编写一个脚本,将MS Project文件的输出与处理任务的某些遗留系统的输出进行比较.由于遗留系统的字段宽度非常有限,因此在添加值时,将缩写描述.我想要一些半自动的方式来查找MS Project中哪些条目与系统上的条目类似,这样我就可以获得生成的密钥.它有缺点,因为它必须仍然手动检查,但它会节省大量的工作

java string-comparison

103
推荐指数
7
解决办法
10万
查看次数

在拉丁文脚本中匹配包含少于10个单词的两个字符串的最佳算法是什么

我比较歌曲名称,用拉丁文字(但并不总是),我的目标是一种算法,给出了一个高分,如果两页首歌的标题似乎是相同的同题和非常低的分数,如果他们没有任何共同之处.

现在我已经不得不使用Lucene和RAMDirectory来编写代码(Java) - 但是使用Lucene只是为了比较两个字符串太重,因此太慢了.我现在转向使用https://github.com/nickmancol/simmetrics,它有许多很好的算法来比较两个字符串:

https://github.com/nickmancol/simmetrics/tree/master/src/main/java/uk/ac/shef/wit/simmetrics/similaritymetrics

BlockDistance
ChapmanLengthDeviation
ChapmanMatchingSoundex
ChapmanMeanLength
ChapmanOrderedNameCompoundSimilarity
CosineSimilarity
DiceSimilarity
EuclideanDistance
InterfaceStringMetric
JaccardSimilarity
Jaro
JaroWinkler
Levenshtein
MatchingCoefficient
MongeElkan
NeedlemanWunch
OverlapCoefficient
QGramsDistance
SmithWaterman
SmithWatermanGotoh
SmithWatermanGotohWindowedAffine
Soundex
Run Code Online (Sandbox Code Playgroud)

但是我不熟悉这些算法,那将是一个不错的选择?

我认为Lucene以某种形式使用CosineSimilarity,所以这是我的出发点,但我认为可能有更好的东西.

具体来说,算法应该在短字符串上工作,并且应该理解单词的概念,即应该特别对待空格.拉丁文字的良好匹配是最重要的,但是韩文和中文等其他文字的良好匹配也是相关的,但我希望因为它们对待空间的方式需要不同的算法.

java lucene similarity string-matching

12
推荐指数
1
解决办法
2263
查看次数

快速将字符串与Java中的Collection进行比较

我试图计算字符串对集合的编辑距离,以找到最接近的匹配.我目前的问题是集合非常大(大约25000个项目),所以我不得不将集合缩小到相似长度的字符串,但仍然只会将其缩小到几千个字符串,这仍然非常慢.是否存在允许快速查找类似字符串的数据结构,还是有另一种方法可以解决此问题?

java algorithm edit-distance pattern-matching data-structures

5
推荐指数
2
解决办法
658
查看次数