You can use an associate array to increment a counter for each different name:
awk '
BEGIN {
FS = OFS = "\t"
i = 0
}
{
if (! names[$NF]) {
names[$NF] = ++i
}
$NF = names[$NF]
print $0
}
END {
for (name in names) {
printf "%s %d\n", name, names[name]
}
}
' infile
It yields:
1 0 0 1 1 1
0 0 1 0 0 2
1 0 0 1 0 3
0 0 1 0 1 2
1 0 0 1 0 1
1 0 1 0 0 2
1 0 0 1 1 4
Golden Duck 2
Brown Eagle 3
Sparrow 4
Black Swan 1