我将尝试对字典中给定一堆单词的文本进行分类,字典包含词干组和不同的相关单词。另一个方面是,我有一个数据帧,在这个数据帧中,每一个表示。
主要目标是,如果至少有50%的单词在组中被找到,那么将被分配1
,否则0
。你知道吗
stemmed_search = {Group_1:['solicit', 'requier', 'día'], Group_2:['infraestruc', 'construccion', 'gas', 'nigrogen']}
test = ['solicit', 'requier', 'día', 'infraestruc', 'construccion', 'gas', 'nigrogen']
word_list = [['solicit', 'requier', 'día'], ['infraestruc', 'construccion', 'gas', 'nigrogen']]
def compar(test):
for item in stemmed_search.values():
filt = []
for i in item:
if i in test:
filt.append(True)
else:
filt.append(False)
#print(filt)
umbral = len(filt) * 0.5
Trues = filt.count(True)
return[1 if Trues > umbral else 0 for i in range(0, len(words_list))]
text['Class'] = text.Stem.apply(compar)
我试着用这个语句,但不起作用:
return[1 if Trues > umbral else 0 for i in range(0,len(filt))]
然后我有这个:[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]
。
后来我补充说问题出在列表的range
中,所以我做了更改,得到了一个与预期类似的输出:
return[1 if Trues > umbral else 0 for i in range(0, len(words_list))]
但是当我执行那一行时,输出与我想要的非常相似:[1, 1],[1, 1],[0, 0],[0, 0]
。
我认为问题出在这里,因为当我只执行compar函数而没有apply
时,它就工作了。
我希望在text['Class'] column: [0, 1],[0, 1],[0, 0],[0, 0]
中有这样的输出
如果我正确理解了您的问题,请给出以下输入:
此代码适用于您:
并给出:
编辑:其他示例:
并给出:
相关问题 更多 >
编程相关推荐