如何将文本分类到数据帧的每一行?

2024-10-16 22:28:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在数据框中对文本进行分类。我使用字典检查这些值是否在带词干的文本列中,然后在同一列中应用过滤器,以便在新列中指定类别。
过滤器是:如果至少33%的值是True打印1,否则打印0

注:字典的键代表类别。

我检查第一行的类型:它是一个列表,但是当我应用其他方法时,它不起作用。所以我只把它应用到第一行,但我不知道如何准确地传输到所有其他行。你知道吗

dictionary = {'cat_1' : ['some', stemming', 'bunch'], 'cat_2' : ['to', 'so'], 'cat_3': ['stemming', 'words', 'many', 'bunch']}
dataframe = {'Articles' : ['article1', 'article2', 'article3', 'article4'], 'Text' : [['some', 'stemming', 'words'], ['to' , 'much', 'stemming', 'words'], ['another', 'bunch', 'of', 'stemming', 'words'], ['so', 'many', 'stemming', 'words']]}
test = dataframe.text[0]
for item in dictionary.values():
    filt = []
    for i in item:
        if i in test:
            filt.append(True)
        else:
            filt.append(False)
    print(filt)
    umbral = len(filt) * 0.33
    Trues = filt.count(True)
    if Trues > umbral:
        print('1')
    else:
        print('0')

输出为:

[True, True, False]
1 
[True, False] 
1 
[True, True, False, True] 
1 

我想将其应用于“text”列的每一行,并且只为每个结果使用1或/和0列。例如:第一行是:

|----------|-------|-------|-------|
| Articles | cat_1 | cat_2 | cat_3 |
|----------|-------|-------|-------|
| article1 |   1   |   1   |   0   |
|----------|-------|-------|-------|
| article2 |   0   |   1   |   1   |
|----------|-------|-------|-------|
| article3 |   1   |   0   |   0   |
|----------|-------|-------|-------|

Tags: in文本falsetrue过滤器dictionary字典some