Подсчет хештегов в коллекции твитов: два метода с противоречивыми результатамиPython

Программы на Python
Ответить
Anonymous
 Подсчет хештегов в коллекции твитов: два метода с противоречивыми результатами

Сообщение Anonymous »

Я играю с пустым фреймом данных, содержащим два столбца: «tweet_text» и «cyberbullying_type». Он был создан с помощью этого набора данных следующим образом:

Код: Выделить всё

df = pd.read_csv('data/cyberbullying_tweets.csv')
В настоящее время я пытаюсь подсчитать общее количество хэштегов, используемых в каждом «типе кибербуллинга», используя два разных метода, каждый из которых, я думаю, учитывает дубликаты. Однако каждый метод дает мне разный ответ:

Первый метод:

Код: Выделить всё

import re

# Define the pattern for valid hashtags
hashtag_pattern = r'#[A-Za-z0-9]+'

# Function to count the total number of hashtags in a dataframe
def count_total_hashtags(dataframe):
return dataframe['tweet_text'].str.findall(hashtag_pattern).apply(len).sum()

for category in df['cyberbullying_type'].unique():
count = count_total_hashtags(df[df['cyberbullying_type'] == category])
print(f"Number of hashtags in all tweets for the '{category}' category: {count}")
Выходные данные: «not_cyberbullying»: 3265, «пол»: 2691, «религия»: 1798, «other_cyberbullying»: 1625, «возраст»: 728, «этническая принадлежность»: 1112,< /code>

Второй метод:
Следующий метод более ручной:

Код: Выделить всё

def count_hashtags_by_category(dataframe):
hashtag_counts = {}
for category in dataframe['cyberbullying_type'].unique():
# Filter tweets by category
category_tweets = dataframe[dataframe['cyberbullying_type'] == category]

# Count hashtags in each tweet
hashtag_counts[category] = category_tweets['tweet_text'].apply(
lambda text: sum(1 for word in text.split() if word.startswith('#') and word[1:].isalnum())
).sum()

return hashtag_counts

# Count hashtags for each category
hashtags_per_category = count_hashtags_by_category(df)
print(hashtags_per_category)
Вывод: {'not_cyberbullying': 3018, 'пол': 2416, 'религия': 1511, 'other_cyberbullying': 1465, 'возраст': 679, 'этническая принадлежность': 956

Почему ответы различаются?

Подробнее здесь: https://stackoverflow.com/questions/793 ... nsistent-r
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»