Как я могу использовать функцию TaggedDocument (Gensim \ Doc2Ve c) через Reticulate в R? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь запустить пакет Python gensim в среде R через сетку. В частности, я пытаюсь построить модель doc2ve c, для которой необходимо подготовить корпус токенов и тегов.

Функция TaggedDocument - это то, где у меня возникают проблемы. Вот пример в python того, что я пытаюсь воспроизвести в R:

import pandas as pd
import numpy as np
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
from nltk.tokenize import word_tokenize

data = ["this is the first sentence",
        "running doc2vec via reticulate",
        "r and python bff forever",
        "this aint working"]

tags = ["a","b","a","c"]

corpus = pd.DataFrame({"sentences": data, "labels": tags})

tagged_data = corpus.apply(
    lambda r: TaggedDocument(words=word_tokenize(r['sentences']), tags=[r.labels]), axis=1)

Это приводит к выводу такого типа:

0       ([this, is, the, first, sentence], [a])
1    ([running, doc2vec, via, reticulate], [b])
2         ([r, and, python, bff, forever], [a])
3                  ([this, aint, working], [c])
dtype: object

, который можно использовать для построения словарный запас и обучить модели doc2ve c.

Как получить такой же результат в R (возможно, без циклов)?

library(reticulate)

gensim <- import("gensim") 
Doc2Vec <- gensim$models$Doc2Vec 
TaggedDocument <- gensim$models$doc2vec$TaggedDocument


sentences <- c("this is the first sentence",
        "running doc2vec via reticulate",
        "r and python bff forever",
        "this aint working")

labels <- c("a","b","c","a")

Заранее спасибо!

* РЕДАКТИРОВАТЬ *

Я пробовал еще более простую настройку:

library(reticulate)

gensim <- import("gensim") 
Doc2Vec <- gensim$models$Doc2Vec 
TaggedDocument <- gensim$models$doc2vec$TaggedDocument


sentences <- c("this is the first sentence")
tags <- c("a")

df <- data.frame (tokens= sentences, labels = tags)

tagged_docs <- TaggedDocument(words = df$tokens, tags = df$labels)

, но продолжаю получать одно и то же сообщение об ошибке:

Ошибка цитаты в py_call_impl (вызываемый, точки $ args, точки $ ключевые слова): AttributeError: у объекта 'str' нет атрибута 'words' - Подробная трассировка: Файл "C: \ Anaconda \ lib \ site-packages \ gensim \ models \ doc2ve c .py ", строка 1184, в build_vocab progress_per = progress_per, trim_rule = trim_rule Файл" C: \ Anaconda \ lib \ site-packages \ gensim \ models \ doc2ve c .py " строка 1381, в файле scan_vocab total_words, corpus_count = self._scan_vocab (документы, документы, progress_per, trim_rule) Файл "C: \ Anaconda \ lib \ site-packages \ gensim \ models \ doc2ve c .py ", строка 1310, в _scan_vocab, если isinstance (document.words, string_types):

- -

Что я делаю не так?

...