医学和科学论文的ETL过程

paperetl的Python项目详细描述


paperetl:医学和科学论文的ETL过程

VersionGitHub Release DateGitHub issuesGitHub last commitBuild StatusCoverage Status

paperetl是一个处理医学和科学论文的ETL库。它支持以下来源:

paperetl支持以下数据库来存储文章:

  • SQLite公司
  • 弹性搜索
  • JSON文件
  • YAML文件

安装

最简单的安装方法是通过pip和PyPI

pip install paperetl

您也可以直接从GitHub安装paperetl。建议使用Python虚拟环境。在

^{pr2}$

支持Python3.6+

其他依赖项

研究设计检测使用scispacy,可通过以下方式安装:

pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.2.5/en_core_sci_md-0.2.5.tar.gz

PDF解析依赖于一个现有的GROBID实例来启动和运行。假设这是在ETL服务器上本地运行的。这不是 对CORD-19数据集是必需的。在

示例

将CORD-19加载到SQLite

下面的示例演示如何使用paperetl将CORD-19数据集加载到SQLite数据库中。在

Allen Institute for AI CORD-19 Release Page上下载最新的数据集。转到包含该文件的目录并运行以下命令。在

cd <download_path>
tar -xvzf cord-19_$DATE.tar.gz

其中$DATE是下载文件中的yyyy-mm-dd格式的日期字符串。完成后,应该有一个名为元数据.csv以及包含所有json文章的子目录。在

建立数据库:

# Download pre-trained study design/attribute models
# https://www.kaggle.com/davidmezzetti/cord19-study-design/#attribute
# https://www.kaggle.com/davidmezzetti/cord19-study-design/#design
# Default location: ~/.cord19/models/attribute, ~/.cord19/models/design

# Download entry-dates.csv and place in <download path>
# https://www.kaggle.com/davidmezzetti/cord-19-article-entry-dates/output

# Execute the ETL process to load articles into SQLite
python -m paperetl.cord19 <download_path>

一旦完成,将有一个文章.sqlite文件格式为~/.cord19/型号

请参阅CORD-19 ETL笔记本,以获取paperetl实际应用的全面示例。在

将PDF文章加载到SQLite

下面的示例演示如何使用paperetl将一组医学/科学pdf文章加载到SQLite数据库中。在

在本地目录中下载所需的医学/科学文章。对于本例,假设文章位于名为/data/scipaper/的目录中

建立数据库:

# Download pre-trained study design/attribute models
# https://www.kaggle.com/davidmezzetti/cord19-study-design/#attribute
# https://www.kaggle.com/davidmezzetti/cord19-study-design/#design
# Default location: ~/.paperai/models/attribute, ~/.paperai/models/design

# Load PDF articles into SQLite
python -m paperetl.file /data/scipaper ~/.paperai/models ~/.paperai/models

一旦完成,将有一个文章.sqlite在~/.paperai/models中归档

加载到Elasticsearch

以上两个示例还支持在Elasticsearch中存储数据,但有以下更改。这些示例假设Elasticsearch在本地运行,根据需要将URL更改为远程服务器。在

线缆-19:

python -m paperetl.cord19 <download_path> http://localhost:9200

PDF文章:

python -m paperetl.file /scipaper/input http://localhost:9200 ~/.paperai/models

一旦完成,elasticsearch中将有一个文章索引,其中存储元数据和全文。在

将PDF文章转换为JSON/YAML

paperetl还可以用于将PDF文章转换为JSON或YAML文件。如果要将数据输入另一个系统或手动检查/调试单个文件,则此功能非常有用。在

JSON:

python -m paperetl.file /data/scipaper json:///data/scipaper ~/.paperai/models

山药:

python -m paperetl.file /data/scipaper yaml:///data/scipaper ~/.paperai/models

转换后的文件将存储在/data/scipaper中

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

推荐PyPI第三方库


热门话题
java如何使用数据库中的值填充p:selectOneMenu   Java/Junit中的异步单元测试一个非常简单但不成功的例子   在Debian上使用Java连接到MySQL   java测试时如何恢复表中的一条记录/行?   java如何将重点放在jbutton上而不是放在另一个jbutton上?   java我可以从HPROF文件中获取JVM标志吗?   java如何使用自定义比较器在2个集合上保留   java让stringTokenizer将一行文本拆分为预定义变量的最佳方法是什么   Kotlin Android/Java字符串日期时间格式,API21   exchange server EWS Java Api自动发现不工作   netbeans是Java新手,似乎无法修复错误;应为类、接口或枚举。274062   我正在尝试将一些scala代码转换为Java8,以创建新的Lambda和并行集合   流中的分配api(java)   用于串行通信的java Python字节数组