-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
77 lines (54 loc) · 1.98 KB
/
Copy pathmain.py
File metadata and controls
77 lines (54 loc) · 1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from custom_logging.custom_logger import get_logger
from data_collector import data_collector
custom_logger = get_logger("main")
def collect_data():
"""Main function to run the data collector."""
data_collector.store_news_sources()
collected_labaled_news = (
data_collector.collect_labeled_news_from_all_sources(lambda _: True)
)
for news in collected_labaled_news:
data_collector.store_labeled_news(news)
related_posts = (
data_collector.associate_labeled_news_with_bluesky_posts(news)
)
for post in related_posts:
user = data_collector.retrieve_associated_user_from_bluesky_post(
post
)
data_collector.associte_bluesky_post_with_url(post, user)
data_collector.store_bluesky_post(post)
data_collector.store_bluesky_user(user)
def classify_users():
"""Classify users in the database."""
from classifier import classifiers
from database import repos
users = repos.bluesky_users.find()
bot_users = []
not_bot_users = []
unknown_users = []
for user in users:
is_bot_knn = classifiers.knn_user_bot_classifier.is_bot(user)
is_bot_dt = classifiers.decision_tree_user_bot_classifier.is_bot(user)
is_bot_rf = classifiers.random_forest_user_bot_classifier.is_bot(user)
is_bot_lr = classifiers.logistic_regression_user_bot_classifier.is_bot(
user
)
is_bot_nn = classifiers.neural_network_user_bot_classifier.is_bot(user)
positive_votes = sum(
[
is_bot_knn,
is_bot_dt,
is_bot_rf,
is_bot_lr,
is_bot_nn,
]
)
if positive_votes > 3:
bot_users.append(user)
elif positive_votes >= 2:
unknown_users.append(user)
else:
not_bot_users.append(user)
if __name__ == "__main__":
classify_users()