Spacy - Entity Linking с использованием описаний из Википедии - PullRequest
0 голосов
/ 11 февраля 2020

Я использую пример отсюда: https://github.com/explosion/spaCy/tree/master/bin/wiki_entity_linking.

Есть флаг для использования описаний из Википедии вместо Викиданных. Я установил это в True (он должен получить описания из данных Википедии). Но, глядя на код в разделе Wikidata,

if not descr_from_wp:
    logger.info("STEP 4c: Writing Wikidata entity descriptions to {}".format(entity_descr_path))
    io.write_id_to_descr(entity_descr_path, id_to_descr)

Это не должно выполняться, поскольку оператор if равен False. Но в разделе Википедии

if descr_from_wp:
    logger.info("STEP 5b: Parsing and writing Wikipedia descriptions to {}".format(entity_descr_path))

Он просто что-то регистрирует - похоже, он не создает описания. И у выходного файла есть заголовки: WD_id|description.

Как мне заставить его писать описания в Википедии?

1 Ответ

1 голос
/ 12 февраля 2020

Я считаю, что все действия происходят в строке перед той, которую вы цитировали:

wp.create_training_and_desc(wp_xml, entity_defs_path, entity_descr_path, 
training_entities_path, descr_from_wp, limit_train)

(это [https://github.com/explosion/spaCy/blob/master/bin/wiki_entity_linking/wikidata_pretrain_kb.py#L142] )

Эта функция это один файл, в https://github.com/explosion/spaCy/blob/master/bin/wiki_entity_linking/wikipedia_processor.py#L176:

def create_training_and_desc(
    wp_input, def_input, desc_output, training_output, parse_desc, limit=None
):
    wp_to_id = io.read_title_to_id(def_input)
    _process_wikipedia_texts(
        wp_input, wp_to_id, desc_output, training_output, parse_desc, limit
    )

При этом, пройдя этот процесс несколько дней go, у меня сложилось впечатление, что это все в потоке и может быть некоторое несоответствие между описаниями, реальным кодом и версиями пространства. Возможно, вы заметили, что Readme начинается с инструкции «Run wikipedia_pretrain_kb.py». И, тем не менее, такого файла не существует, только wikidata_pretrain_kb.py.

Пока процесс работал (виртуально), окончательная тренировка выполняется с ледяной скоростью 10 секунд на каждый пример. Для 300 000 примеров в обучающем наборе это означало бы около года обучения в 10 эпохах по умолчанию.

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

...