2

我正在寻找有关分析文件路径名的工具、方法和技术的信息。我不是在谈论文件大小、读/写时间或文件类型,而是分析它自身的路径或 URL。

我只知道基本的词频文本工具或方法,但我想知道人们是否使用/应用更高级的东西来尝试从中挖掘额外的信息。

谢谢!

更新:

这是我想要的最狭窄的例子。好的,所以我有一些完整的路径名作为字符串,如下所示:

F:\Task_Order_Projects\TO_01_NYS\Models\MapShedMaps\Random_File1.doc
F:\Task_Order_Projects\TO_01_NYS\Models\MapShedMaps\Random_File2.doc
F:\Task_Order_Projects\TO_01_NYS\Models\MapShedMaps\Random_File3.doc
F:\Task_Order_Projects\TO_01_NYS\Models\MapShedMaps\Random_File4.doc
F:\Task_Order_Projects\TO_01_NYS\Models\MapShedMaps\Random_File5.doc

F:\Task_Order_Projects\TO_02_NYS\Models\MapShedMaps\Random_File1.doc
F:\Task_Order_Projects\TO_02_NYS\Models\MapShedMaps\Random_File2.doc
F:\Task_Order_Projects\TO_02_NYS\Models\MapShedMaps\Random_File3.doc
F:\Task_Order_Projects\TO_02_NYS\Models\MapShedMaps\Random_File4.doc
F:\Task_Order_Projects\TO_02_NYS\Models\MapShedMaps\Random_File5.doc

我想知道的是 MapShedMaps 文件夹“唯一”出现了 2 次。如果我在弦上做频率,我会得到 10 次出场。问题是我不知道目录中的哪个级别很重要,因此我希望根据我所描述的内容在目录的每个级别上都有一个唯一计数。

4

2 回答 2

2

这是一个非常广泛的问题,所以我很难给你一个“答案”,但我会给你我的第一个想法。

第一的,

.NET 的正则表达式类对于解析大量信息非常有用。它非常强大,很容易让不耐烦的人感到困惑,但是一旦掌握了它,它就可以在文本编辑器、.NET 和我相信的几乎任何其他受人尊敬的语言中使用。这将允许您搜索字符串并将其分隔到目录中。这可能是矫枉过正,具体取决于您如何使用它,但这是一个想法。这是我最喜欢的链接,用于尝试一些正则表达式。

第二,

您将需要一个数据库,我更喜欢使用 SQL。研究如何连接到数据库和创建数据库。使用此数据库,您可以存储从输入的原始路径中提取的所有字段。比如父目录、子目录、访问的常用文件类型。只需为其中的每一个设置一个字段,通过查询,您就可以形成关于冗余的假设。

第三,

我不知道它是否易于访问,但您可能会查看 Windows 是否存储访问的文件历史记录。它似乎对过去打开了哪些文件有所了解。因此,Windows 中可能有一个资源已经存储了您将存储在数据库中的大部分信息。如果您能找到访问此信息的方法。使用正则表达式对其进行解析,然后将其重新提交到应用程序的数据库中。你可以控制世界!j/k... 不过,您可以对用户访问模式有一个很好的预测。

第四,

我总是尝试坚持我现有的东西。如果 .NET 摆在您面前,请认真对待您想要做的事情。如果你到达一堵墙。至少你在进步。在当今面向对象编程的运动中,您通常可以将一个程序收集的数据更改为另一个程序可接受的格式。你只需要挖一点。

哦,顺便说一句,Coursera.com实际上正在开设关于机器学习和算法的免费课程。您可能想查看或参考它以获取预测公式。

祝你好运。

于 2012-09-27T16:00:55.270 回答
0

我想将此作为评论发布,但因此一直将双 \ 编辑为 \ 并且重要的是有两个,因为 \ 是一个关键字符,没有另一个 \ 来转义它,正则表达式会将其解释为命令。

嘿,我只是想让你知道我一直在玩一些正则表达式......我知道在 VB.net 中编写代码的一种非常简单的方法,我将把它作为我的第二个答案发布,但我想让你看看反向引用。如果括号之间的部分匹配,它会捕获该文本并继续进行第二个查询,例如......

F:\\(directory1)?(directory2)?(directory3)? 

您可以使用这些匹配项来找出每个父目录下有多少个目录。你正在跟着我吗?这是一个参考。

于 2012-09-28T17:33:08.060 回答