Есть ли способ преобразования текста в последовательности в искровом фрейме с использованием кера? - PullRequest
0 голосов
/ 19 апреля 2019

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

Я хочу преобразовать текстовый столбец в столбец, содержащий токены (целые числа) для подачи в сеть RNN для прогнозирования настроений.Вместо получения столбца, содержащего токены, такие как [56, 24, 78, 66], я получаю [[56], [24], [78], [66]].Это предполагает создание корпуса для каждой строки в столбце, а не для всего столбца, где каждый подсписок представляет собой букву вместо слова.

    import keras
    from keras.preprocessing.text import text_to_word_sequence, Tokenizer
    from keras.preprocessing import sequence        
    def keras_processing(row):
        vectorizer = Tokenizer(num_words = 1000, filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~\t\n', lower = True, split = ' ', )
        vectorizer.fit_on_texts(row)
        corpus = vectorizer.texts_to_sequences(row)
        return corpus

    dataset.show(5)
    +-----+--------------------+---------+
    |stars|                text|Sentiment|
    +-----+--------------------+---------+
    |  5.0|Quick and conveni...| positive|
    |  2.0|You need to doubl...| negative|
    |  5.0|I always find som...| positive|
    |  5.0|Thank you Nick fo...| positive|
    |  4.0|Came here for res...| positive|

я зарегистрировал вышеуказанную функцию keras как пользовательскую иприменить к набору данных

    sqlContext.registerFunction('keras_text_processing', keras_processing)
    dataset.createOrReplaceTempView('dataset_view')

    keras_dataset = sqlContext.sql("SELECT text, Sentiment, keras_text_processing(text) as corpus from dataset_view")
    keras_dataset.show(5)

    +--------------------+---------+--------------------+
    |                text|Sentiment|              corpus|
    +--------------------+---------+--------------------+
    |Quick and conveni...| positive|[[24], [12], [6],...|
    |You need to doubl...| negative|[[15], [2], [10],...|
    |I always find som...| positive|[[4], [], [5], [8...|
    |Thank you Nick fo...| positive|[[4], [6], [1], [...|
    |Came here for res...| positive|[[14], [3], [15],...|

Я пытался использовать CountVectorizer, но я боюсь, что векторный формат вывода может быть несовместим с keras RNN и LSTM.

Я ожидал что-то вроде:

    +--------------------+---------+--------------------+
    |                text|Sentiment|              corpus|
    +--------------------+---------+--------------------+
    |Quick and conveni...| positive|[24, 12, 6,...      |
    |You need to doubl...| negative|[15, 2, 10,...      |
    |I always find som...| positive|[4, 5, 8...         |
    |Thank you Nick fo...| positive|[4, 6, 1,  ...      |
    |Came here for res...| positive|[14, 3, 15,...      |

, где каждая строка в столбце корпуса представляет собой последовательность слов, соответствующую тексту xolumn

Есть какие-нибудь идеи о том, как это сделать, используя керасы или искровые функции?

...