Python - UnicodeEncodeError: кодек «ascii» не может кодировать символы в позиции 42-43: порядковый номер не в диапазоне (128) - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь сделать Распознавание Именованных Сущностей, но когда я создаю данные поезда для этой цели, я получаю эту ошибку, я не знаю, почему это происходит и как я могу это исправить.Я получаю следующую ошибку:

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)
...