Я пытаюсь использовать методы обработки текста 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
Есть какие-нибудь идеи о том, как это сделать, используя керасы или искровые функции?