跳转到主要内容

实现lexibank工作台的Python库

项目描述

pylexibank

Build Status PyPI

pylexibank 是一个Python包,提供管理和聚合 Lexibank 数据集的功能。

兼容性

pylexibank 提供的整理功能的核心是与其他元数据目录的集成,如 GlottologConcepticonCLTS。并非所有这些目录的版本都与所有版本的 pylexibank 兼容。

pylexibank Glottolog Concepticon CLTS
2.x >=4.x >=2.x 1.x
3.x >=4.x >=2.x >=2.x

安装

由于pylexibank有许多依赖项,安装它会导致同时安装许多其他Python包。为了避免对您的默认Python安装产生任何副作用,我们建议在虚拟环境中进行安装。

现在您可以通过pip或按照CONTRIBUTING.md中的说明以开发模式安装pylexibank

安装pylexibank还会安装cldfbench,而cldfbench反过来又安装了一个命令行命令cldfbench。此命令用于从命令行作为子命令运行pylexibank的功能。

cldfbench还用于管理参考目录,特别是Glottolog、Concepticon和CLTS。因此,在安装pylexibank后,您应该运行

cldfbench catconfig

以确保目录数据本地可用并且pylexibank知道它。

用法

pylexibank可以用两种方式使用

  • 命令行界面主要提供对lexibank编纂工作流程的功能的访问。
  • pylexibank包也可以像任何其他Python包一样在自己的Python代码中使用,以以程序化(和一致)的方式访问lexibank数据。

cmd_makecldf方法

pylexibank的主要目标是创建高质量的CLDF词汇表。这发生在Lexibank数据集的定制cmd_makecldf方法中。为了使这项任务更容易,pylexibank提供

  • 对Glottolog和Concepticon数据的访问
    • args.glottolog.api指向一个CachingGlottologAPI实例(pyglottolog.Glottolog的子类)
    • args.concepticon.api指向一个CachingConcepticonAPI实例(pyconcepticon.Concepticon的子类)
  • 通过Dataset.form_spec实例(pylexibank.FormSpec的实例,可以针对每个数据集进行自定义)进行对形式操作的**精细控制**。FormSpec旨在捕获在编译源数据时使用的规则 - 对于违反这些规则的源数据,建议通过在etc/lexemes.csv中列出词素进行全部替换。
  • 通过在pylexibank.models中派生默认值,**支持**词素、同源词、概念和语言上的**附加信息**
  • 支持在数据集的etc_dir中的**配置数据**的**轻松访问**
  • 使用带有正字法配置文件(s)的segments包的**支持**进行**分割**
    • 如果正字法配置文件作为etc/orthography.tsv提供,则将初始化此配置文件的segments.Tokenizer实例可用为Dataset.tokenizer,并由LexibankWriter.add_form自动使用。
    • 如果存在目录etc/orthography/,则其中所有*.tsv文件都将被视为正字法配置文件,并且将提供一个将文件名基本名映射到分词器的dict。分词器选择可以通过两种方式控制
      • Dataset.tokenizer()调用中传递关键字profile=FILENAME_STEM
      • 为每种语言提供正字法配置文件,并让Dataset.tokenizer通过item['Language_ID']选择分词器。

对Lexibank数据集的程序化访问

尽管pycldf已经提供了一些对读取和写入任何CLDF数据集的支持,但pylexibank(基于cldfbench)添加了另一层抽象,它支持

  • 将Lexibank数据集作为Python包处理(并通过pip进行管理),
  • 一个多步骤的数据整理工作流程
  • 将Lexibank数据集的集合聚合到单个SQLite数据库中,以便进行高效的分析。

可安装和启用pylexibank的数据集

将Lexibank数据集转换为一个(可使用pip安装的)Python包,就像编写一个设置脚本 setup.py一样简单。但是,为了让数据集可以通过pylexibank进行整理,数据集必须提供

  • 一个Python模块
  • 包含一个从pylexibank.Dataset派生的类,该类指定
    • Dataset.dir:一个目录,相对于该目录,存在整理目录
    • Dataset.id:数据集的标识符。
  • 这被宣传为在setup.py中的lexibank.dataset 入口点。例如。
        entry_points={
            'lexibank.dataset': [
                'sohartmannchin=lexibank_sohartmannchin:Dataset',
            ]
        },
    

将数据集转换为pylexibank启用Python包具有多个优点

  • 数据集可以从各种来源安装,例如GitHub存储库。
  • 可以使用需求文件“锁定”数据集的特定版本以进行安装。
  • 安装后,可以编程方式发现数据集。
  • 可以使用虚拟环境来管理需要不同版本相同数据集的项目。

约定

  1. 数据集标识符应为小写,并且是
    • 如果该名称已建立并且广为人知(例如,“abvd”,“asjp”等),则为数据库名称
    • <author><languagegroup>(例如,“grollemundbantu”等)
  2. 需要使用外部程序(例如antiword,libreoffice)进行预处理的数据集应将中间/工件存储在./raw/目录中,而cmd_install代码应从该目录安装,而不是要求外部依赖项。
  3. 声明数据集对pylexibank的依赖性
    • setup.py中指定最小版本,即需要pylexibank>=1.x.y
    • 在数据集的cldf-metadata.json中使用prov:createdBy属性指定精确版本(pylexibank将在通过lexibank makecldf创建CLDF时处理此问题)。

GitHub上的数据集

GitHub为Lexibank数据集等文本数据的协作整理提供了一个非常好的平台。

鼓励数据集整理者使用除了版本控制之外的功能,例如

  • 发布
  • README.md、LICENSE、CONTRIBUTORS.md

请注意,对于使用pylexibank整理的数据集,总结统计信息将在makecldf命令作为部分写入到README.md

除了支持协作编辑和版本控制数据外,GitHub还支持通过webhooks连接到其他服务。特别是,其中两个服务与Lexibank数据集相关

  • 持续集成,例如通过Travis-CI
  • 使用Zenodo存档。注意
    • 当在GitHub上整理数据集并将其连接到ZENODO以触发发布自动存档时,发布标签必须以字母开头(否则存档将失败)。
    • 可以添加其他标签以添加上下文 - 例如,当发布由特定用例触发时(例如CLICS 2.0发布)。可以使用以下方式完成此操作
      git checkout tags/vX.Y.Z
      git tag -a "clics-2.0"
      git push origin --tags
      

归属

对Lexibank数据集的贡献有多个级别

  • 通常,Lexibank数据集是从已发布的数据中派生出来的(无论是论文的补充材料还是公开数据库)。通过在数据集的元数据中指定其完整引用并在Lexibank数据集的发布标题中添加源标题来给出对源数据集的归属。
  • 源数据集通常也是来自其他来源数据的聚合。如果可能,这些来源(及相应的参考文献)会被保留在Lexibank数据集的CLDF中;否则,我们将参考源数据集以描述其来源。
  • 使用pylexibank编目工作流程从源数据集派生Lexibank数据集,包括添加代码、映射到参考目录以及在某种程度上进行语言判断。这些贡献列在数据集的CONTRIBUTORS.md中,并对应于Lexibank数据集发布版本的作者列表。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

pylexibank-3.5.0.tar.gz (72.9 kB 查看哈希值)

上传时间

构建分发

pylexibank-3.5.0-py2.py3-none-any.whl (73.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面