Upload 6 files
Browse files- app.py +315 -0
- helper.py +155 -0
- parent_keywords.csv +8 -0
- requirements.txt +2 -0
- subreddits_passed_topic_classifier.csv +409 -0
- subsidiary_parent.csv +14 -0
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
|