natural-harmonia-gropius / recent-menu

Recently played menu for mpv-player.
MIT License
33 stars 2 forks source link

Inaccurate similarity in identifying the same series #16

Closed dyphire closed 12 months ago

dyphire commented 12 months ago

以下两个文件相似度超过 50% 但目前的相似度识别方式无法准确识别它们

[Moozzi2] Soul Eater - 01 (BD 1920x1080 x265-10Bit 2Audio).mkv
[Moozzi2] Soul Eater - 51 END (BD 1920x1080 x265-10Bit 2Audio).mkv

顺便发现了之前基于数字识别相似度的代码有些问题,推送一个补丁来修复它

natural-harmonia-gropius commented 12 months ago

试试这个 https://github.com/natural-harmonia-gropius/recent-menu/pull/18

不太对

dyphire commented 12 months ago

试试这个 #18

不太对

新的方法反而问题更大了,比如该文件夹下文件结构

[Moozzi2] Soul Eater - 01 (BD 1920x1080 x265-10Bit 2Audio).mkv
[Moozzi2] Soul Eater - 02 (BD 1920x1080 x265-10Bit Flac).mkv
...
[Moozzi2] Soul Eater - 51 END (BD 1920x1080 x265-10Bit 2Audio).mkv

之前的 50% 的相似度识别方式只漏了 51,新实现所有 (BD 1920x1080 x265-10Bit Flac) 的文件都不被识别

natural-harmonia-gropius commented 12 months ago

换更好的算法有两个问题,一个是慢,另一个是 lua 的字符串是按字节遍历的,UTF-8 的首字节导致相似度很高

有空试试换 js 会不会好点 🫠

dyphire commented 12 months ago

换更好的算法有两个问题,一个是慢,另一个是 lua 的字符串是按字节遍历的,UTF-8 的首字节导致相似度很高

有空试试换 js 会不会好点 🫠

可以参考下 https://github.com/tomasklaen/uosc/pull/645 它的 Levenshtein 算法基于字符而不是字节 不过这个算法确实更慢

natural-harmonia-gropius commented 12 months ago

换了 Jaro-Winkler, 阈值设的 0.8 不知道合适不合适

还有现在是不是应该把基于数字的判断移到相似度的上面去?

dyphire commented 12 months ago

换了 Jaro-Winkler, 阈值设的 0.8 不知道合适不合适

Jaro-Winkler 表现不错

还有现在是不是应该把基于数字的判断移到相似度的上面去?

鉴于新算法的复杂性,我也认为先执行基于数字的判断更合理