2016-08-26 5 views
0

Существует документация по созданию DTM (документ термин матрица) для пакета text2vec, например, следующие, где применяется TFIDF взвешивание после построения матрицы:text2vec в R- Преобразование новых данных?

data("movie_review") 
N <- 1000 
it <- itoken(movie_review$review[1:N], preprocess_function = tolower, 
tokenizer = word_tokenizer) 
v <- create_vocabulary(it) 
vectorizer <- vocab_vectorizer(v) 
it <- itoken(movie_review$review[1:N], preprocess_function = tolower, 
tokenizer = word_tokenizer) 
dtm <- create_dtm(it, vectorizer) 
# get tf-idf matrix from bag-of-words matrix 
dtm_tfidf <- transformer_tfidf(dtm) 

Это обычная практика для создания DTM на основе в наборе учебных материалов и использовать этот набор данных в качестве входных данных для модели. Затем, когда встречаются новые данные (тестовый набор), необходимо создать тот же DTM для новых данных (что означает все те же термины, которые использовались в наборе обучения). Так или иначе, в пакете для преобразования нового набора данных таким образом (в scikit у нас есть метод преобразования только для этого типа экземпляра).

+0

Есть мужество, чтобы объяснить, почему downvoted? –

+1

Не берет «кишки», чтобы объяснить. Просто наведите указатель мыши на стрелку вниз. Много возможностей для обиды на этот вопрос. Нет кода. Нет данных примера. Никакое объяснение того, что такое построение модели или скоринга, можно ожидать. Никакое объяснение того, что такое «DTM» ... да, я знаю, что это (возможно), но многие программисты могут этого не сделать. Поэтому я должен согласиться, что это, по крайней мере, «неясное», а также не так много «исследовательских усилий», и это вполне веские причины для ниспроверки. Также кажется довольно бесполезным, если только он не расширяется, чтобы устранить его многочисленные недостатки. –

+1

Hovering не показывает мне ничего? Его разочарование, когда кто-то голосует без объяснения причин. Этот тип вопроса сосредоточен на конкретном пакете, где мое предположение заключается в том, что вы использовали его и могли удаленно ответить на вопрос, вы бы знали, что такое матрица терминов документов. Код тоже тяжелый ... так как мне интересно, не так ли здесь, вот какой-то код, что с ним не так, - но вместо этого пакет может сделать «х». Я попытаюсь несколько расширить его, и я благодарю вас за комментарии. –

ответ

4

На самом деле, когда я начал text2vec я все, что трубопровод на первом месте. Теперь мы готовим новый релиз с обновленным documentation.

Для v0.3 должно работать:

data("movie_review") 
train_rows = 1:1000 
prepr = tolower 
tok = word_tokenizer 

it <- itoken(movie_review$review[train_rows], prepr, tok, ids = movie_review$id[train_rows]) 
v <- create_vocabulary(it) %>% 
    prune_vocabulary(term_count_min = 5) 

vectorizer <- vocab_vectorizer(v) 
it <- itoken(movie_review$review[train_rows], prepr, tok) 
dtm_train <- create_dtm(it, vectorizer) 
# get idf scaling from train data 
idf = get_idf(dtm_train) 
# create tf-idf 
dtm_train_tfidf <- transform_tfidf(dtm_train, idf) 

test_rows = 1001:2000 
# create iterator 
it <- itoken(movie_review$review[test_rows], prepr, tok, ids = movie_review$id[test_rows]) 
# create dtm using same vectorizer, but new iterator 
dtm_test_tfidf <- create_dtm(it, vectorizer) %>% 
    # transform tf-idf using idf from train data 
    transform_tfidf(idf) 
+0

Фантастический! Любая идея, когда он может попасть в CRAN? –

+0

Несколько недель. Но вы можете установить его из github, branch 0.4. –

+0

@B_Miner проверить новый учебник: http://dsnotes.com/text2vec/vectorization.html –