python - 如何将元数据合并到 NLTK 语料库中以进行高效处理
问题描述
我有一个 txt 文件文件夹和一个 csv 文件,其中包含特定 txt 文档所属的类别和原始源文件 (pdf) 路径等附加数据。Txt 文件名用作 CSV 文件的键。
我已经创建了一个基本的 nltk 语料库,但我想知道这是否是构建我的数据的最佳方式,因为我想在语料库上执行一系列 NLP 任务,如 NER,并最终识别每个类别中出现的实体并成为能够链接回源 pdf 文件,因此可以在上下文中看到每个实体。
大多数 NLP 示例(查找 NER)从语料库到实体的 python 列表,但这是否意味着我将失去与包含实体和所有其他相关数据的 txt 文件的关联?
分类语料库似乎有助于保留类别数据,但我的问题是
什么是构建和使用我的语料库的最佳方法,以避免必须在之间往返 - 处理语料库以识别输出到列表的有趣信息 - 再次搜索语料库以获取包含列表中感兴趣元素的文件 - 搜索 CSV(数据框)通过文件 id 获取其余的元数据
解决方案
一种解决方案可能是对您正在使用的对象进行子类化,并在该子类的构造函数中,通过从每个文件到 CSV 中的行CorpusReader
创建一个字典,将每个文件与其元数据相关联。fileid
这样任何可以访问语料库的文件都可以访问元数据。
例如:
import nltk
import csv
from nltk.corpus.reader.api import CorpusReader
class MetadataCSVCorpusReader(CorpusReader):
def __init__(self, root, fileids, encoding='utf8', tagset=None):
super().__init__(root, fileids, encoding='utf8', tagset=None)
self._parsed_metadata = {}
metadata = self.open('metadata.csv')
reader = csv.DictReader(metadata)
for row in reader:
self._parsed_metadata[row['fileid']] = row
@property
def metadata(self):
"""
Return the contents of the corpus metadata.csv file, if it exists.
"""
return self.open("metadata.csv").read()
@property
def parsed_metadata(self):
"""
Return the contents of the metadata.csv file as a dict
"""
return self._parsed_metadata
推荐阅读
- python - 无法并排绘制多个水平条
- c# - 无法使用实例引用访问成员
- azure-active-directory - Microsoft Graph API 的 Webhook 订阅的最大数量是多少?
- azure-data-lake - 启用 Data Lake Gen2 的 Azure 事件中心捕获到存储
- c++ - 在 C++ Windows 中抓取当前活动窗口的快照
- sql - 状态:失败 - 测试失败:IO 错误:现有连接被远程主机强行关闭
- xcode - Xcode的调试导航器没用吗?
- c# - 模拟在被测方法中初始化的对象
- python - 将包含项目和子项目的文本文件转换为字典或数据结构
- javascript - 如果在 70% 上可见,则匹配 getBoundingClientRect JS