处理的文本数 = 1 时应 = 4(处理文档的功能)



我有这些数据(数据是在R中生成的(,我使用reticulate包移植到Python。问题出在我的Python代码上。

R 代码 :

text <- c("Because I could not stop for Death -",
          "He kindly stopped for me -",
          "The Carriage held but just Ourselves -",
          "and Immortality")
ID <- c(1,2,3,4)    
df <- data.frame(cbind(ID, text))
library(reticulate)
df_py <- r_to_py(df)
repl_python()

蟒蛇代码:

import gensim
LabeledSentence1 = gensim.models.doc2vec.TaggedDocument
all_content_data = []
j = 0
for em in r.df_py['text'].values:
  all_content_data.append(LabeledSentence1(em,[j]))
j+=1
print('Number of texts processed: ', j)

注意:r.df_py['text']是一个调用R数据的"特殊"函数,如果只使用Python,可以更改为df_py['text']

数据应该处理文档,但是当我打印时,它说Number of texts processed: 1什么时候应该说Number of texts processed: 4。我只是不知道我在那个功能中哪里出了问题。我的数据是一个数据框,在每一行中,我都有一本唯一的"书",该书的所有文本都在一个单元格中,我想处理该单元格。

您的j += 1在循环之外,因此无法递增。因此,它保持在 1。把它放在 for 循环的缩进中:

for em in r.df_py['text'].values:
    all_content_data.append(LabeledSentence1(em,[j]))
    j+=1

您的增量语句根本没有正确缩进,因此它在循环之外这是它应该的方式:

for em in r.df_py['text'].values:
   all_content_data.append(LabeledSentence1(em,[j]))
   j+=1

当第一次从Java切换到python时,我犯了很多错误,所以不要感到孤独:)

最新更新