【发布时间】:2014-07-26 15:23:47
【问题描述】:
我正在寻找一种算法(在此基础上构建分类器),它可以测量两个输入文本之间的格式相似性。广义地说,是一种关于格式的 Levenshtein 距离。
例如,考虑有一个应用程序从不同来源收集日志数据,并按格式对其进行标记。
另一个例子考虑一个应用程序,它从不同的编程语言(假设它们不相似,所以 C 和 Haskell)接收输入作为源代码,并且能够按它们的格式对它们进行分类。
编辑:附加示例
考虑 df -h 运行的输出
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fedora-root 50G 12G 35G 26% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 596K 3.9G 1% /dev/shm
tmpfs 3.9G 9.1M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 3.9G 580K 3.9G 1% /tmp
/dev/mapper/fedora-home 178G 82G 87G 49% /home
/dev/sda1 477M 147M 301M 33% /boot
这将与ls -l进行比较
total 68
drwxrwxr-x. 2 mhitza mhitza 4096 May 31 22:17 bin
drwxr-xr-x. 2 mhitza mhitza 4096 Jun 1 23:00 Desktop
drwxr-xr-x. 5 mhitza mhitza 4096 May 16 15:43 Documents
drwxr-xr-x. 12 mhitza mhitza 4096 Jun 4 19:08 Downloads
drwx------. 12 mhitza mhitza 4096 Mar 18 23:48 Dropbox
drwxrwxr-x. 12 mhitza mhitza 4096 Apr 30 02:08 Local
算法应该能够推断出这两种是不同类型的文本“结构”,并且能够为这些组分类其他类型的输入文本。
问题在于,对于一组固定的格式,这很容易做到,但我想在任何类型的输入上做到这一点。
【问题讨论】:
-
如果您能进一步阐明“结构”的含义,这将是一个有趣的问题。例如。如何从输入文本中获得结构?它是用字符串、树来表示的吗?任何输入文本是否有一种可能的结构? (那么问题就简单了。)或者是否存在许多可能的结构,并且您想寻找分别来自文本 T1 和 T2 并且在某个度量中具有最小距离的结构 S1 和 S2?
-
我已经更新了我的问题以澄清这里的结构意味着什么
-
很高兴有更多的例子,但仍然非常不清楚你所说的“结构”到底是什么意思。在我们试图找到两个“结构”之间的 Levenshtein 距离之前,我们首先需要有一个实际的具体字符串 representation 这些结构!
-
我不知道 levenshtein distance 是否适合这里的工具。结构在这里是文本的form,它具有算法会推断出的特定特征(列、每列的字符范围等)。我不知道还能怎么说,但把结构想象成散文和诗歌。您可以通过它们的“形式”直观地区分它们。
-
我相信“格式”可能是一个更合适的术语。
标签: algorithm machine-learning classification