这是我清洗后的数据:
number summary cleanSummary
0 1-123 he loves ice cream love ice cream
1 1-234 she loves ice love ice
2 1-345 i hate avocado hate avocado
3 1-123 i like skim milk like skim milk
如您所见,有两个记录具有相同的number
。现在我将创建并装配矢量器。在
现在我要改变。在
freq = cv.transform(df['cleanSummary'])
现在如果我看看freq
。。。在
freq = sum(freq).toarray()[0]
freq = pd.DataFrame(freq, columns=['frequency'])
freq
frequency
0 1
1 1
2 1
3 2
4 1
5 2
6 1
7 1
…似乎没有一种逻辑方法来访问原始的number
。我已经尝试过遍历每一行的方法,但是由于每个number
可能会有多个摘要,所以这会遇到问题。使用分组数据流的循环。。。在
def extractFeatures(groupedDF, textCol):
features = pd.DataFrame()
for id, group in groupedDF:
freq = cv.transform(group[textCol])
freq = sum(freq).toarray()[0]
freq = pd.DataFrame(freq, columns=['frequency'])
dfinner = pd.DataFrame(cv.get_feature_names(), columns=['ngram'])
dfinner['number'] = id
dfinner = dfinner.join(freq)
features = features.append(dfinner)
return features
…很有效,但性能很差(即,用一个句子长度处理45000个文档需要12个小时)。在
如果我改变
freq = sum(freq).toarray()[0]
到
freq = freq.toarray()
我得到每个文档的每个ngram的频率数组。这很好,但是它不允许我将列表数组推送到数据帧中。我仍然无法访问nunmber
。在
如何访问每个ngram的原始标签number
,而不在分组df上循环?我想要的结果是:
number ngram frequency
1-123 love 1
1-123 ice 1
1-123 cream 1
1-234 love 1
1-234 ice 1
1-345 hate 1
1-345 avocado 1
1-123 like 1
1-123 skim 1
1-123 milk 1
编辑:这有点像是对这个问题的重新审视:Convert CountVectorizer and TfidfTransformer Sparse Matrices into Separate Pandas Dataframe Rows。然而,在实现了答案中描述的方法之后,我面临着一个大型语料库的内存问题,因此它似乎无法扩展。在
相关问题 更多 >
编程相关推荐