源代码机器学习框架。提供API和工具来训练和使用基于从Babelfish的UAST中提取的源代码特性的模型。
sourced-ml的Python项目详细描述
姆朗科德研究游乐场
该项目是研究和开发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-dev
。Tensorflow
也是一个要求-我们支持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"通过
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。
贡献
…欢迎!见CONTRIBUTING和CODE_OF_CONDUCT.md。
许可证
算法
标识符嵌入
我们为每个存储库构建源代码标识符共现矩阵。
阅读git存储库。
使用enry对文件进行分类。
从每个支持的文件中提取UAST。
Split and stem每个树中的所有标识符。
Traverse UAST,折叠所有非标识符路径并全部记录
与共现相同级别的标识符。另外,把他们和他们的直系父母联系起来。
写出全局共现矩阵。
使用Swivel训练嵌入(需要tensorflow)。交互式查看
中间结果是使用
--logs
生成张力板。编写标识符嵌入模型。
1-5用repos2coocc
命令执行,6用id2vec_preproc
,7用id2vec_train
,8用id2vec_postproc
。
重量为x的袋子
我们将每个存储库表示为一个加权向量包,由文档频率(“docfreq”)和标识符嵌入(“id2vec”)提供。
- 从磁盘克隆或读取存储库。
- 使用enry对文件进行分类。
- 从每个支持的文件中提取UAST。
- 从每棵树中提取各种特征,如标识符、文本或类似node2vec的结构指纹。
- 按存储库、文件或功能分组。
- 根据TF-IDF设置每个此类特征的权重。
- 写弓模型。
使用repos2bow
com执行1-7命令。
主题建模
见here。
词汇表
见here。