User Tools

Site Tools


it:training_of_german_word_embedding_for_nlp

Training of German Word Embedding for NLP

Step by step

  1. Download Wikipedia dump: https://dumps.wikimedia.org/
    1. I use the latest dump from german wikipedia: http://ftp.acc.umu.se/mirror/wikimedia.org/dumps/dewiki/
    2. dewiki-20190520-pages-articles.xml.bz2 at the moment
    1. python WikiExtractor.py -o data/we_output --processes 8 data/dewiki-20190520-pages-articles.xml.bz2

WikiExtractor.py

  • Um den Dump auch mit Talk Seiten zu bekommen den Dump mit “meta” im Namen laden.
  • ./WikiExtractor.py -o output3 --processes 8 ../dewiki-20181001-pages-meta-current.xml.bz2
  • Datenmenge nach erfolgreicher Extraktion: 5.2 GB

Code Anpassung um auch Disskusionen anzugeben

Das Script von Wikiextractor wird angepasst:

def keepPage(ns, page):
    if ns != '0' and ns != '1': # Aritcle and Talk
        print('skipped ns:', ns)
        return False
    # remove disambig pages if desired
    if options.filter_disambig_pages:
        for line in page:
            if filter_disambig_page_pattern.match(line):
                return False
    return True

Nutzung von BILM

  • Kommando: python bin/train_elmo.py --train_prefix='big-set/*' --vocab_file='vocab-2016-09-10.txt' --save_dir='output_dir'

Verhindern, dass der gesamte Speicher genutzt wird

  • durch config.gpu_options.allow_growth = True getestet wie viel Speicher genutzt wird: 8583 MiB
  • dann durch config.gpu_options.per_process_gpu_memory_fraction = 0.75 Sper Verbrauch auf 8771 MiB hart begrenzt
  • Codeänderungen waren in folgenden Dateien notwendig: less bilm/training.py und less bilm/model.py
  • die Codestellen können durch eine Volltextsuche nach Session gefunden werden
  • Beispiel:
    tf_config = tf.ConfigProto(allow_soft_placement=True)
    tf_config.gpu_options.per_process_gpu_memory_fraction = 0.75
 
    with tf.Session(config=tf_config) as sess:
        sess.run(init)

Tools

  • split files by line: split -l <split_after_n_lines> <filename_to_split>
  • shuffle files by line: shuf <input_file> -o <output_file>
  • count lines in file: wc -l <filename>

BILM Vorgehen / Erkenntnisse

2018-10-26 15:39:31.112162: W tensorflow/core/common_runtime/bfc_allocator.cc:215] 
Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.06GiB. The caller 
indicates that this is not a failure, but may mean that there could be performance 
gains if more memory were available.

Perplexity testen

Kleines Experiment mit nur wenigen “Übungsdaten”

  • python bin/run_test.py --test_prefix='val.txt' --vocab_file='vocab_val.txt' --save_dir='output'
  • nach 2 Epochen: PERPLEXITY = 8069.869
  • python bin/restart.py --train_prefix='input_train/*' --vocab_file='vocab_train.txt' --save_dir='output'
  • nach 2 weiteren Epochen: AVERAGE PERPLEXITY = 10405.855
  • nach 2 weiteren Epochen: AVERAGE PERPLEXITY = 14552.747
  • Ergebnis: schnelles Overfitting

Perplexity at Training

We have overfitting at epoch number 15 - so we are done with training.

Discussion

Enter your comment. Wiki syntax is allowed:
V I E T O
 
it/training_of_german_word_embedding_for_nlp.txt · Last modified: 2019/05/30 12:25 by pmay