擅长:python、mysql、java
<p>您可能会注意到类似的字符串有很大的公共子字符串,例如:</p>
<blockquote>
<p>"Bla bla bLa" and "Bla bla bRa" => common substring is "Bla bla ba" (notice the third word)</p>
</blockquote>
<p>要查找公共子串,可以使用动态编程算法。算法的变化之一是Levenshtein距离(大多数相似字符串之间的距离很小,而更多不同字符串之间的距离更大)-<a href="http://en.wikipedia.org/wiki/Levenshtein_distance" rel="nofollow">http://en.wikipedia.org/wiki/Levenshtein_distance</a>。</p>
<p>此外,为了提高性能,您可以尝试调整Soundex算法</strong>-<a href="http://en.wikipedia.org/wiki/Soundex" rel="nofollow">http://en.wikipedia.org/wiki/Soundex</a>。</p>
<p>所以在计算完所有弦之间的距离后,必须对它们进行聚类。最简单的方法是k-means(但它需要定义集群的数量)。如果您实际上不知道集群的数量,则必须使用分层集群。<em>请注意,在您的情况下,集群的数量是<strong>不同电影标题的数量+1</strong>(对于拼写完全错误的字符串)。</em></p>