【问题标题】:Storing NLP corpora in databases rather than csv?将 NLP 语料库存储在数据库中而不是 csv 中?
【发布时间】:2019-08-27 10:29:05
【问题描述】:

在实现 NLP 系统时,我想知道为什么 CSV 文件经常用于在学术界和常见的 Python 示例(特别是:基于 NLTK)中存储文本语料库。我个人遇到了一些问题,使用的系统会自动生成一些语料库并在以后访问它们。

这些问题来自CSV files: - 难以自动备份 - 难以确保可用性 - 潜在的事务竞争和线程访问问题 - 难以在多个服务器上分发/分片 - 如果语料库变得复杂,架构不清晰或未定义 - 通过文件名访问是有风险的。它可以改变。 - 文件损坏可能 - 通常不用于文件访问的细粒度权限

使用MySQLMongooseDB 的问题: - 初始设置,保持专用服务器与数据库实例联机运行 - 需要花时间创建和定义架构

CSV 的优点: - 理论上更容易自动压缩和解压缩内容 - 一些程序员比较熟悉 - 更容易通过 FTP 甚至电子邮件传输给其他学术研究人员

查看多篇学术文章,即使在更高级的 NLP 研究中,例如进行命名实体识别或语句提取,研究似乎也使用 CSV。

CSV 格式是否还有其他优点使其得到如此广泛的应用?行业系统应该使用什么?

【问题讨论】:

    标签: csv nlp nltk corpus


    【解决方案1】:

    我将答案分为两部分:

    为什么选择 CSV:

    nlp 任务的数据集,无论是分类还是序列注释,基本上每个语料库中的每个训练实例都需要两件事:

    1. 要注释的文本(可能是单个标记、句子或文档)和可选的预提取特征。
    2. 相应的标签/标签。

    由于这种简单的数据表格组织方式在不同的 NLP 问题中保持一致,因此 CSV 是一个自然的选择。 CSV 易于学习、易于解析、易于序列化并且易于包含不同的编码和语言。 CSV 很容易与 Python 一起使用(它是 NLP 中最主要的),并且有像 Pandas 这样的优秀库,可以非常容易地操作和重新组织数据。

    为什么不用数据库

    数据库确实是一种矫枉过正。 NLP 模型始终是离线训练的,即您一次将所有数据拟合到 ML/DL 模型中。不存在并发问题。训练期间存在的唯一并行性在 GPU 内部进行管理。训练期间不存在安全问题:您在机器中训练模型,并且只在服务器中部署训练好的模型。

    【讨论】:

    • 欣赏这个!数据库确实感觉有点矫枉过正——你关于一致的表格数据的观点非常强烈,尤其是关于使 csv 操作更容易的 pandas。我不同意 NLP 任务仅依赖于文本和标签/标签 - 例如,字体大小可能对理解某些文本的语义重要性很重要(例如来自 OCR)。在这个演示文稿us.pycon.org/2013/schedule/presentation/107 中,他们谈到一旦复杂因素发挥作用就使用 mongoDB。 - 但是,你已经说服了我,我会使用 csv 直到绝对有必要。
    • 对于 OCR 视觉特征(如字体大小)很有用,但这不被视为 NLP 任务。 NLP 是自然语言处理,它与处理人类用来处理歧义和不完整性的自然语言有关。虽然 nlp 可能使用计算机视觉 (ocr) 或语音处理的输出来将音频转换为文本,但这些不能被视为 nlp。
    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 2013-06-14
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多