SOFTware Metadata Extraction Framework:从自述文件中自动提取相关软件信息的工具
项目描述
软件元数据提取框架 (SOMEF)
用于从自述文件中自动提取相关信息的命令行界面。
作者: Daniel Garijo、Allen Mao、Miguel Ángel García Delgado、Haripriya Dharmala、Vedant Diwanji、Jiaying Wang 和 Aidan Kelley。
特征
给定一个自述文件(或 GitHub/Gitlab 存储库),SOMEF 将提取以下类别(如果存在):
- 名称:标识软件组件的名称
- 全名:姓名+所有者(所有者/姓名)
- 完整标题:如果存储库是短名称,我们将尝试提取存储库名称的较长版本
- 描述:对软件功能的描述。
- 引文:作者在自述文件中所述的首选引文(通常以
.bib形式)。 - 安装说明:一组说明如何安装目标存储库的说明
- 调用:运行科学软件组件所需的执行命令
- 使用示例:作者在执行软件组件时记录的假设和注意事项,或有关如何使用它的示例。
- 文档:在哪里可以找到有关软件组件的其他文档。
- 要求:执行软件组件所需的先决条件和依赖项。
- 贡献者:软件组件的贡献者
- FAQ : 关于软件组件的常见问题
- 支持:获取软件组件支持的指南和链接
- 许可:软件组件的许可和使用条款
- 联系人:负责维护软件组件的联系人
- 下载 URL:下载目标软件的 URL(通常是安装程序、软件包或 tarball 到稳定版本)
- DOI:与软件关联的数字对象标识符(如果有)
- DockerFile:构建文件以为目标软件创建 Docker 映像
- Notebooks:存储库中包含的 Jupyter 笔记本
- 可执行笔记本:准备好执行的 Jupyter 笔记本(例如,通过 myBinder)
- Owner:负责存储库的用户或组织的名称
- 所有者类型:存储库的所有者、用户或组织的类型
- 关键字:用于通常标识软件组件的一组术语
- 源代码:链接到源代码(通常是可以找到自述文件的存储库)
- Releases:指向软件组件可用版本的指针
- Changelog : 版本间变化的描述
- 问题跟踪器:链接在哪里打开目标存储库的问题
- 编程语言:存储库中使用的语言
- Repository Status : repostatus.org中描述的存储库状态
- Arxiv 链接:Arxiv 文章的链接
- Stargazers count : 项目的观星者总数
- Forks count:项目的分叉数
- Forks url:由项目组成的分叉的链接
- 行为准则:链接到项目的行为准则
- 脚本:存储库中包含的代码片段。
- 支持渠道:可以用来获得有关目标软件组件的支持的帮助渠道。
- 图片:用于说明软件组件的图片。
- Logo : 用于表示目标软件组件的主要标志。
- Ontologies:存储库中存在的本体文件的 URL 和路径。
我们使用不同的监督分类器、标头分析、正则表达式和 GitHub/Gitlab API 来检索所有这些字段(每个字段可能使用一种以上的技术)
文档
请参阅https://somef.readthedocs.io/en/latest/上的完整文档
引用一些:
期刊发表(首选):
@article{10.1162/qss_a_00167,
author = {Kelley, Aidan and Garijo, Daniel},
title = "{A Framework for Creating Knowledge Graphs of Scientific Software Metadata}",
journal = {Quantitative Science Studies},
pages = {1-37},
year = {2021},
month = {11},
issn = {2641-3337},
doi = {10.1162/qss_a_00167},
url = {https://doi.org/10.1162/qss\_a\_00167},
eprint = {https://direct.mit.edu/qss/article-pdf/doi/10.1162/qss\_a\_00167/1971225/qss\_a\_00167.pdf},
}
会议刊物(首发):
@INPROCEEDINGS{9006447,
author={A. {Mao} and D. {Garijo} and S. {Fakhraei}},
booktitle={2019 IEEE International Conference on Big Data (Big Data)},
title={SoMEF: A Framework for Capturing Scientific Software Metadata from its Documentation},
year={2019},
doi={10.1109/BigData47090.2019.9006447},
url={http://dgarijo.com/papers/SoMEF.pdf},
pages={3032-3037}
}
要求
- 蟒蛇 3.9
SOMEF 已在 Unix、MacOS 和 Windows 微软操作系统上进行了测试
从 Pypi 安装
在Pypi中可以使用 SOMEF!. 要安装它,只需键入:
pip install somef
从 GitHub 安装
要运行 SOMEF,请按照以下步骤操作:
克隆这个 GitHub 存储库
git clone https://github.com/KnowledgeCaptureAndDiscovery/somef.git
安装 somef (您应该在刚刚克隆的文件夹中)。请注意,对于 Python 3.7 和 3.8,模块 Cython 应预先安装(通过命令:)pip install Cython。
cd somef
pip install -e .
测试 SOMEF 安装
somef --help
如果一切顺利,您应该看到:
Usage: somef [OPTIONS] COMMAND [ARGS]...
Options:
-h, --help Show this message and exit.
Commands:
configure Configure credentials
describe Running the Command Line Interface
version Show somef version.
通过 Docker 安装
我们提供了一个已经安装了 SOMEF 的 Docker 镜像。要通过 Docker 运行,您可以通过运行以下命令来构建存储库中提供的 Dockerfile:
docker build -t somef .
或者只使用DockerHub中已经内置的 Docker 镜像:
docker pull kcapd/somef
然后,要运行您的图像,只需键入:
docker run -it kcapd/somef /bin/bash
您将准备好使用 SOMEF(请参阅下面的部分)。如果您想访问结果,我们建议您安装一个卷。例如,以下命令会将当前目录挂载为outDocker 映像中的文件夹:
docker run -it --rm -v $PWD/:/out kcapd/somef /bin/bash
如果您将 somef 生成的任何文件移动到/out中,那么您将能够在当前目录中看到它们。
用法
在第一次运行 SOMEF 之前,您必须对其进行适当的配置(您只需执行一次)。跑
somef configure
您将被要求提供以下信息:
- GitHub 身份验证令牌 [可选,如果不使用则留空],SOMEF 使用它从 GitHub 检索元数据。如果您不包含身份验证令牌,您仍然可以使用 SOMEF。但是,您可能会被限制为每小时处理一系列请求。有关更多信息,请参阅https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
- 训练分类器的路径(pickle 文件)。如果您有自己的分类器,可以在此处提供。否则,您可以将其留空
如果你想自动配置 somef(没有 GitHUb 身份验证密钥并使用默认分类器),只需键入:
somef configure -a
要显示有关可用选项的帮助,请运行:
somef configure --help
其中显示:
Usage: somef configure [OPTIONS]
Configure GitHub credentials and classifiers file path
Options:
-a, --auto Automatically configure SOMEF
-h, --help Show this message and exit.
更新 SOMEF
如果您将 SOMEF 更新到较新的版本,我们configure再次推荐您使用该库(通过运行somef configure)。基本原理是不同的版本可能依赖于可能存储在不同路径中的分类器。
运行 SOMEF
$ somef describe --help
SOMEF Command Line Interface
Usage: somef describe [OPTIONS]
Running the Command Line Interface
Options:
-t, --threshold FLOAT Threshold to classify the text [required]
Input: [mutually_exclusive, required]
-r, --repo_url URL Github/Gitlab Repository URL
-d, --doc_src PATH Path to the README file source
-i, --in_file PATH A file of newline separated links to GitHub/
Gitlab repositories
Output: [required_any]
-o, --output PATH Path to the output file. If supplied, the
output will be in JSON
-c, --codemeta_out PATH Path to an output codemeta file
-g, --graph_out PATH Path to the output Knowledge Graph export
file. If supplied, the output will be a
Knowledge Graph, in the format given in the
--format option chosen (turtle, json-ld)
-f, --graph_format [turtle|json-ld]
If the --graph_out option is given, this is
the format that the graph will be stored in
-p, --pretty Pretty print the JSON output file so that it
is easy to compare to another JSON output
file.
-m, --missing JSON report with the missing metadata fields
SOMEF was not able to find. The report will
be placed in $PATH_missing.json, where
$PATH is -o, -c or -g.
-kt, --keep_tmp PATH SOMEF will NOT delete the temporary folder
where files are stored for analysis. Files
will be stored at the
desired path
-h, --help Show this message and exit.
使用示例:
以下命令从https://github.com/dgarijo/Widoco/提取所有可用的元数据。
somef describe -r https://github.com/dgarijo/Widoco/ -o test.json -t 0.8
贡献:
如果您想通过拉取请求做出贡献,请将其提交给dev分支。
下一个特点:
扩展 SOMEF 类别:
要运行具有附加类别的分类器或删除现有类别,应在 config.json 中提供相应的路径条目,并应在 .json 中的类别变量中添加/删除类别类型cli.py。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。