一尘不染

用于识别文本文件中的编程语言的代码

algorithm

我应该编写代码,当给定文本文件(源代码)作为输入时,它将输出哪种编程语言。这是问题的最基本定义。更多的约束如下:

  • 我必须用C ++编写。
  • 应识别多种语言-html,php,perl,ruby,C,C ++,Java,C#…
  • 误报(错误识别)的数量应该少-输出“未知”胜于错误结果。(它将出现在概率列表中,例如未知:100%,请参见下文)
  • 输出应该是代码知道的每种语言的概率列表,因此,如果它知道C,Java和Perl,则输出应为:C:70%,Java:50%,Perl:30%(请注意不需要概率总计不超过100%)
  • 它应该具有良好的精度/速度比(速度更受青睐)

如果能够以这样的方式编写代码,那就很容易了:添加新的识别语言将相当容易,并且只需为该特定语言添加“设置/数据”即可。我可以使用任何可用的东西-
启发式,神经网络,黑魔法。什么都可以
我什至可以使用现有的解决方案,但是:该解决方案必须是免费的,开源的并且可以商业使用。它必须以易于集成的源代码或静态库(没有DLL)的形式出现。但是我更喜欢编写自己的代码,或者只使用其他解决方案的片段,我受够了集成其他代码。最后一点:也许有些人会建议使用FANN(快速人工神经网络库)-这是我唯一不能使用的东西,因为这是我们已经使用的东西,并且我们想替换掉。

现在的问题是:您将如何处理这样的任务,您会怎么做?有什么建议如何实施或使用什么?

编辑:
基于评论和答案,我必须强调一些我忘记的事情:速度非常关键,因为这将获得数千个文件并且应该能快速回答,因此查看一千个文件应该为它们中的所有文件产生答案最多几秒钟(文件的大小当然很小,每个文件只有几kB)。因此,尝试编译每一个都不成问题。问题是,我真的想要每种语言的概率-
所以我想知道该文件可能是C或C
++,但是它是bash脚本的可能性非常低。由于代码混淆,注释等问题,我认为寻找100%准确的代码是一个坏主意,实际上这并不是此目标。


阅读 387

收藏
2020-07-28

共1个答案

一尘不染

您有文档分类问题。我建议您阅读有关朴素贝叶斯分类器支持向量机的信息。在文章中,有指向实现这些算法的库的链接,其中许多具有C
++接口。

2020-07-28