我应该编写代码,当给定文本文件(源代码)作为输入时,它将输出哪种编程语言。这是问题的最基本定义。更多的约束如下:
如果能够以这样的方式编写代码,那就很容易了:添加新的识别语言将相当容易,并且只需为该特定语言添加“设置/数据”即可。我可以使用任何可用的东西- 启发式,神经网络,黑魔法。什么都可以 我什至可以使用现有的解决方案,但是:该解决方案必须是免费的,开源的并且可以商业使用。它必须以易于集成的源代码或静态库(没有DLL)的形式出现。但是我更喜欢编写自己的代码,或者只使用其他解决方案的片段,我受够了集成其他代码。最后一点:也许有些人会建议使用FANN(快速人工神经网络库)-这是我唯一不能使用的东西,因为这是我们已经使用的东西,并且我们想替换掉。
现在的问题是:您将如何处理这样的任务,您会怎么做?有什么建议如何实施或使用什么?
编辑: 基于评论和答案,我必须强调一些我忘记的事情:速度非常关键,因为这将获得数千个文件并且应该能快速回答,因此查看一千个文件应该为它们中的所有文件产生答案最多几秒钟(文件的大小当然很小,每个文件只有几kB)。因此,尝试编译每一个都不成问题。问题是,我真的想要每种语言的概率- 所以我想知道该文件可能是C或C ++,但是它是bash脚本的可能性非常低。由于代码混淆,注释等问题,我认为寻找100%准确的代码是一个坏主意,实际上这并不是此目标。
您有文档分类问题。我建议您阅读有关朴素贝叶斯分类器和支持向量机的信息。在文章中,有指向实现这些算法的库的链接,其中许多具有C ++接口。