【发布时间】:2019-03-12 08:57:24
【问题描述】:
我使用 spaCy 制作了一个自定义 NER 模型,方法是从规定格式的文本文件中加载训练数据,并且模型工作正常,但是如果我尝试从 excel 文件加载训练数据,我们会得到输出模型,但是没有得到实体(没有输出,也没有错误)。 如果从 xlsx 文件加载训练数据,则文本文件中训练数据的模型可以完美地提供正确的输出,但无法获得结果。 数据类型没有问题(两种情况都一样)。 即使我将相同的内容写入文本文件然后加载它,也面临同样的问题
【问题讨论】:
-
你能包含一些代码吗?
-
import xlrd loc =("../training_data.xlsx") wb = xlrd.open_workbook(loc) TRAIN_DATA = [] sheet = wb.sheet_by_index(0) allRows = [] nrows = sheet. nrows count = 0 for i in range(1, nrows): row = sheet.row_values(i) obj = {'sentence': '', 'data': []} tup = tuple(row[1:5]) if (len(row[0]) != 0): count += 1 obj['sentence'] = row[0] obj['data'].append(tup) allRows.append(obj) else: allRows[ count - 1]['data'].append(tup)
-
for example in allRows: entity = [] for entity in example['data']: # 遍历实体 text, label, start, end = entity # ('want', '@command ', 2, 6) label = label.split('@')[1].upper() # 不是必须的,但是更好 end = end - 1 # 更正结束字符索引 entity.append((int(start), int(end), label)) #x=json.dumps(entities,indent=4) # 添加(text, annotations)元组的训练样例 TRAIN_DATA.append((example['sentence'] ,{'entities':entities }))