【发布时间】:2019-09-22 19:04:21
【问题描述】:
我将尝试在给定字典中的一堆单词的情况下对文本进行分类,该字典包含具有相关不同单词的词干组。另一方面是我有一个数据框,其中每个代表和文章。
主要目标是,如果组中至少有 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]。
我认为问题就在这里,因为当我只执行没有apply 的比较函数时,它可以工作。
我希望在text['Class'] column: [0, 1],[0, 1],[0, 0],[0, 0]
【问题讨论】:
-
你能提供一个输入和预期输出的例子吗?谢谢!
-
两个输入...数据集的字典?还是哪一个?
-
至少 'stemmed_search', 'test' 和 'filt',如果你能把剩下的做得更好的话
-
这样更好吗?
-
我认为您首先需要决定是要打印东西,还是要在
pandas数据框中创建列,因为通过 @987654332 调用函数没有意义@,它所做的只是打印数字和“END ROW”。
标签: python pandas return apply