Если вы запустите сценарии, как указано в https://github.com/explosion/spaCy/tree/master/bin/wiki_entity_linking, они действительно создадут обучающий набор данных из Википедии, который вы можете использовать для обучения обобщенной модели c.
Если вы хотите тренировать более ограниченную модель, конечно, вы можете кормить в своем собственном тренировочном наборе. Пример с игрушкой можно найти здесь: https://github.com/explosion/spaCy/blob/master/examples/training/train_entity_linker.py, где вы можете определить формат данных тренировки:
def sample_train_data():
train_data = []
# Q2146908 (Russ Cochran): American golfer
# Q7381115 (Russ Cochran): publisher
text_1 = "Russ Cochran his reprints include EC Comics."
dict_1 = {(0, 12): {"Q7381115": 1.0, "Q2146908": 0.0}}
train_data.append((text_1, {"links": dict_1}))
text_2 = "Russ Cochran has been publishing comic art."
dict_2 = {(0, 12): {"Q7381115": 1.0, "Q2146908": 0.0}}
train_data.append((text_2, {"links": dict_2}))
text_3 = "Russ Cochran captured his first major title with his son as caddie."
dict_3 = {(0, 12): {"Q7381115": 0.0, "Q2146908": 1.0}}
train_data.append((text_3, {"links": dict_3}))
text_4 = "Russ Cochran was a member of University of Kentucky's golf team."
dict_4 = {(0, 12): {"Q7381115": 0.0, "Q2146908": 1.0}}
train_data.append((text_4, {"links": dict_4}))
return train_data
Этот пример в train_entity_linker.py
показывает, как обучается модель для устранения неоднозначности "Russ Cochran" гольфист (Q2146908
) от издателя (Q7381115
). Обратите внимание, что это просто игрушечный пример: для приложения * realisti c потребуется большая база знаний с точными предыдущими частотами (как вы можете получить, запустив сценарии Wikipedia / Wikidata), и, разумеется, вам потребуется гораздо больше предложений и лексическое разнообразие. ожидать, что модель машинного обучения подберет правильные подсказки и эффективно обобщит невидимый текст.