gulnuravci commited on
Commit
c0f4283
·
verified ·
1 Parent(s): 3e22cfe

Upload 6 files

Browse files
app.py ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import asyncpraw
3
+ import asyncio
4
+ import pandas as pd
5
+ import re
6
+ import csv
7
+ import matplotlib.pyplot as plt
8
+ import requests
9
+ import asyncprawcore
10
+ import schedule
11
+ import time
12
+ import shutil
13
+
14
+ from pathlib import Path
15
+ from typing import List, Dict, Any
16
+ from collections import defaultdict
17
+ from asyncpraw.models import MoreComments, Submission
18
+ from tqdm import tqdm
19
+ from huggingface_hub import InferenceClient, notebook_login
20
+ from datetime import datetime
21
+ from helper import get_access_to_reddit, search_subreddits_by_keyword_in_name_or_description, filter_subreddits_by_keywords, get_subreddits_name_title_description, process_output
22
+
23
+ results = {}
24
+ reddit = get_access_to_reddit()
25
+
26
+ # -- read in files --
27
+
28
+ # read in subreddits csv and convert the display names column to a set
29
+ subreddits_csv_df = pd.read_csv("deploy/reddit_sentiment_analysis/subreddits_passed_topic_classifier.csv")
30
+ subreddits_display_names_set = set(subreddits_csv_df["Display Name"])
31
+
32
+ # read in csvs that store subsidiaries and keywords for each parent company
33
+ subsidiaries_csv_df = pd.read_csv("deploy/reddit_sentiment_analysis/subsidiary_parent.csv")
34
+ subsidiary_parent_dict = defaultdict(list)
35
+ for subsidiary, parent in zip(subsidiaries_csv_df["Subsidiary"], subsidiaries_csv_df["Parent Company"]):
36
+ subsidiary_parent_dict[parent].append(subsidiary)
37
+
38
+ keywords_csv_df = pd.read_csv("deploy/reddit_sentiment_analysis/parent_keywords.csv")
39
+ parent_keywords_dict = dict(zip(keywords_csv_df["Parent Company"], keywords_csv_df["Keywords"]))
40
+
41
+ # -- extract subreddits using keywords technique --
42
+
43
+ # company is the key and associated subreddits as a list of subreddit objects
44
+ subreddits_to_include = {}
45
+ # count how many subreddits were originally extracted
46
+ all_sub_count = 0
47
+ # for each index, company name of the seven companies
48
+ for parent, subsidiaries in subsidiary_parent_dict.items():
49
+ for subsidiary in subsidiaries:
50
+ # get all the subreddits that have that company name in the title or description
51
+ all_subreddits_for_company = await search_subreddits_by_keyword_in_name_or_description(subsidiary)
52
+ # increment total subreddit count by how many subreddits were extracted
53
+ all_sub_count += len(all_subreddits_for_company)
54
+ # further filter these subreddits based on how many keywords associated with the current company they contain
55
+ filtered_subreddits = await filter_subreddits_by_keywords(subreddits=all_subreddits_for_company,
56
+ keywords=parent_keywords_dict[parent],
57
+ min_keyword_count=1)
58
+ # store filtered subsidiary/parent company subreddits at appropriate key
59
+ subreddits_to_include[parent] = filtered_subreddits
60
+
61
+ results["Num subreddits with subsidiary/parent company name in its name or description"] = all_sub_count
62
+ results["Num subreddits after using keywords filter"] = sum([len(company_subreddits) for company_subreddits in subreddits_to_include.values()])
63
+
64
+ # -- Pass new subreddits through classifier to determien if they are technology related --
65
+ topic_classifier_client = InferenceClient(model="gulnuravci/subreddit_description_topic_classifier", token=HF_TOKEN_READ)
66
+
67
+ # key is the parent company and the value is a list of subreddit objects that are technology related
68
+ subreddits_passed_topic_classifier = defaultdict(list)
69
+ # count new subreddits
70
+ num_companies_through_model = 0
71
+ # for each company key in the subreddits to include (based on keyword filtering) dictionary
72
+ for company, subreddits_list in tqdm(subreddits_to_include.items()):
73
+ # get a dictionary where the key is the subreddit object and value is text format of the company's name, title, and description
74
+ name_title_descriptions = get_subreddits_name_title_description(subreddits_to_include[company])
75
+ # for each subreddit under the current company
76
+ for subreddit_object, subreddit_description in name_title_descriptions.items():
77
+ # if subreddit is not new, skip inference
78
+ if subreddit_object.display_name in subreddits_display_names_set:
79
+ subreddits_passed_topic_classifier[company].append(subreddit_object)
80
+ continue
81
+
82
+ # pass the subreddit's description through the subreddit topic classifier
83
+ output = topic_classifier_client.text_classification(subreddit_description)
84
+
85
+ # process output
86
+ output = process_output(output)
87
+
88
+ # if technology related
89
+ if output['TECHNOLOGY RELATED'] > output['NOT TECHNOLOGY RELATED']:
90
+ subreddits_passed_topic_classifier[company].append(subreddit_object)
91
+
92
+ num_companies_through_model += 1
93
+
94
+ parent_company_counts = {parent_company: len(subreddits) for parent_company, subreddits in subreddits_passed_topic_classifier.items()}
95
+
96
+ results["Num old subreddits that were automatically included"] = len(subreddits_display_names_set)
97
+ results["Num subreddits that ran through the model"] = num_companies_through_model
98
+ results["Total subreddits that are technology related (including old and new subreddits)"] = sum([len(items) for items in subreddits_passed_topic_classifier.values()])
99
+ results["Num subreddits that were included per parent company"] = parent_company_counts
100
+
101
+ # -- get posts from subreddits --
102
+ parent_company_posts = {}
103
+ parent_company_post_counts = {}
104
+ failed_subreddits = defaultdict(list)
105
+ for parent_company, subreddits in tqdm(subreddits_passed_topic_classifier.items()):
106
+ # get X amount of posts from each of the subreddits associated with the current parent company
107
+ current_parent_company_posts, current_failed_subreddits = await probe_subs_for_posts(subreddits, num_posts=2)
108
+ # store failed subreddits
109
+ failed_subreddits[parent_company].extend(current_failed_subreddits)
110
+ # add key -> parent company, value -> dictionary where key is subreddit object and value is list of submission objects
111
+ parent_company_posts[parent_company] = current_parent_company_posts
112
+ # count how many posts are added per parent company
113
+ parent_company_post_counts[parent_company] = sum(len(value) for key, value in current_parent_company_posts.items())
114
+
115
+ results["Num of posts extracted for each parent company"] = parent_company_post_counts
116
+ results["Failed subreddits while extracting posts"] = failed_subreddits
117
+
118
+ # -- get comments from posts --
119
+
120
+ post_comments = default_dict_dict_dict_list()
121
+ post_comment_counts = defaultdict(int)
122
+ for parent_company, subreddit_dict in tqdm(parent_company_posts.items()):
123
+ for subreddit, posts in subreddit_dict.items():
124
+ for post in posts:
125
+ # get X relevant comments
126
+ comments = await probe_submissions_for_comments(submission = post,
127
+ num_comments = 2,
128
+ sort_type = "best")
129
+ post_comments[parent_company][subreddit][post] = comments
130
+ post_comment_counts[parent_company] += len(comments)
131
+
132
+ results["Num of comments extracted for each parent company"] = post_comment_counts
133
+
134
+ # -- run posts and comments through sentiment analysis --
135
+ API_URL = "https://wk6x4kfrdikhsi0n.us-east-1.aws.endpoints.huggingface.cloud"
136
+ headers = {
137
+ "Accept" : "application/json",
138
+ "Authorization": "Bearer " + HF_TOKEN_READ,
139
+ "Content-Type": "application/json"
140
+ }
141
+
142
+ def query(payload):
143
+ response = requests.post(API_URL, headers=headers, json=payload)
144
+ return response.json()
145
+
146
+ sentiments = defaultdict(list)
147
+ interactions = defaultdict(int)
148
+ neutral_sentiments = defaultdict(int)
149
+ positive_sentiments = defaultdict(int)
150
+ negative_sentiments = defaultdict(int)
151
+
152
+ for parent_company, subreddit_dict in tqdm(post_comments.items()):
153
+ for subreddit, posts in subreddit_dict.items():
154
+ for post, comments in posts.items():
155
+ post_text = post.title + post.selftext
156
+ post_sentiment = query(
157
+ {
158
+ "inputs": [post_text[:512]],
159
+ "parameters": {}
160
+ })
161
+
162
+ # if the highest score is neutral
163
+ if post_sentiment[0]['label'] == 'neutral':
164
+ post_sentiment = 0
165
+ neutral_sentiments[parent_company] += 1
166
+ # if the highest score is positive
167
+ elif post_sentiment[0]['label'] == 'positive':
168
+ post_sentiment = post_sentiment[0]['score']
169
+ positive_sentiments[parent_company] += 1
170
+ # if the highest score is negative
171
+ elif post_sentiment[0]['label'] == 'negative':
172
+ post_sentiment = -post_sentiment[0]['score']
173
+ negative_sentiments[parent_company] += 1
174
+
175
+ post_upvote_ratio = post.upvote_ratio
176
+
177
+ total_interaction = 0
178
+ total_interaction += post_upvote_ratio
179
+
180
+ sentiment_weights = 0
181
+ sentiment_weights += post_upvote_ratio * post_sentiment
182
+
183
+ for comment in comments:
184
+ comment_sentiment = query(
185
+ {
186
+ "inputs": [comment.body[:512]],
187
+ "parameters": {}
188
+ })
189
+
190
+ # if comment score is neutral
191
+ if comment_sentiment[0]['label'] == 'neutral':
192
+ comment_sentiment = 0
193
+ neutral_sentiments[parent_company] += 1
194
+ # if comment score is positive
195
+ elif comment_sentiment[0]['label'] == 'positive':
196
+ comment_sentiment = comment_sentiment[0]['score']
197
+ positive_sentiments[parent_company] += 1
198
+ # if comment score is negative
199
+ elif comment_sentiment[0]['label'] == 'negative':
200
+ comment_sentiment = -comment_sentiment[0]['score']
201
+ negative_sentiments[parent_company] += 1
202
+
203
+ comment_score = comment.score
204
+
205
+ total_interaction += comment_score
206
+ sentiment_weights += comment_score * comment_sentiment
207
+
208
+ if total_interaction:
209
+ total_sentiment = sentiment_weights/total_interaction
210
+ else:
211
+ total_sentiment = 0
212
+ sentiments[parent_company].append(total_sentiment)
213
+ interactions[parent_company] += total_interaction
214
+
215
+ results["Num of interactions for each parent company"] = interactions
216
+ results["Num of neutral sentiments for each parent company"] = neutral_sentiments
217
+ results["Num of positive sentiments for each parent company"] = positive_sentiments
218
+ results["Num of negative sentiments for each parent company"] = negative_sentiments
219
+
220
+ # -- calculate average sentiments --
221
+ average_sentiments = {}
222
+ for parent_company, sentiment_values in sentiments.items():
223
+ average_sentiments[parent_company] = sum(sentiment_values)/len(sentiment_values)
224
+
225
+ average_sentiments
226
+
227
+ results["Average sentiment for each parent company"] = average_sentiments
228
+
229
+ def plot_results():
230
+ color_map = {
231
+ 'Apple': 'lightgray',
232
+ 'Microsoft': 'deepskyblue',
233
+ 'Alphabet': 'yellow',
234
+ 'Amazon': 'orange',
235
+ 'Nvidia': 'limegreen',
236
+ 'Tesla': 'red',
237
+ 'Meta': 'royalblue'
238
+ }
239
+ fig, axs = plt.subplots(figsize=(8, 6))
240
+ for company, num_subs in results["Num subreddits that were included per parent company"].items():
241
+ plt.barh(company, num_subs, color=color_map.get(company, 'gray'))
242
+ axs.set_title('Number of Subreddits per Parent Company')
243
+ axs.set_xlabel('Number of Technology Related Subreddits')
244
+ plt.tight_layout()
245
+ plt.savefig("results_num_subs.png")
246
+
247
+ fig, axs = plt.subplots(figsize=(8, 6))
248
+ for company, num_posts in results["Num of posts extracted for each parent company"].items():
249
+ axs.barh(company, num_posts, color=color_map.get(company, 'gray'))
250
+ axs.set_title('Number of Posts Extracted per Parent Company')
251
+ axs.set_xlabel('Number of Posts')
252
+ plt.tight_layout()
253
+ plt.savefig("results_num_posts.png")
254
+
255
+ fig, axs = plt.subplots(figsize=(8, 6))
256
+ for company, num_comments in results["Num of comments extracted for each parent company"].items():
257
+ axs.barh(company, num_comments, color=color_map.get(company, 'gray'))
258
+ axs.set_title('Number of Comments Extracted per Parent Company')
259
+ axs.set_xlabel('Number of Comments')
260
+ plt.tight_layout()
261
+ plt.savefig("results_num_comments.png")
262
+
263
+ fig, axs = plt.subplots(figsize=(8, 6))
264
+ for company, num_interactions in results["Num of interactions for each parent company"].items():
265
+ axs.barh(company, num_interactions, color=color_map.get(company, 'gray'))
266
+ axs.set_title('Number of Interactions per Parent Company')
267
+ axs.set_xlabel('Number of Interactions')
268
+ plt.tight_layout()
269
+ plt.savefig("results_num_interactions.png")
270
+
271
+ fig, axs = plt.subplots(figsize=(8, 6))
272
+ for company, num_interactions in results["Average sentiment for each parent company"].items():
273
+ axs.barh(company, num_interactions, color=color_map.get(company, 'gray'))
274
+ axs.set_title('Average Sentiment per Parent Company')
275
+ axs.set_xlabel('Average Sentiment')
276
+ axs.set_xlim(-1, 1) # Set the x-axis limits to range from -1 to 1
277
+ plt.tight_layout()
278
+ plt.savefig("results_average_sentiment.png")
279
+
280
+ fig, axs = plt.subplots(figsize=(8, 6))
281
+ bar_width = 0.25
282
+ index = np.arange(7)
283
+
284
+ companies = list(results["Num of positive sentiments for each parent company"].keys())
285
+ positive_sentiments = [results["Num of positive sentiments for each parent company"][company] for company in companies]
286
+ negative_sentiments = [results["Num of negative sentiments for each parent company"][company] for company in companies]
287
+ neutral_sentiments = [results["Num of neutral sentiments for each parent company"][company] for company in companies]
288
+
289
+ axs.bar(index, positive_sentiments, bar_width, label='Positive Sentiments', color='skyblue')
290
+ axs.bar(index + bar_width, negative_sentiments, bar_width, label='Negative Sentiments', color='salmon')
291
+ axs.bar(index + 2 * bar_width, neutral_sentiments, bar_width, label='Neutral Sentiments', color='lightgreen')
292
+
293
+ axs.set_ylabel('Number of Sentiments')
294
+ axs.set_title('Sentiment Distribution for Each Parent Company')
295
+ axs.set_xticks(index + bar_width)
296
+ axs.set_xticklabels(companies, rotation=45)
297
+ axs.legend()
298
+ plt.tight_layout()
299
+ plt.savefig("results_sentiment_distribution.png")
300
+
301
+ return ["results_num_subs.png", "results_num_posts.png", "results_num_comments.png", "results_num_interactions.png", "results_average_sentiment.png", "results_sentiment_distribution.png"]
302
+
303
+ # gradio app launch
304
+ title = "Reddit Sentiment Analysis"
305
+ description = ""
306
+ article = "Read more at: "
307
+ # outputs = [gr.Gallery(label="Today", columns=[3,2])]
308
+
309
+ demo = gr.Interface(plot_results,
310
+ inputs=None,
311
+ outputs=gr.Gallery(label="Today", columns=[3,2]),
312
+ title=title,
313
+ description=description,
314
+ article=article)
315
+ demo.launch(debug=True)
helper.py ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import asyncpraw
3
+ import asyncio
4
+ import pandas as pd
5
+ import re
6
+ import csv
7
+ import matplotlib.pyplot as plt
8
+ import requests
9
+ import asyncprawcore
10
+ import shutil
11
+
12
+ from pathlib import Path
13
+ from typing import List, Dict, Any
14
+ from collections import defaultdict
15
+ from asyncpraw.models import MoreComments, Submission
16
+ from tqdm import tqdm
17
+ from huggingface_hub import InferenceClient, notebook_login
18
+
19
+ def get_access_to_reddit(user_agent="financial sentiment analysis project (research phase) (by u/ditalinianalysis)"):
20
+ reddit = asyncpraw.Reddit(
21
+ client_id="Oi8_uMSKcijkRBIINYQMsA",
22
+ client_secret='XK9X8FXC6D8xSW9h_wIuku0_5O4azQ',
23
+ user_agent=user_agent
24
+ )
25
+ return reddit
26
+
27
+ async def search_subreddits_by_keyword_in_name_or_description(search_string: str) -> List[asyncpraw.models.Subreddit]:
28
+ """
29
+ search(query: str, **generator_kwargs: str | int | Dict[str, str])→ AsyncIterator[asyncpraw.models.Subreddit]
30
+
31
+ Return a ListingGenerator of subreddits matching query. Additional keyword arguments are passed in the initialization of ListingGenerator.
32
+
33
+ Subreddits are searched by both their title and description.
34
+
35
+ Parameters:
36
+ query – The query string to filter subreddits by.
37
+ """
38
+ subs = []
39
+ async for subreddit in reddit.subreddits.search(search_string):
40
+ subs.append(subreddit)
41
+ return subs
42
+
43
+ async def filter_subreddits_by_keywords(subreddits: List[asyncpraw.models.Subreddit], keywords: List[str], min_keyword_count: int = 2) -> List[asyncpraw.models.Subreddit]:
44
+ filtered_subreddits = []
45
+
46
+ for subreddit in subreddits:
47
+ title = subreddit.title.lower()
48
+ description = subreddit.description.lower() if subreddit.description else ""
49
+
50
+
51
+ # Check if the subreddit contains a minimum number of keywords
52
+ keyword_count = sum(keyword.lower() in title or keyword.lower() in description for keyword in keywords)
53
+ if keyword_count >= min_keyword_count:
54
+ filtered_subreddits.append(subreddit)
55
+
56
+ return filtered_subreddits
57
+
58
+ def get_subreddits_name_title_description(subreddits: List[asyncpraw.models.Subreddit]) -> Dict[asyncpraw.models.Subreddit,str]:
59
+ subreddit_name_title_descriptions = {}
60
+ for subreddit in subreddits:
61
+ name = subreddit.display_name
62
+ title = subreddit.title
63
+ description = subreddit.description if subreddit.description else ""
64
+ text = "Name:" + name + "\nTitle: " + title + "\nDescription: " + description
65
+ subreddit_name_title_descriptions[subreddit] = text[:512]
66
+ return subreddit_name_title_descriptions
67
+
68
+
69
+ def process_output(output):
70
+ """Process output from subreddit topic classifier."""
71
+ result_dict = {'TECHNOLOGY RELATED': 0.0, 'NOT TECHNOLOGY RELATED': 0.0}
72
+
73
+ for prediction in output:
74
+ label = prediction['label']
75
+ score = prediction['score']
76
+
77
+ if label == 'TECHNOLOGY RELATED':
78
+ result_dict['TECHNOLOGY RELATED'] = score
79
+ elif label == 'NOT TECHNOLOGY RELATED':
80
+ result_dict['NOT TECHNOLOGY RELATED'] = score
81
+
82
+ return result_dict
83
+
84
+ async def probe_subs_for_posts(subs: List[str],
85
+ num_posts: int,
86
+ time_filter: str = "day"):
87
+ """
88
+ Iterate through selected subreddits, retrieve a specified number of top posts from each subreddit,
89
+ sort the comments for each post and pick the top few comments along with some of its replies,
90
+ and store the posts.
91
+
92
+ Args:
93
+ subs (List[str]): A list of subreddit names to probe for posts.
94
+ num_posts (int): The number of top posts to retrieve from each subreddit.
95
+ time_filter (str, optional): The time period to filter posts by. Default is "day".
96
+ Possible values: "all", "day", "hour", "month", "week", "year".
97
+
98
+ Returns:
99
+ defaultdict: A defaultdict where keys are subreddit names and values are lists of
100
+ top posts retrieved from each subreddit.
101
+ """
102
+ # key -> subreddit, value -> list of posts
103
+ posts = defaultdict(list)
104
+ failed_subreddits = []
105
+ # for each subreddit
106
+ for sub in subs:
107
+ try:
108
+ async for submission in sub.top(limit=num_posts, time_filter=time_filter):
109
+ posts[sub].append(submission)
110
+ except Exception as e:
111
+ print(f"Error processing posts from subreddit {sub.display_name}")
112
+ failed_subreddits.append(sub.display_name)
113
+ return posts, failed_subreddits
114
+
115
+ def default_dict_list():
116
+ return defaultdict(list)
117
+
118
+ def default_dict_dict_list():
119
+ return defaultdict(default_dict_list)
120
+
121
+ def default_dict_dict_dict_list():
122
+ return defaultdict(default_dict_dict_list)
123
+
124
+ async def probe_submissions_for_comments(submission: asyncpraw.models.Submission,
125
+ num_comments: int,
126
+ sort_type: str) -> List[asyncpraw.models.Comment]:
127
+ """
128
+ Retrieve comments from a Reddit submission and return a list of comments.
129
+
130
+ Args:
131
+ submission (asyncpraw.models.Submission): The Reddit submission object.
132
+ num_comments (int): The number of comments to retrieve.
133
+ sort_type (str): The sorting type for comments.
134
+ Possible values: 'confidence', 'top', 'new', 'controversial', 'old', 'random', 'qa'.
135
+
136
+ Returns:
137
+ List[asyncpraw.models.Comment]: A list of comment objects retrieved from the submission.
138
+
139
+ Note:
140
+ - This function sorts the comments based on the specified sort_type.
141
+ - If there are 'MoreComments' objects encountered, they are skipped.
142
+ """
143
+ comments_list = []
144
+ submission.comment_sort = sort_type
145
+ submission.comment_limit = num_comments
146
+ await submission.load()
147
+
148
+ comments = await submission.comments()
149
+ comments.replace_more(limit=None)
150
+ all_comments = comments.list()
151
+ for comment in all_comments:
152
+ if isinstance(comment, MoreComments):
153
+ continue
154
+ comments_list.append(comment)
155
+ return comments_list
parent_keywords.csv ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ Parent Company,Keywords
2
+ Apple,"Apple, MacBook Air, MacBook Pro, iMac, Mac mini, Mac Studio, Mac Pro, iPad Pro, iPad Air, iPad, iPad mini, Apple Pencil, iPhone 15, iPhone 14, iPhone 13, iPhone SE, Apple Watch Series 9, Apple Watch Ultra 2, Apple Watch SE, Apple Watch Nike, Apple Watch Hérmes, Apple Vision Pro, AirPods Pro, AirPods Max, Apple TV, HomePod, Apple One, Apple TV+, Apple Music, Apple Arcade, Apple Fitness+, Apple News+, Apple Podcasts, Apple Books, App Store, AppleCare+, iCloud, iTunes, Siri, iOS, iPadOS, macOS, tvOS, visionOS, watchOS, Swift, SwiftUI, SwiftPlaygrounds, TestFlight, Xcode, Xcode Cloud, SF Symbols, AAPL"
3
+ Microsoft,"Microsoft, Access, Accessibility, Account, Clipchamp, Cortana, Defender, Delve, Education, Excel, Family, Forms, Internet Explorer, Microsoft 365, Microsoft Office, Microsoft Advertising, Microsoft Copilot, Microsoft Edge, Microsoft Lens, Microsoft Lists, Microsoft Loop, Microsoft Start, Microsoft Store, Microsoft Stream, Microsoft Syntex, Microsoft Teams, Microsoft Viva, Microsoft Azure, Microsoft SQL ServerOneDrive, OneNote, Outlook, Phone Link, Planner, PowerPoint, Project, Publisher, Security, SharePoint, Skype, Surface, Sway, SwiftKey, To Do, Visio, Whiteboard, Windows, Word, Xbox, Yammer, Surface, Surface Pro, Surface Go 3, Surface Laptop, Visual Studio, HololensMSFT"
4
+ Alphabet,"Google, Android, Android Auto, Android TV, Calendar, Chrome, Chromebook, Chromecast, Contacts, Docs, Drawings, Drive, Earth, Family Link, Finance, Forms, Gemini, Gmail, Google Assistant, Google Chat, Google Classroom, Google Fit, Google Flights, Google Groups, Google Home, Google Maps, Google Meet, Google One, Google Pay, Google Photos, Google Play, Google Store, Google Shopping, Google TV, Google Wallet, Google Workspace, Google Ads, Google Analytics, AdWords, Lens, Nest, News, Pixel, Pixel Buds, Pixelbook Go, Scholar, Search, Sheets, Sites, Slides, Translate, Travel, Waze, YouTube, YouTube Kids, YouTube Music, YouTube TV, GOOG"
5
+ Amazon,"Amazon, Amazon Web Services, AWS, Prime, Music, Alexa, Echo, Amazon Drive, Kindle, Fresh, FireTV, Whole Foods, Amazon Go, Ring, Jeff Bezos, AMZN"
6
+ Nvidia,"Data Center GPUs, DGX, EGX, HGX, Grace CPU, Grace Hopper, BlueField DPU, SuperNICs, OVS, AI Enterprise, NGC, Virtual GPU, vGPU, H200, H100, L4, L40S, L40, A100, A2, A10, A16, A30, A40, Base Command, CUDA-X, Fleet Command, Hopper, Ada Lovelace, Ampere, NVLink-C2C, NVLink, NVSwitch, Tensor Cores, Morpheus, Accelerated Computing, Cloud Computing, Colocation, Edge Computing, High Performance Computing, Networking, Virtualization, MLOps, Chips, AI, CUDA, GPU, GeForce, RTX, Ray Tracing, G-Sync, NVDA"
7
+ Tesla,"Tesla, Model S, Model 3, Model X, Model Y, Cybertruck, Solar Panels, Solar Roof, Powerwall, Megapack, Charging, Home Charging, Supercharging, Supercharger, PyTorch, Self-Driving, Elon Musk, Autopilot, EV, Electric Vehicle, Battery Energy, TSLA"
8
+ Meta,"Facebook, Instagram, WhatsApp, Oculus, Meta, Mark Zuckerberg, Meta Quest, Reality Labs, Horizon Workrooms, MetaVerse, META"
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ gradio>=3.1.4
2
+ asyncpraw >= 7.7.1
subreddits_passed_topic_classifier.csv ADDED
@@ -0,0 +1,409 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Parent Company,Display Name,TECHNOLOGY RELATED,NOT TECHNOLOGY RELATED
2
+ Apple,apple,0.9459022283554077,0.054097793996334076
3
+ Apple,AppleWatch,0.9440438151359558,0.055956169962882996
4
+ Apple,AppleMusic,0.9436547756195068,0.05634518712759018
5
+ Apple,iphone,0.9252777695655823,0.07472218573093414
6
+ Apple,appletv,0.949877142906189,0.05012287199497223
7
+ Apple,AppleCard,0.9370117783546448,0.06298822164535522
8
+ Apple,technology,0.8963473439216614,0.10365273058414459
9
+ Apple,applehelp,0.9459660053253174,0.0540340431034565
10
+ Apple,VintageApple,0.8939180374145508,0.1060820147395134
11
+ Apple,AppleArcade,0.9323838353157043,0.06761612743139267
12
+ Apple,ipad,0.9313634634017944,0.06863652169704437
13
+ Apple,jailbreak,0.9309075474739075,0.06909247487783432
14
+ Apple,AppleWatchFitness,0.9439429044723511,0.05605706572532654
15
+ Apple,AppleVisionPro,0.9354007244110107,0.06459926813840866
16
+ Apple,ios,0.9420726895332336,0.057927366346120834
17
+ Apple,mac,0.9368405342102051,0.06315944343805313
18
+ Apple,FionaApple,0.5963545441627502,0.40364548563957214
19
+ Apple,AppleFitnessPlus,0.9495039582252502,0.05049610510468483
20
+ Apple,applesucks,0.9338662624359131,0.06613372266292572
21
+ Apple,tvPlus,0.9456213712692261,0.054378628730773926
22
+ Apple,Apple_Employees,0.9476903080940247,0.05230960622429848
23
+ Apple,appleswap,0.9377263188362122,0.06227366253733635
24
+ Apple,ApplePhotos,0.9447683095932007,0.055231723934412
25
+ Apple,ApplePorn,0.9441348314285278,0.055865123867988586
26
+ Apple,macbook,0.9458320140838623,0.054167959839105606
27
+ Apple,AppleWallet,0.9464115500450134,0.05358842387795448
28
+ Apple,VisionPro,0.9414878487586975,0.05851208046078682
29
+ Apple,applewatchfaces,0.9483166337013245,0.05168331786990166
30
+ Apple,Apple_Internal,0.9437738060951233,0.05622623488306999
31
+ Apple,appleriverstabbing,0.9436800479888916,0.056319959461688995
32
+ Apple,applemaps,0.9443870782852173,0.055612947791814804
33
+ Apple,AppleVox,0.9460611939430237,0.053938813507556915
34
+ Apple,AppleTVPlus,0.9473918080329895,0.0526081845164299
35
+ Apple,AppleByteMe,0.9376201629638672,0.06237988546490669
36
+ Apple,AppleVision,0.9377582669258118,0.062241751700639725
37
+ Apple,ApplePencil,0.9398351907730103,0.06016478314995766
38
+ Apple,AppleBandMarket,0.9443284273147583,0.055671583861112595
39
+ Apple,InvasionAppleTV,0.869439959526062,0.130560040473938
40
+ Apple,apple_news,0.9456540942192078,0.05434592068195343
41
+ Apple,AppleEnthusiasts,0.9435503482818604,0.05644962191581726
42
+ Apple,AppleTV4,0.9413065910339355,0.05869346484541893
43
+ Apple,apple_watch,0.9470943808555603,0.0529056154191494
44
+ Apple,hardwareswap,0.9227428436279297,0.0772572010755539
45
+ Apple,apple2,0.9312203526496887,0.06877963244915009
46
+ Apple,CarPlay,0.9438360333442688,0.05616392940282822
47
+ Apple,AppleWatchSharing,0.9408633708953857,0.05913665518164635
48
+ Apple,AppleCarplay,0.9470998048782349,0.052900224924087524
49
+ Apple,ApplePlaylists,0.9409224987030029,0.05907752737402916
50
+ Apple,AppleM1,0.9390692710876465,0.06093068793416023
51
+ Apple,AppleHealth,0.9490743279457092,0.050925616174936295
52
+ Apple,AppleApps,0.9467370510101318,0.05326296016573906
53
+ Apple,AppleReminders,0.950761616230011,0.04923837631940842
54
+ Apple,AppleNews,0.9504362344741821,0.04956378415226936
55
+ Apple,appleMR,0.9436797499656677,0.056320205330848694
56
+ Apple,Apple_AUX,0.9468802213668823,0.053119760006666183
57
+ Apple,apple_jp,0.9063013792037964,0.09369859099388123
58
+ Apple,AppleEnterprise,0.9528436660766602,0.04715629667043686
59
+ Apple,AppleNumbers,0.9464038014411926,0.05359626188874245
60
+ Apple,AppleWatchApps,0.9479115009307861,0.052088476717472076
61
+ Apple,AppleWatches,0.9398327469825745,0.06016718968749046
62
+ Apple,AppleIPTV,0.9486028552055359,0.05139709636569023
63
+ Apple,AppleRumors,0.9418615698814392,0.058138441294431686
64
+ Microsoft,microsoft,0.9447571039199829,0.0552428737282753
65
+ Microsoft,MicrosoftRewards,0.9426965713500977,0.057303402572870255
66
+ Microsoft,MicrosoftTeams,0.9466506242752075,0.053349412977695465
67
+ Microsoft,technology,0.8963473439216614,0.10365273058414459
68
+ Microsoft,Windows10,0.9434086084365845,0.05659136921167374
69
+ Microsoft,MicrosoftEdge,0.9404168128967285,0.059583235532045364
70
+ Microsoft,MicrosoftWord,0.9473639130592346,0.05263608321547508
71
+ Microsoft,Surface,0.939339280128479,0.0606607124209404
72
+ Microsoft,windows,0.9398722648620605,0.06012770161032677
73
+ Microsoft,MicrosoftFabric,0.9493880867958069,0.050611961632966995
74
+ Microsoft,MicrosoftFlightSim,0.9419115781784058,0.05808836966753006
75
+ Microsoft,xboxone,0.890507161617279,0.10949277132749557
76
+ Microsoft,Windows11,0.9438146948814392,0.05618535354733467
77
+ Microsoft,MicrosoftLoop,0.9477638006210327,0.0522361621260643
78
+ Microsoft,microsoft_365_copilot,0.9466812610626221,0.05331870913505554
79
+ Microsoft,Office365,0.9465529918670654,0.05344702675938606
80
+ Microsoft,windowsphone,0.9357553720474243,0.06424468010663986
81
+ Microsoft,FuckMicrosoft,0.9452521204948425,0.05474791303277016
82
+ Microsoft,MicrosoftFlow,0.9474897384643555,0.05251023918390274
83
+ Microsoft,MicrosoftOutlook,0.9509246945381165,0.04907523840665817
84
+ Microsoft,MicrosoftPlanner,0.9497036337852478,0.05029631778597832
85
+ Microsoft,XboxSeriesX,0.9195348024368286,0.0804651528596878
86
+ Microsoft,pcmasterrace,0.8982142806053162,0.10178576409816742
87
+ Microsoft,MicrosoftCopilot,0.9475692510604858,0.05243074893951416
88
+ Microsoft,MicrosoftRewardsIndia,0.9486438632011414,0.051356133073568344
89
+ Microsoft,MicrosoftStore,0.9471521973609924,0.05284775793552399
90
+ Microsoft,bing,0.9247415661811829,0.07525846362113953
91
+ Microsoft,xbox,0.7764215469360352,0.22357845306396484
92
+ Microsoft,pcgaming,0.7962740063667297,0.20372602343559265
93
+ Microsoft,MicrosoftDesigner365,0.9459965229034424,0.054003506898880005
94
+ Microsoft,MicrosoftCopilotPro,0.9473934173583984,0.05260657146573067
95
+ Microsoft,linux,0.9325055480003357,0.06749442964792252
96
+ Microsoft,mspaint,0.9381782412528992,0.06182179972529411
97
+ Microsoft,exchangeserver,0.9416362643241882,0.058363787829875946
98
+ Microsoft,softwaregore,0.9301747679710388,0.06982525438070297
99
+ Microsoft,microsoft365,0.9485349655151367,0.051465049386024475
100
+ Microsoft,AZURE,0.9386346340179443,0.06136539578437805
101
+ Microsoft,MVIS,0.9337393641471863,0.06626058369874954
102
+ Microsoft,edge,0.9499903917312622,0.050009604543447495
103
+ Microsoft,Microsoft_,0.9470585584640503,0.05294150114059448
104
+ Microsoft,MSAccess,0.933955729007721,0.06604433804750443
105
+ Microsoft,csMajors,0.7578917145729065,0.24210821092128754
106
+ Microsoft,deMicrosoft,0.6682935953140259,0.3317064046859741
107
+ Microsoft,MicrosoftBand,0.9484232068061829,0.051576800644397736
108
+ Microsoft,Android,0.9153929352760315,0.08460702002048492
109
+ Microsoft,MicrosoftExcel,0.9512075185775757,0.04879250004887581
110
+ Microsoft,DefenderATP,0.9450199007987976,0.054980114102363586
111
+ Microsoft,MicrosoftAccess,0.9491526484489441,0.0508473739027977
112
+ Microsoft,MicrosoftSurface,0.9494591951370239,0.050540775060653687
113
+ Microsoft,privacy,0.8940984010696411,0.10590159893035889
114
+ Microsoft,microsoftoffice,0.949000895023346,0.05099913105368614
115
+ Microsoft,Microsoft_Build,0.9455381035804749,0.054461877793073654
116
+ Microsoft,GreatXboxDeals,0.6358607411384583,0.36413928866386414
117
+ Microsoft,Microsoft_Hololens,0.9426306486129761,0.05736927315592766
118
+ Microsoft,News_Microsoft,0.9494026899337769,0.050597310066223145
119
+ Microsoft,MicrosoftLists,0.9500872492790222,0.04991273209452629
120
+ Microsoft,xbox360,0.8533247113227844,0.14667530357837677
121
+ Microsoft,linuxmasterrace,0.9237755537033081,0.07622440159320831
122
+ Microsoft,MicrosoftInternal,0.94683438539505,0.05316556617617607
123
+ Microsoft,microsoft_jobs,0.9487918019294739,0.05120820552110672
124
+ Microsoft,MicrosoftViva,0.9517027735710144,0.04829726740717888
125
+ Microsoft,MicrosoftSentinel,0.9449529051780701,0.055047012865543365
126
+ Microsoft,MicrosoftIgnite,0.940494179725647,0.05950586125254631
127
+ Microsoft,PowerBI,0.9483728408813477,0.051627207547426224
128
+ Microsoft,MicrosoftInsiders,0.9449305534362793,0.05506947264075279
129
+ Microsoft,MicrosoftRomania,0.9475746154785156,0.052425432950258255
130
+ Microsoft,MicrosoftInvestors,0.9503077864646912,0.04969222843647003
131
+ Microsoft,MicrosoftPrague,0.9494380354881287,0.05056194216012955
132
+ Microsoft,MicrosoftBand2,0.9509906768798828,0.04900936037302017
133
+ Microsoft,MicrosoftPurview,0.9482223987579346,0.051777616143226624
134
+ Microsoft,MicrosoftIntill,0.948749840259552,0.051250118762254715
135
+ Microsoft,MicrosoftAds,0.9504338502883911,0.04956617206335068
136
+ Microsoft,MicrosoftSecurity,0.9480593204498291,0.0519406832754612
137
+ Microsoft,MicrosoftAdvertising,0.946657657623291,0.053342316299676895
138
+ Microsoft,MicrosoftPartner,0.9491795897483826,0.050820380449295044
139
+ Microsoft,MicrosoftEsports,0.9305663704872131,0.06943364441394806
140
+ Microsoft,MicrosoftOMS,0.9410990476608276,0.058900926262140274
141
+ Alphabet,waze,0.8241326212882996,0.17586739361286163
142
+ Alphabet,AndroidAuto,0.9294705390930176,0.07052943855524063
143
+ Alphabet,CarPlay,0.9438360333442688,0.05616392940282822
144
+ Alphabet,Android,0.9153929352760315,0.08460702002048492
145
+ Alphabet,jailbreak,0.9309075474739075,0.06909247487783432
146
+ Alphabet,technology,0.8963473439216614,0.10365273058414459
147
+ Alphabet,windowsphone,0.9357553720474243,0.06424468010663986
148
+ Alphabet,wazerwaterjet,0.9153176546096802,0.0846823900938034
149
+ Alphabet,uberdrivers,0.7553236484527588,0.2446763813495636
150
+ Alphabet,apple,0.9459022283554077,0.054097793996334076
151
+ Alphabet,softwaregore,0.9301747679710388,0.06982525438070297
152
+ Alphabet,google,0.9417938590049744,0.05820612236857414
153
+ Alphabet,shortcuts,0.9013237953186035,0.0986761823296547
154
+ Alphabet,tasker,0.9278063178062439,0.07219363749027252
155
+ Alphabet,androidapps,0.940903902053833,0.05909606069326401
156
+ Alphabet,TechNewsToday,0.8006388545036316,0.19936110079288483
157
+ Alphabet,GooglePixel,0.9379786849021912,0.062021322548389435
158
+ Alphabet,GoogleMaps,0.9349548816680908,0.0650450810790062
159
+ Alphabet,AndroidQuestions,0.8908527493476868,0.10914725810289383
160
+ Alphabet,spotify,0.913359522819519,0.08664048463106155
161
+ Amazon,amazon,0.8274878263473511,0.17251215875148773
162
+ Amazon,AmazonFC,0.8777503371238708,0.12224972248077393
163
+ Amazon,AmazonWTF,0.7314359545707703,0.2685640752315521
164
+ Amazon,AmazonDSPDrivers,0.9300246238708496,0.06997539848089218
165
+ Amazon,AmazonBudgetFinds,0.9325811862945557,0.06741882115602493
166
+ Amazon,AmazonFlexDrivers,0.928277313709259,0.07172274589538574
167
+ Amazon,amazonprime,0.8997910618782043,0.10020893067121506
168
+ Amazon,bapcsalescanada,0.9156530499458313,0.08434697240591049
169
+ Amazon,AmazonDiscounts,0.8339879512786865,0.16601204872131348
170
+ Amazon,FulfillmentByAmazon,0.8059840798377991,0.19401592016220093
171
+ Amazon,AmazonSeller,0.8662770986557007,0.1337229162454605
172
+ Amazon,Random_Acts_Of_Amazon,0.829012930393219,0.1709870547056198
173
+ Amazon,AmazonPrimeVideo,0.9014652371406555,0.09853476285934448
174
+ Amazon,AmazonFinds,0.8805638551712036,0.11943617463111877
175
+ Amazon,technology,0.8963473439216614,0.10365273058414459
176
+ Amazon,AmazonFBA,0.8970873355865479,0.10291263461112976
177
+ Amazon,AmazonFreebies,0.7974774837493896,0.20252251625061035
178
+ Amazon,AmazonMerch,0.8463523983955383,0.15364764630794525
179
+ Amazon,AmazonUnder5,0.7938764095306396,0.20612359046936035
180
+ Amazon,AmazonFlex,0.8971601724624634,0.10283983498811722
181
+ Amazon,AmazonAnswers,0.8585472702980042,0.14145268499851227
182
+ Amazon,aws,0.9381091594696045,0.061890825629234314
183
+ Amazon,AmazonQueen300,0.8375917673110962,0.1624082773923874
184
+ Amazon,AmazonFlexUK,0.9232040643692017,0.07679589092731476
185
+ Amazon,NintendoSwitchDeals,0.5579310059547424,0.4420689642429352
186
+ Amazon,AmazonPrimeDeals,0.8565962910652161,0.14340372383594513
187
+ Amazon,AmazonFBAOnlineRetail,0.888096809387207,0.11190316081047058
188
+ Amazon,AmazonVine,0.9136484861373901,0.08635145425796509
189
+ Amazon,BestOfAmazonPrime,0.7072470784187317,0.2927529215812683
190
+ Amazon,RealAmazonFlexDrivers,0.6245715618133545,0.3754284083843231
191
+ Amazon,AmazonPawgs,0.5450341701507568,0.45496582984924316
192
+ Amazon,amazonecho,0.9141154289245605,0.08588457852602005
193
+ Amazon,AmazonTopRated,0.8476564884185791,0.1523434817790985
194
+ Amazon,AmazonFBATips,0.9104694724082947,0.08953053504228592
195
+ Amazon,FOOD_AMAZON,0.7010954022407532,0.2989046275615692
196
+ Amazon,kindle,0.8615319132804871,0.13846811652183533
197
+ Amazon,cordcutters,0.6742342710494995,0.3257656991481781
198
+ Amazon,amazonreviews,0.8573698997497559,0.14263010025024414
199
+ Amazon,AmazonDS,0.920381486415863,0.07961850613355637
200
+ Amazon,AmazonMusic,0.8961952328681946,0.10380472987890244
201
+ Amazon,AmazonUnder25,0.8295430541038513,0.17045699059963226
202
+ Amazon,NintendoSwitch,0.6883412003517151,0.3116587698459625
203
+ Amazon,AmazonWFShoppers,0.8506099581718445,0.1493900716304779
204
+ Amazon,csMajors,0.7578917145729065,0.24210821092128754
205
+ Amazon,alexa,0.9218804836273193,0.07811949402093887
206
+ Amazon,Amazon_Influencer,0.8863781094551086,0.11362189054489136
207
+ Amazon,AmazonRME,0.9264123439788818,0.07358765602111816
208
+ Amazon,wtf_amazon,0.8169316649436951,0.18306832015514374
209
+ Amazon,AmazonGrowth,0.8869768381118774,0.11302317678928375
210
+ Amazon,AnywhereButAmazon,0.7414692640304565,0.25853073596954346
211
+ Amazon,Amazon_,0.8183143734931946,0.18168559670448303
212
+ Amazon,AmazonKDP,0.9058606028556824,0.09413944184780121
213
+ Amazon,AmazonHacks,0.8980934619903564,0.10190654546022415
214
+ Amazon,Amazon_Affiliate,0.9004363417625427,0.09956365823745728
215
+ Amazon,AmazonDSP,0.931628942489624,0.06837107986211777
216
+ Amazon,AmazonWebServices,0.9270688891410828,0.07293105870485306
217
+ Amazon,AmazonAustralia,0.7544971704483032,0.24550287425518036
218
+ Amazon,AmazonQuestions,0.8792954683303833,0.12070450931787491
219
+ Amazon,AmazonHalo,0.7360429167747498,0.26395711302757263
220
+ Amazon,AmazonUSA,0.8347119688987732,0.165288046002388
221
+ Nvidia,nvidia,0.9437152147293091,0.05628477782011032
222
+ Nvidia,NvidiaStock,0.9363176226615906,0.0636824369430542
223
+ Nvidia,pcmasterrace,0.8982142806053162,0.10178576409816742
224
+ Nvidia,ShieldAndroidTV,0.9390518069267273,0.06094823777675629
225
+ Nvidia,NVDA_Stock,0.9363070726394653,0.06369290500879288
226
+ Nvidia,hardware,0.926306426525116,0.07369356602430344
227
+ Nvidia,theNvidiaShield,0.9438186287879944,0.05618143081665039
228
+ Nvidia,LaptopDeals,0.9204440116882324,0.07955601811408997
229
+ Nvidia,hardwareswap,0.9227428436279297,0.0772572010755539
230
+ Nvidia,GeForceNOW,0.9430749416351318,0.056925103068351746
231
+ Nvidia,linux_gaming,0.9334163665771484,0.06658364832401276
232
+ Nvidia,pcgaming,0.7962740063667297,0.20372602343559265
233
+ Nvidia,News_Nvidia,0.9503152966499329,0.049684688448905945
234
+ Nvidia,buildapc,0.8499053120613098,0.1500946283340454
235
+ Nvidia,AyyMD,0.9225627779960632,0.0774371549487114
236
+ Nvidia,technology,0.8963473439216614,0.10365273058414459
237
+ Nvidia,PleX,0.8254028558731079,0.17459718883037567
238
+ Nvidia,Fedora,0.9403988718986511,0.05960111692547798
239
+ Nvidia,nvidia_rtx,0.9434506297111511,0.05654940381646156
240
+ Nvidia,oculus,0.9281306266784668,0.07186932861804962
241
+ Nvidia,archlinux,0.9300105571746826,0.06998937577009201
242
+ Nvidia,linux,0.9325055480003357,0.06749442964792252
243
+ Nvidia,AndroidTV,0.9375032782554626,0.06249672919511795
244
+ Nvidia,linuxquestions,0.9349607229232788,0.06503931432962418
245
+ Nvidia,NvidiaMasterRace,0.711692750453949,0.288307249546051
246
+ Nvidia,Android,0.9153929352760315,0.08460702002048492
247
+ Nvidia,techsupport,0.9220484495162964,0.07795150578022003
248
+ Nvidia,hackintosh,0.8985860347747803,0.10141392797231674
249
+ Nvidia,VFIO,0.9368309378623962,0.06316909193992615
250
+ Nvidia,GamingLaptops,0.9078131318092346,0.09218690544366837
251
+ Nvidia,linux4noobs,0.9352121353149414,0.06478787958621979
252
+ Nvidia,bapcsalescanada,0.9156530499458313,0.08434697240591049
253
+ Nvidia,nvidiayy,0.9414819478988647,0.05851808562874794
254
+ Nvidia,Ubuntu,0.9387118816375732,0.06128811836242676
255
+ Nvidia,RTXRemix,0.9439336657524109,0.056066397577524185
256
+ Nvidia,openSUSE,0.9451718330383301,0.05482817441225052
257
+ Nvidia,NVIDIAGeforceNow,0.9453039169311523,0.054696064442396164
258
+ Nvidia,ManjaroLinux,0.9263458251953125,0.07365422695875168
259
+ Nvidia,linuxmasterrace,0.9237755537033081,0.07622440159320831
260
+ Nvidia,nvidiacanvas,0.9299454092979431,0.0700545534491539
261
+ Nvidia,nvidiacirclejerk,0.9435920715332031,0.05640789493918419
262
+ Nvidia,gamingpc,0.8731988072395325,0.12680117785930634
263
+ Nvidia,EtherMining,0.9236644506454468,0.07633549720048904
264
+ Nvidia,singularity,0.7145491242408752,0.28545090556144714
265
+ Nvidia,gsync,0.942828893661499,0.05717111751437187
266
+ Nvidia,kde,0.8339047431945801,0.16609521210193634
267
+ Nvidia,gpumining,0.7858498692512512,0.21415014564990997
268
+ Nvidia,nvezos,0.947205662727356,0.05279427394270897
269
+ Nvidia,gadgets,0.8626515865325928,0.13734838366508484
270
+ Nvidia,linuxmint,0.9378430843353271,0.06215686723589897
271
+ Nvidia,GT1030,0.9215872883796692,0.07841268926858902
272
+ Nvidia,dogemining,0.791873574256897,0.20812644064426422
273
+ Nvidia,pcgamingtechsupport,0.9196998476982117,0.08030017465353012
274
+ Nvidia,baos,0.9472708106040955,0.05272921919822693
275
+ Nvidia,gigabyte,0.9090671539306641,0.09093289077281952
276
+ Nvidia,GauGAN,0.9176658987998962,0.08233413845300674
277
+ Nvidia,Jetbot,0.9271459579467773,0.07285407185554504
278
+ Nvidia,AndroidGaming,0.9228494167327881,0.0771506205201149
279
+ Nvidia,MSILaptops,0.930628776550293,0.06937115639448166
280
+ Nvidia,vmgaming,0.938574492931366,0.06142552196979523
281
+ Nvidia,GeForceExperience,0.9058818221092224,0.0941181629896164
282
+ Nvidia,Rtx4070,0.9305933713912964,0.06940656900405884
283
+ Nvidia,htpc,0.9073736071586609,0.09262637794017792
284
+ Tesla,Tesla,0.7298600077629089,0.27014005184173584
285
+ Tesla,TeslaLounge,0.8214918971061707,0.17850807309150696
286
+ Tesla,RealTesla,0.618435800075531,0.381564199924469
287
+ Tesla,teslamotors,0.7757390141487122,0.22426098585128784
288
+ Tesla,teslainvestorsclub,0.8547272086143494,0.14527282118797302
289
+ Tesla,TeslaModel3,0.8921132683753967,0.10788676142692566
290
+ Tesla,TeslaModelY,0.8873705863952637,0.11262941360473633
291
+ Tesla,EnoughMuskSpam,0.7052788734436035,0.2947211265563965
292
+ Tesla,electricvehicles,0.7562500238418579,0.2437499612569809
293
+ Tesla,TeslaPorn,0.7492327094078064,0.250767320394516
294
+ Tesla,TeslaCam,0.8862987160682678,0.11370135843753815
295
+ Tesla,technology,0.8963473439216614,0.10365273058414459
296
+ Tesla,TeslaModified,0.6968017816543579,0.3031981885433197
297
+ Tesla,NikolaTesla,0.5466632843017578,0.4533366858959198
298
+ Tesla,elonmusk,0.7967085242271423,0.20329143106937408
299
+ Tesla,cars,0.6729927062988281,0.3270072937011719
300
+ Tesla,TeslaMod,0.8447659015655518,0.15523414313793182
301
+ Tesla,TeslaSolar,0.8757427930831909,0.12425724416971207
302
+ Tesla,TSLA,0.9124355912208557,0.08756443113088608
303
+ Tesla,TeslaCamping,0.8548707365989685,0.1451292634010315
304
+ Tesla,TeslaModelX,0.8913801908493042,0.1086198017001152
305
+ Tesla,cybertruck,0.6899393200874329,0.31006067991256714
306
+ Tesla,TeslaModelS,0.8887284994125366,0.11127153038978577
307
+ Tesla,TeslaReferralsCode,0.7001307010650635,0.2998693287372589
308
+ Tesla,ModelY,0.8501830101013184,0.14981691539287567
309
+ Tesla,TeslaSupport,0.9168136119842529,0.08318640291690826
310
+ Tesla,TeslaFSD,0.9011187553405762,0.09888128936290741
311
+ Tesla,TeslaUK,0.8713505268096924,0.1286494880914688
312
+ Tesla,TeslaModel3Delivery,0.8793148398399353,0.12068521976470947
313
+ Tesla,TeslaAutonomy,0.877418041229248,0.12258195132017136
314
+ Tesla,tesla_cars,0.8340883851051331,0.16591158509254456
315
+ Tesla,TeslaLightShow,0.8169808387756348,0.18301919102668762
316
+ Tesla,Tesla_Motors,0.9041537046432495,0.09584623575210571
317
+ Tesla,TeslaSafe,0.868215799331665,0.13178418576717377
318
+ Tesla,TeslaTruck,0.8758386969566345,0.12416127324104309
319
+ Tesla,solar,0.674364447593689,0.32563552260398865
320
+ Tesla,Tesla_Charts,0.8940445184707642,0.10595546662807465
321
+ Tesla,TeslaCoils,0.8914267420768738,0.10857332497835159
322
+ Tesla,StockMarket,0.5934199690818787,0.4065800905227661
323
+ Tesla,TeslaMate,0.9119665026664734,0.08803348243236542
324
+ Tesla,TeslaModel3SRDelivery,0.8620396852493286,0.1379602998495102
325
+ Tesla,CryptoCurrency,0.8551615476608276,0.14483843743801117
326
+ Tesla,TeslaSpeed,0.8902726173400879,0.1097273901104927
327
+ Tesla,TeslaBots,0.8640636205673218,0.13593634963035583
328
+ Tesla,TeslaDietz,0.7587324380874634,0.24126756191253662
329
+ Tesla,Tesla_Stock,0.9049817323684692,0.09501821547746658
330
+ Tesla,Bitcoin,0.8760089874267578,0.12399096041917801
331
+ Tesla,TeslaInsurance,0.8700705170631409,0.12992948293685913
332
+ Tesla,TeslaJustice,0.8911826014518738,0.10881739109754562
333
+ Tesla,TeslaDK,0.8431707620620728,0.15682920813560486
334
+ Tesla,technews,0.9076546430587769,0.09234528243541718
335
+ Tesla,TeslaCharts,0.8601215481758118,0.13987845182418823
336
+ Tesla,Nikola_Tesla,0.5968636274337769,0.40313634276390076
337
+ Tesla,TeslaSucks,0.8330672979354858,0.16693271696567535
338
+ Tesla,TeslaRoadster2020,0.8948959708213806,0.10510408133268356
339
+ Tesla,TeslaRoof,0.9041352868080139,0.0958646759390831
340
+ Tesla,TeslaPlaid,0.8018927574157715,0.19810722768306732
341
+ Tesla,TeslaModel3RWD,0.8938589692115784,0.10614101588726044
342
+ Tesla,TeslaMasterrace,0.8438421487808228,0.15615786612033844
343
+ Tesla,tesla_roadster,0.8981971144676208,0.10180290043354034
344
+ Tesla,TeslaMemes,0.7575254440307617,0.24247457087039948
345
+ Tesla,TeslaNZ,0.8824981451034546,0.11750191450119019
346
+ Tesla,TeslaMirror,0.8451507687568665,0.15484930574893951
347
+ Tesla,TeslaSverige,0.5240943431854248,0.4759056568145752
348
+ Tesla,TeslaDE,0.7649447917938232,0.23505517840385437
349
+ Tesla,TeslaTequila,0.5918936729431152,0.40810638666152954
350
+ Meta,oculus,0.9281306266784668,0.07186932861804962
351
+ Meta,OculusQuest,0.9072072505950928,0.09279277920722961
352
+ Meta,OculusQuest2,0.9114236831665039,0.08857627958059311
353
+ Meta,virtualreality,0.8114686012268066,0.18853133916854858
354
+ Meta,OculusGo,0.8984629511833191,0.10153701156377792
355
+ Meta,OculusQuestStore,0.9193870425224304,0.08061292767524719
356
+ Meta,GearVR,0.9023244380950928,0.09767559915781021
357
+ Meta,oculus_apps,0.939483642578125,0.06051631271839142
358
+ Meta,QuestPiracy,0.8348654508590698,0.16513453423976898
359
+ Meta,OculusStore,0.9297267198562622,0.0702732503414154
360
+ Meta,pcmasterrace,0.8982142806053162,0.10178576409816742
361
+ Meta,oculus_rift,0.9291102886199951,0.07088970392942429
362
+ Meta,hardwareswap,0.9227428436279297,0.0772572010755539
363
+ Meta,VRGaming,0.84092777967453,0.1590721607208252
364
+ Meta,Oculus_VR,0.9273185729980469,0.0726814940571785
365
+ Meta,OculusLink,0.9177182912826538,0.08228165656328201
366
+ Meta,OculusQuest3,0.9233636260032654,0.07663635909557343
367
+ Meta,oculus_medium,0.9088661074638367,0.09113384038209915
368
+ Meta,SteamVR,0.9269482493400574,0.07305172830820084
369
+ Meta,OculusGaming,0.9104315638542175,0.08956848829984665
370
+ Meta,VRchat,0.8800788521766663,0.11992114782333374
371
+ Meta,OculusIdeas,0.9224793910980225,0.07752062380313873
372
+ Meta,technology,0.8963473439216614,0.10365273058414459
373
+ Meta,OculusriftS,0.930955708026886,0.06904428452253342
374
+ Meta,OculusJobs,0.8875855207443237,0.11241442710161209
375
+ Meta,oculus_linux,0.943547785282135,0.05645214766263962
376
+ Meta,ValveIndex,0.8020469546318054,0.19795304536819458
377
+ Meta,OculusVR,0.910807192325592,0.08919281512498856
378
+ Meta,OculusQuest3Official,0.9254677295684814,0.07453224807977676
379
+ Meta,Unity3D,0.9064372181892395,0.09356274455785751
380
+ Meta,OculusSupport,0.9315226078033447,0.0684773400425911
381
+ Meta,OnwardVR,0.8925277590751648,0.10747223347425461
382
+ Meta,OculusMods,0.8525819778442383,0.1474180370569229
383
+ Meta,oculusdev,0.9396952986717224,0.060304708778858185
384
+ Meta,oculus_giveaways,0.7834376096725464,0.21656237542629242
385
+ Meta,OculusNames,0.9348998665809631,0.06510009616613388
386
+ Meta,OculusQuestcurated,0.9357403516769409,0.06425964087247849
387
+ Meta,PavlovGame,0.7376906871795654,0.26230937242507935
388
+ Meta,ShadowPC,0.9313005805015564,0.06869940459728241
389
+ Meta,OculusQuestModding,0.9335748553276062,0.0664251297712326
390
+ Meta,OculusHomeObjects,0.9437141418457031,0.05628589540719986
391
+ Meta,OculusGoStore,0.9264407753944397,0.07355920970439911
392
+ Meta,OculusQuestDevelopers,0.9354897737503052,0.06451023370027542
393
+ Meta,OculusQuestApks,0.9118732213973999,0.0881267786026001
394
+ Meta,OculusGoDev,0.9382277727127075,0.061772242188453674
395
+ Meta,PureOculusQuest,0.9327008724212646,0.06729918718338013
396
+ Meta,OculusQuestRepair,0.9295704364776611,0.07042955607175827
397
+ Meta,OculusGearStore,0.906640350818634,0.09335961937904358
398
+ Meta,UnityforOculusGo,0.9170390367507935,0.08296097815036774
399
+ Meta,OculusQuest_Sverige,0.9235689043998718,0.07643107324838638
400
+ Meta,OculusCircleJerk,0.9221923351287842,0.07780764251947403
401
+ Meta,OculusQuestGerman,0.9122679233551025,0.08773209899663925
402
+ Meta,OculusGameSwap,0.8537657856941223,0.14623422920703888
403
+ Meta,OculusQuestMRC,0.9217391610145569,0.07826078683137894
404
+ Meta,OculusQuestSideLoadin,0.9128414988517761,0.08715850859880447
405
+ Meta,OculusQuestMineCraft,0.8942174315452576,0.10578253865242004
406
+ Meta,OculusQuestBeatSaber,0.9037185311317444,0.09628153592348099
407
+ Meta,applab,0.9335094094276428,0.06649059057235718
408
+ Meta,BringOculusDemosBack,0.8868736624717712,0.11312633007764816
409
+ Meta,oculusquest2deutsch,0.9308412075042725,0.06915879994630814
subsidiary_parent.csv ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Subsidiary,Parent Company
2
+ Apple,Apple
3
+ Microsoft,Microsoft
4
+ Alphabet,Alphabet
5
+ Google,Alphabet
6
+ YouTube,Alphabet
7
+ Waze,Alphabet
8
+ Amazon,Amazon
9
+ Nvidia,Nvidia
10
+ Tesla,Tesla
11
+ Facebook,Meta
12
+ Instagram,Meta
13
+ WhatsApp,Meta
14
+ Oculus,Meta