擅长:python、mysql、java
<p>我试着回答第一部分。类<code>Seeder</code>试图找到单词的<code>seeds</code>。假设两个相似的单词具有相同的种子,相似度由参数<code>LIMIT</code>(在本例中为2)控制,该参数测量两个单词之间的距离。有很多方法可以计算<a href="http://www.cut-the-knot.org/do_you_know/Strings.shtml" rel="nofollow">String distance</a>,而你的班在{<cd4>}函数中使用某种忍者数学来计算<a href="http://www.cut-the-knot.org/do_you_know/Strings.shtml" rel="nofollow">String distance</a>,坦白地说,这是我无法理解的。</p>
<pre><code>def __init__(self):
self.seeds = set()
self.cache = dict()
</code></pre>
<p>将seeds初始化为一个<code>set</code>,它可以跟踪到目前为止唯一的种子;一个<code>cache</code>,在我们已经看到这个单词的情况下加快查找速度(以节省计算时间)。</p>
<p>对于任何单词,<code>get_seed</code>函数返回其种子。</p>
^{pr2}$
<p>然后你根据单词的种子对这些单词进行排序。这样可以确保具有相同种子的单词相邻出现。这对于用于根据种子形成单词组的<a href="http://docs.python.org/2/library/itertools.html#itertools.groupby" rel="nofollow">group by</a>很重要。</p>
<p><code>distance</code>函数看起来很复杂,可能会被<a href="https://pypi.python.org/pypi/python-Levenshtein/" rel="nofollow">Levenshtein</a>之类的东西代替。</p>