классифицируйте данные по категориям с помощью python

#python

Вопрос:

я новичок в python, и у меня есть этот проект, в котором я должен классифицировать свои данные по разным категориям, я хочу получить доступ к своему списку категорий, я попробовал следующее, как вы можете видеть здесь, но я продолжаю получать ту же ошибку

я был бы признателен за любую помощь или решение моей проблемы

  insport = any(ele in text for ele in categorie[3] )
         if insport:
            data["cat"]='sport'
            nsport=nsport 1
         else :
            insante = any(ele in text for ele in categorie[1] )
            if insante :
                data["cat"]='sante'
                nsante=nsante 1
            else :
                inpolitique = any(ele in text for ele in categorie[2])
                if  inpolitique:
                    data["cat"]='politique'
                    npoli=npoli 1
                else:
                    incalture = any(ele in text for ele in categorie[6] )
                    if incalture:
                        data["cat"]='culture'
                        ncalt=ncalt 1
                    else:
                        inreligion = any(ele in text for ele in categorie[4])
                        if inreligion:
                            data["cat"]='religion'
                            nrelig=nrelig 1
                        else:
                            ineducation = any(ele in text for ele in categorie[5] )
                            if ineducation:
                                data["cat"]='social'
                                neduc=neduc 1
                            else:
                                    print(" the tweet---------------------------------------------------------------------------------------")
                                    print(text)
 

это следующая ошибка :

 Traceback (most recent call last):
  File "C:UsersNIHADPycharmProjectspythonProject3classification.py", line 52, in <module>
    ifin = any(ele in text for ele in categorie[0] )
  File "C:UsersNIHADPycharmProjectspythonProject3classification.py", line 52, in <genexpr>
    ifin = any(ele in text for ele in categorie[0] )
TypeError: 'in <string>' requires string as left operand, not tuple
 

и это мой список категорий:

[[(1, «образование»), (2, «санте»), (3, «политика»), (4, «спорт»), (5, «религия»), (6, «социальная»), (7, «культура»)]]

Комментарии:

1. Пожалуйста, подумайте о том, чтобы использовать elif вместо этого количество вложенных if / else .

2. И, пожалуйста, предоставьте правильные categorie данные. Ваш список из списка кортежей будет выдавать IndexError: list index out of range уже в первой строке.

3. Они все должны быть ele[1] in text... — если вы хотите сопоставить слово в кортеже с текстом.

Ответ №1:

Здесь другой, более простой подход. Я использую texts тексты, содержащие названия категорий, только в качестве примера. Когда название категории, содержащейся в одном из текстов, идентифицировано, вы готовы сохранить текст с категорией, найденной в вашей базе данных. Однако при этом каждому тексту присваивается только одна категория.

 texts=[
 "bla bla bla santebla bla bla ",
 "bla bla bla sport bla bla bla ",
 "bla bla bla education bla bla bla ",
 "bla bla bla social  bla bla bla ",
 "bla bla bla religion bla bla bla ",
 "bla bla bla politique bla bla bla ",
 "bla bla bla culture  bla bla bla "
]

counts={
 "sante":0,
 "sport":0,
 "education":0,
 "social":0,
 "religion":0,
 "politique":0,
 "culture":0
}

categorie= [[(1, 'education'), (2, 'sante'), (3, 'politique'), (4, 'sport'), (5, 'religion'), (6, 'social'), (7, 'culture')]]

for i,t in enumerate(texts):
    for c in categorie[0]:
        catid=c[0]
        catname=c[1]
        if catname in t:
            counts[catname] =1
            print("you can save texts[",i,"] with catname:",catname," or catid:",catid, "in your database")


print("Show categories counts:")
print(counts)
 

выход:

 you can save texts[ 0 ] with catname: sante  or catid: 2 in your database
you can save texts[ 1 ] with catname: sport  or catid: 4 in your database
you can save texts[ 2 ] with catname: education  or catid: 1 in your database
you can save texts[ 3 ] with catname: social  or catid: 6 in your database
you can save texts[ 4 ] with catname: religion  or catid: 5 in your database
you can save texts[ 5 ] with catname: politique  or catid: 3 in your database
you can save texts[ 6 ] with catname: culture  or catid: 7 in your database
Show categories counts:
{'sante': 1, 'sport': 1, 'education': 1, 'social': 1, 'religion': 1, 'politique': 1, 'culture': 1}