单词列表生成(排序,优化)

use*_*725 6 python sorting algorithm list

一点背景:

我正在为心理学实验构建单词列表.我们试图创建一个单词链,使列表中相邻的单词相关,但列表中的所有其他单词都不相关.例如:

SCHOOL, CAFETERIA, PIZZA, CRUST, EARTH, OCEAN, WHALE, ...

所以在这里我们看到第一个词与第二个词有关,第二个词与第三个词有关,但第三个词与第一个词无关.(第一个与第四,第五,第六,......无关)

到目前为止我有什么......

我有一个1600字的列表,每个0到1600之间的数字对应一个字.我还有一个非常大的矩阵(1600 x 1600)告诉我(在0到1的范围内)每个单词与每个其他单词的相关程度.(这些来自潜在的语义分析; http://lsa.colorado.edu/)

我可以制作列表,但它根本不是很有效,而且我的相邻单词彼此之间并不是非常强烈相关.

这是我的基本算法:

  • 设置相邻单词必须相关的最小值的阈值以及非相邻单词必须与之无关的阈值.
  • 创建一个从0到1600的列表.随机播放该列表.列表的第一项将是我们的第一个字.
  • 循环检查我们的单词,如果单词符合我们的阈值,则逐个检查(即,检查这个新单词是否足够高与列表中最后添加的单词相关,遍历我们的列表并检查它是否与所有其他单词无关,它不在我们的列表中).如果符合条件,请将其添加到列表中.如果我们遍历所有单词但没有成功,请转储列表并从头开始.
  • 继续这个,直到列表中有尽可能多的单词(理想情况下,16).

有没有人有更好的方法?我的方法的问题是,当有更好的匹配可能仍在那里时,我有时会满足于符合我的标准的好的比赛.此外,如果我不必转储整个列表但可以回溯到列表可能出错的几个步骤,那将是很好的.

Kon*_*ell 0

循环浏览我们的单词...如果符合条件,请将其添加到列表中。

这似乎是问题的焦点。您将停在第一场比赛,而不是最佳比赛。使用 1600 个相关性值方阵,您可以简单地获取剩余单词的最大相关性值的索引,然后转到单词矩阵并将相应的单词添加到列表中。