正则表达式 – 字符串中的智能模式匹配
假设我的文件名格式不同.我希望能够像人类一样从文件名中提取某些方面;模式识别.
显然,我可以通过正则表达式来强迫自己,但这不是我所追求的.假设我有这4个字符串: [MAS] Hayate no Gotoku!! 20 [BD 720p] [21D138F8].mkv [Leopard-Raws] Akatsuki no Yona - 05 RAW (MX 1280x720 x264 AAC).mp4 [BLAST] Wolf Girl and Black Prince - 05 [720p] [C1252A5E].mkv [sage]_Mobile_Suit_Gundam_AGE_-_36_[720p][10bit][45C9E0D0].mkv 正如您所看到的,所有这些文件名都具有某些模式,但并不完全相同.所以银弹正则表达不会削减它.相反,我想看一下计算智能技术,如ANN或其他聪明的想法来解决这个问题. 假设我们想要提取文件名.人类将返回这些值: Hayate no Gotoku!! Akatsuki no Yona Wolf Girl and Black Prince Mobile Suit Gundam AGE 或者剧集编号:20,05,36.你到了我要去的地方. 有哪些建议的技术可以用来实现预期的结果,或者这是在大学里研究的东西,但仍然没有解决方案? 解决方法
你正在寻找的是
grammar induction,它可以工作,但是让一个程序找出一个匹配某些字符串而不是其他字符串的正则表达式(或其他类型的模式).你必须自己给它字符串,称为训练集,带有正例(应匹配的字符串)和负例(不应匹配的字符串).
一个有趣的技术被称为boosting,你可以在其中学习很多精确的简单模式(不匹配反面例子),但只匹配一些正面例子;但是当组合在一起时将匹配大量的积极例子. 既然你想提取子字符串而不仅仅是匹配字符串,那么我将采用的方法是获取文件名的前缀并尝试匹配它们.通过这种方式,您可以知道子串的起始位置.这是一个例子: Positives: [MAS] [Leopard-Raws] [BLAST] [sage]_ Negatives: [MAS] H [Leopard-Raws] Akat [BL [sage]_Mobile_Suit_Gundam_AGE_ 如果操作正确,您应该获得一个正则表达式,您可以在文件名的前缀上使用该表达式.通过一次增加前缀一个字母,您可以知道感兴趣的内容从何处开始.像这样: [ False [s False [sa False [sag False [sage False [sage] True [sage]_ True [sage]_M False 这里发生的是我一次增加一个字符的文件名前缀,直到我学到的正则表达式匹配它.但我也想找到匹配的最长前缀(因为否则我会错过下划线,因为[sage]也是一个可接受的前缀)所以我继续前进直到正则表达式停止匹配.通过这种方式,我知道实际内容开始前的前缀是“[sage] _”.您也可以通过使用包含感兴趣内容的前缀来匹配结束位置. 要了解正则表达式学习,请参阅此post.请记住,自动学习永远不会是完美的,但您使用的示例越多,它就越准确. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |