我需要能够测试文本列表中看似随机的文件名;
e.g. aggvvcx.com or kbzaandc.exe
有什么明智/合理的方法可以做到这一点吗?我唯一的想法是检查元音与辅音的出现比率,但这似乎不可靠,使用字典也不可靠。
编辑:随机性的定义
关于随机性的性质,我所掌握的唯一信息是它是一个文件名。也许有可能获得常见文件名的字典并使用某种模式解析器来确定常见文件命名模式并在训练后针对列表运行它?如果我们考虑多种语言,这显然是一种徒劳的方法,但我只对检查英文文件名感兴趣。
最佳答案
你可以试试
对于较长的字符串,使用 zlib 进行 gzip 压缩,其中压缩越大表示随机性越小
与适当自然语言的平均值相比,字符串中字符的频率分析
假设随机字符串的 Google 搜索结果可能会少得多
soundex 确定字符串是否至少有一个音节,因此更有可能发音,因此不太可能是随机的
具有朴素贝叶斯分析的 n-grams ( http://theory.stanford.edu/~dfreeman/papers/namespam.pdf )
训练一个神经网络以类似于垃圾邮件过滤的方式执行此操作
根据 Netflix 挑战赛获胜者的方法,将上述所有方法结合起来以获得最佳结果,即,将相对平庸的测试结合起来可能会产生更好的结果。
关于c# - 如何确定文件名是否随机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32386686/