我创建了一个.txt文件,其中包含模型的训练数据.训练样本具有以下特定结构:
("sample sentence",
{"entities": [ ]})
我喜欢其中的600个,需要在python中列出.但是,当我使用file.readlines()等进行“常规” python阅读时,我得到了所有导入为字符串的示例,这些示例基本上是以下内容:
'("sample sentence",'
'{"entities": [ ]})'
是什么使训练数据对于模型无效.
所以我的问题是我怎么能告诉python读取.txt文件而不使用任何字符串格式,而是按原样读取它?
//编辑:
.txt是包含训练数据的文件,该文件适合遵循NER注释方案的spaCy模型的训练过程.来自spaCy文档页面的带有NER注释方案的培训数据示例:
TRAIN_DATA = [
("Uber blew through $1 million a week", {'entities': [(0, 4, 'ORG')]}),
("Google rebrands its business apps", {'entities': [(0, 6, "ORG")]})]
我的.txt文件看起来完全像这样,除了.txt文件的开头和结尾没有[]并且两者之间的换行符是断行的.因此,此示例在我的.txt文件中如下所示:
("Uber blew through $1 million a week",
{'entities': [(0, 4, 'ORG')]}),
("Google rebrands its business apps",
{'entities': [(0, 6, "ORG")]})
解决方法:
我想出了以下几点.对于您的示例,它可以正常工作.试试看.
from ast import literal_eval
with open(file_name, 'r') as f:
TRAIN_DATA = literal_eval('[' + ''.join(f.readlines()) + ']')
要么
from ast import literal_eval
with open(file_name, 'r') as f:
TRAIN_DATA = literal_eval('[' + f.read() + ']')
这将读取整个文件,并在评估之前添加缺少的方括号.