在数据库中存储NLP语料库而不是csv?

在数据库中存储NLP语料库而不是csv?,csv,nlp,nltk,corpus,Csv,Nlp,Nltk,Corpus,在实现NLP系统时,我想知道为什么CSV文件经常用于存储学术界的文本语料库,尤其是常见的Python示例:基于NLTK的。我个人曾遇到过一些问题,使用一个系统自动生成大量语料库,并在以后访问这些语料库 以下是来自CSV文件的问题: -难以自动化备份 -难以确保可用性 -潜在的事务竞争和线程访问问题 -难以在多台服务器上分发/分片 -如果语料库变得复杂,则模式不清晰或未定义 -通过文件名访问存在风险。它可以改变。 -文件可能损坏 -细粒度权限通常不用于文件访问 使用MySQL或MongooseDB

在实现NLP系统时,我想知道为什么CSV文件经常用于存储学术界的文本语料库,尤其是常见的Python示例:基于NLTK的。我个人曾遇到过一些问题,使用一个系统自动生成大量语料库,并在以后访问这些语料库

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

使用MySQL或MongooseDB的问题: -初始设置,在DB实例联机的情况下保持Dedeated服务器运行 -需要花费时间创建和定义架构

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

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


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

我将把答案分为两部分:

为什么是CSV:

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

文本可以是要注释的单个标记、句子或文档,也可以是预先提取的特征。 相应的标签/标签。 由于这种简单的表格数据组织在不同的NLP问题上是一致的,所以CSV是一种自然选择。CSV易于学习、易于解析、易于序列化,并且易于包含不同的编码和语言。CSV很容易与Python一起工作,Python是NLP最主要的工具,并且有这样的优秀库,使得操作和重新组织数据非常容易

为什么不是数据库


一个数据库真是太过分了。NLP模型始终是离线训练的,即在ML/DL模型中一次拟合所有数据。没有并发问题。在训练期间存在的唯一并行性是在GPU内部管理的。培训期间没有安全问题:您在机器中培训模型,而只在服务器中部署经过培训的模型。

非常感谢!数据库确实感觉有些过头了——您对一致的表格数据的观点非常强烈,特别是关于如何使csv操作更容易的问题。我不同意NLP任务仅依赖于文本和标记/标签,例如,字体大小可能对理解某些文本的语义重要性很重要,例如来自OCR的文本。在本演示中,他们讨论了在复杂因素发挥作用后使用mongoDB然而,你已经说服了我,我将使用csv,直到更多是绝对必要的。对于OCR来说,字体大小等视觉功能是有用的,但这不是NLP任务。NLP是一种自然语言处理,与处理人类用来处理歧义和不完整性的自然语言有关。尽管nlp可能使用计算机视觉ocr或语音处理的输出将音频转换为文本,但这些不能被视为nlp。