используйте tf – idf в Keras Tokenizer - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть фрейм данных, в котором столбец Заголовок первой строки содержит этот текст:

Use of hydrocolloids as cryoprotectant for frozen foods

Используя этот код:

vocabulary_size = 1000
tokenizer = Tokenizer(num_words=vocabulary_size)
tokenizer.fit_on_texts(df['Title'])
sequences = tokenizer.texts_to_sequences(df['Title'])
print(sequences[0])

Я получаю эту последовательность:

[57, 1, 21, 7]

Используя это:

index_word = {v: k for k, v in tokenizer.word_index.items()}
print(index_word[57])
print(index_word[1])
print(index_word[21])
print(index_word[7])

Я получаю:

use
of
as
for

Это имеет смысл, так как это более частые слова. Можно ли также использовать токенизатор, чтобы основывать токенизацию на tf – idf ?

Увеличение словарного запаса также помечает реже встречающиеся слова, такие как:

hydrocolloids

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

use

в? Возможно, да, поскольку перчатка также смотрит на контекст, который контрастирует с подходами, которые я использовал в прошлом. Здесь tf – idf имеет смысл.

1 Ответ

0 голосов
/ 05 ноября 2018

До сих пор (поскольку Keras постоянно обновляет свои функции), ничто не может произвести то, что вы хотите ..

Но у него есть функция, которая представляет последовательности, используя схему Tf-Idf вместо freq.:

sequences = tokenizer.texts_to_matrix(df['Title'], mode='tfidf')

вместо:

sequences = tokenizer.texts_to_sequences(df['Title'])

Кроме того, в качестве рекомендации вы можете использовать sklearn TfidfVectorizer, чтобы отфильтровать текст из нечастых слов, а затем передать его в вашу модель Keras.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...