源代码机器学习框架。提供API和工具来训练和使用基于从Babelfish的UAST中提取的源代码特性的模型。

sourced-ml的Python项目详细描述


姆朗科德研究游乐场PyPIBuild StatusDocker Build Statuscodecov

该项目是研究和开发A5}的基础。它抽象了特征提取和训练模型,从而可以专注于更高层次的任务。

目前,已实现以下模型:

  • 弓形加权的X包,其中X是许多不同的提取特征类型。
  • ID2VEC,源代码标识符嵌入。
  • DOCFREQ,特征文件频率(TF-IDF的一部分)。
  • 基于源代码标识符的主题建模。

它是用python3编写的,已经在linux和macos上进行了测试。源{d}ml与source{d} engine紧密耦合,并将所有特征提取并行化委托给它。

以下是使用sourced.ml构建的概念验证项目列表:

  • vecino-查找相似的存储库。
  • tmsc-列出存储库的主题。
  • snippet-ranger-源代码片段的主题建模。
  • apollo-大规模源代码重复数据消除。

安装

是否希望在安装中包含SCAPK或宁愿使用现有的 安装,要使用sourced-ml您需要安装一些本机库, 例如,在ubuntu上,你必须首先运行:apt install libxml2-dev libsnappy-devTensorflow 也是一个要求-我们支持CPU和GPU版本。 为了选择所需的版本,请在下一节中修改包名称 根据您的选择,sourced-ml[tf]sourced-ml[tf-gpu]如果不安装,则两个版本都不会安装。

包括apache spark

pip3 install sourced-ml

使用现有的Apache Spice < EH3>

如果您已经在位于$APACHE_SPARK的环境中安装并配置了apache spark,则可以重新使用它,并避免通过pip "editable installs"通过

下载200MB
pip3 install -e "$SPARK_HOME/python"
pip3 install sourced-ml

在这两种情况下,都需要安装一些本机库。例如。, 在ubuntu上。有些零件需要Tensorflow

用法

这个项目公开了两个接口:api和命令行。命令行是

srcml --help

Docker图像

docker run -it --rm srcd/ml --help

如果第一个命令失败,请按

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

您确定守护进程正在运行,然后需要将您的用户添加到docker组:请参阅documentation

贡献

…欢迎!见CONTRIBUTINGCODE_OF_CONDUCT.md

许可证

Apache 2.0

算法

标识符嵌入

我们为每个存储库构建源代码标识符共现矩阵。

  1. 阅读git存储库。

  2. 使用enry对文件进行分类。

  3. 从每个支持的文件中提取UAST

  4. Split and stem每个树中的所有标识符。

  5. Traverse UAST,折叠所有非标识符路径并全部记录

    与共现相同级别的标识符。另外,把他们和他们的直系父母联系起来。

  6. 写出全局共现矩阵。

  7. 使用Swivel训练嵌入(需要tensorflow)。交互式查看

    中间结果是使用--logs生成张力板。

  8. 编写标识符嵌入模型。

1-5用repos2coocc命令执行,6用id2vec_preproc,7用id2vec_train,8用id2vec_postproc

重量为x的袋子

我们将每个存储库表示为一个加权向量包,由文档频率(“docfreq”)和标识符嵌入(“id2vec”)提供。

  1. 从磁盘克隆或读取存储库。
  2. 使用enry对文件进行分类。
  3. 从每个支持的文件中提取UAST
  4. 从每棵树中提取各种特征,如标识符、文本或类似node2vec的结构指纹。
  5. 按存储库、文件或功能分组。
  6. 根据TF-IDF设置每个此类特征的权重。
  7. 写弓模型。

使用repos2bowcom执行1-7命令。

主题建模

here

词汇表

here

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java需要设置框架。可设置大小(false)以重新绘制()   java我对PDF文件感到困惑   为什么是太阳。jvm。热点。调试器。DebuggerException:无法打开二进制文件`?   设置结果为textview时出现java空指针异常   我应该使用什么同步原语在Java中实现事件驱动程序框架?   java为什么WindowClosing处理程序在退出程序之前不执行后台任务?   如何将“20170712T18:43:04.000Z”转换为安卓或java中的相对时间?   Java,获取按键的时间长度,currentTimeMillies()始终为24   maven构建的java可执行Jar找不到logback。xml   java在其外部的函数中使用for循环中的值   java如何以表格格式将不同长度的数据对齐   java Play 2.5 WebSocket连接构建   maven而非eclipse的java强制转换问题   java如何在JFreeChart中使X轴上的值水平?   构建Java Windows应用程序以访问在线MySQL数据库需要什么   java添加构造函数会出错吗?这没有道理,请帮忙,编程问题   java在一个jframe中的两个JPanel中使用两个绘制方法   java数学或逻辑问题   java如何复制Androids库存摄像头方向更改