gpt4 book ai didi

regex - 字符串中的智能模式匹配

转载 作者:行者123 更新时间:2023-12-01 05:08:28 25 4
gpt4 key购买 nike

假设我有格式不同的文件名。我希望能够像人类一样从所述文件名中提取某些方面;模式识别。

显然,我可以用正则表达式强制自己通过,但这不是我所追求的。假设我有这 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, 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 .请记住,自动化学习永远不会完美,但您使用的示例越多,它就越准确。

关于regex - 字符串中的智能模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com