Я пытаюсь сделать Распознавание Именованных Сущностей, но когда я создаю данные поезда для этой цели, я получаю эту ошибку, я не знаю, почему это происходит и как я могу это исправить.Я получаю следующую ошибку:
File "pycrfsuite\_pycrfsuite.pyx", line 312, in pycrfsuite._pycrfsuite.BaseTrainer.append
File "stringsource", line 48, in vector.from_py.__pyx_convert_vector_from_py_std_3a__3a_string
File "stringsource", line 15, in string.from_py.__pyx_convert_string_from_py_std__in_string
UnicodeEncodeError: 'ascii' codec can't encode characters in position 42-43: ordinal not in range(128)
И вот часть кода.
if str(s_id) in tuple_data[current_fold]:
if word in tag_dict.keys():
tuple_data[current_fold][str(s_id)].append((word, pos_tag, tag_dict[word]))
else:
tuple_data[current_fold][str(s_id)].append((word, pos_tag, "O"))
else:
if word in tag_dict.keys():
tuple_data[current_fold][str(s_id)] = [(word, pos_tag, tag_dict[word])]
else:
tuple_data[current_fold][str(s_id)] = [(word, pos_tag, "O")]
for data in tuple_data:
all_sents = list(data.values())
test_size = int(len(all_sents) * 0.2)
train_size = int(len(all_sents) - test_size - 1)
train_sents = all_sents[:train_size]
test_sents = all_sents[-test_size:]
X_train = [sent2features(s) for s in train_sents]
y_train = [sent2labels(s) for s in train_sents]
X_test = [sent2features(s) for s in test_sents]
y_test = [sent2labels(s) for s in test_sents]
crf = sklearn_crfsuite.CRF(
algorithm='lbfgs',
c1=0.1,
c2=0.1,
max_iterations=100,
all_possible_transitions=True
)
crf.fit(X_train, y_train)