Как генерировать текстовые отвлекающие факторы, используя Nlp - PullRequest
0 голосов
/ 20 октября 2019

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

question    answer_text distractor
0   Meals can be served in rooms at 9:00 p. m.  'outside the room at 3:00 p. m.', 'in the dining - room at 6:00 p. m.', 'in the dining - room from 7:30 a. m. to 9:15 p. m.'
1   It can be inferred from the passage that    The local government can deal with the problem of lacking money by some means . 'If some tragedies occur again ', ' relevant departments of the State Council should take responsibility completely .', 

Как генерировать дистракторы в тестовом наборе. Помогите мне, пожалуйста . Я попробовал это:

  import string
    from nltk.stem.wordnet import WordNetLemmatizer
    def clean_text(text):

        ## Remove puncuation
        text = text.translate(string.punctuation)

        ## Convert words to lower case and split them
        text = text.lower().split()



        text = " ".join(text)
        ## Clean the text
        text = re.sub(r"[^A-Za-z0-9^,!.\/'+-=]", " ", text)
        text = re.sub(r"\'s", " ", text)
        text = re.sub(r",", " ", text)
        text = re.sub(r"\.", " ", text)
        text = re.sub(r"!", "", text)
        text = re.sub(r"\/", " ", text)
        text = re.sub(r"\^", " ^ ", text)
        text = re.sub(r"\+", " + ", text)
        text = re.sub(r"\-", " - ", text)
        text = re.sub(r"\=", " = ", text)
        text = re.sub(r"'", " ", text)
        text = re.sub(r":", " ", text)
        text=text.split()

        lemma=WordNetLemmatizer()
        lemma_words=[lemma.lemmatize(word) for word in text]
        text = " ".join(lemma_words)
        return text

train['answer_text'] = train['answer_text'].map(lambda x: clean_text(x))

train['distractor'] = train['distractor'].map(lambda x: clean_text(x))
train['question']=train['question'].map(lambda x: clean_text(x))

после этого я применил токенизатор:

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.sequence import pad_sequences

tokenizer = Tokenizer(nb_words=20000)
tokenizer.fit_on_texts(train['question'])
sequences = tokenizer.texts_to_sequences(train['question'])

word_index = tokenizer.word_index
print('Found %s unique tokens.' % len(word_index))

data = pad_sequences(sequences, maxlen=100)

tokenizer = Tokenizer(nb_words=20000)
tokenizer.fit_on_texts(train['answer_text'])
sequences1 = tokenizer.texts_to_sequences(train['answer_text'])

word_index1 = tokenizer.word_index
print('Found %s unique tokens.' % len(word_index1))

data1 = pad_sequences(sequences1, maxlen=100)

После этого я не понимал, как воспринимать ярлыки как отвлекающие и как обучать модель,Пожалуйста, помогите мне, как это сделать

...