Example #1
0
 def __init__(self):
     self.tokenizer = Tokenizer()
     self.tokenizer.load()
     self.lexicon = Word2Lemmas()
     self.language_resources = LanguageResources()
     self.postagger = rupostagger.RuPosTagger()
     self.chunker = ruchunker.Chunker()
     self.word2tags = ruword2tags.RuWord2Tags()
     self.flexer = ruword2tags.RuFlexer()
     self.syntan = None
     self.gg_dictionaries = GenerativeGrammarDictionaries()
     self.known_words = set()
     #self.lemmatizer = Mystem()
     self.lemmatizer = rulemma.Lemmatizer()
     self.word_embeddings = None
    tokenizer.load()

    samples = load_samples(input_paths, tokenizer)

    logging.info('Loading dictionaries...')

    thesaurus = Thesaurus()
    thesaurus.load(os.path.join(data_folder, 'dict/links.csv'))  # , corpus)

    lexicon = Word2Lemmas()
    lexicon.load(os.path.join(data_folder, 'dict/word2lemma.dat'))

    grdict = ruword2tags.RuWord2Tags()
    grdict.load()

    flexer = ruword2tags.RuFlexer()
    flexer.load()

    # Аугментация: генерируем негативных сэмплы через выбор вариантов словоформ, отличающихся
    # от использованных в валидном ответе.
    logging.info('Generating negative samples...')
    all_keys = set(sample.get_key() for sample in samples)
    neg_samples = []
    for sample in samples:
        if sample.label == 1:
            answer_words = tokenizer.tokenize(sample.answer)
            answer_len = len(answer_words)
            if answer_len == 1:
                # Аугментация для однословного ответа.
                # Формы единственного слова, кроме упомянутой в ответе
                for lemma, part_of_speech in lexicon.get_lemmas(