在Perl中,我想以一種自動將類似字符串聚集在一起的方式對不同長度的字符串集合進行排序 。Perl自定義按字符串相似度聚類排序
直覺上,我想我需要一些距離測量每對和 然後聚類例程,按距離分組。
我的字符串數量總是很小而且很短,請參閱下面的示例 。
是否有一個簡單的方法,將做我需要在 sort_magic_here
?
#!/usr/bin/perl
use strict;
my @list =
("JK_HJ_Lancaster", "SY4_TS_HJ_1000ng",
"NB_E_200cc_caHJ_Rep1", "HB_E_100cc_caHJ_Rep1",
"HB_E_200cc_caHJ_Rep1", "Normal_Lancaster",
"NB15_OP_HJ_1000ng","Zoey_HJ_Slough",
"NB_E_100cc_caHJ_Rep1","Normal_Slough",
"JK_caHJ_Slough","Zoey_HJ_Lancaster");
print "# Straight sort\n";
foreach my $elem (sort @list) {
print "$elem\n";
}
print "# Sort grouped by string distance\n";
foreach my $elem (sort { sort_magic_here() } @list) {
print "$elem\n";
}
當您將一個塊/子程序交給'sort'時,它將在任何給定時間交給列表中的兩個(並且只有兩個)項目進行排序。然後它回答了「是否在b之前」的問題。如果您想以比需要一次檢查兩個以上項目的方式訂購物品,那麼'sort'可能不是您的錘子... – tjd
示例中的字符串應該如何排序? – ThisSuitIsBlackNot