Я получил следующий Python код, в основном я собираю информацию из Reddit и затем анализирую настроения для каждого сообщения :
from IPython import display
import math
from pprint import pprint
import pandas as pd
import numpy as np
import nltk
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid', context='talk', palette='Dark2')
import praw
reddit = praw.Reddit(client_id='myId',
client_secret='mySecret', user_agent='testing_api')
headlines = set()
for submission in reddit.subreddit('politics').new(limit=None):
headlines.add(submission.title)
display.clear_output()
print(len(headlines))
from nltk.sentiment.vader import SentimentIntensityAnalyzer as SIA
sia = SIA()
results = []
for line in headlines:
pol_score = sia.polarity_scores(line)
pol_score['headline'] = line
results.append(pol_score)
pprint(results[:3], width=100)
Вывод:
[{'compound': 0.0,
'headline': 'Tennessee Restaurants Reopen As State Sees Biggest 1-Day Jump In COVID-19 Cases',
'neg': 0.0,
'neu': 1.0,
'pos': 0.0},
{'compound': -0.5267,
'headline': 'Report: Nearly Half of Americans Breathing Unhealthy Air',
'neg': 0.327,
'neu': 0.673,
'pos': 0.0},
{'compound': -0.0754,
'headline': 'The Implications of Trump Derangement Syndrome | Even now, vehement Trump '
'supporters seem to believe that most criticism of the president is explained by '
'widespread TDS.',
'neg': 0.11,
'neu': 0.791,
'pos': 0.1}]
Интересно, смогу ли я сделать то же самое, но циклически проходить через сообщение в subreddit
Со следующими функциями:
- Избегать циклического повторения одних и тех же сообщений :
Есть ли способ структурировать код таким образом, чтобы во второй раз он выполнял l oop через следующие 100 новых сообщений (т. Е. Сообщения с 101 по 200) ?
- Сентиментальный анализ в режиме реального времени В основном сохраняйте ту же функцию анализ настроений во время l oop.
, которое я нашел в Reddit эта функциональность PRAW:
"Библиотека PRAW имеет функции для потоковой передачи сообщений или комментариев. Reddit.Subreddit.stream.comments()
и Reddit.Subreddit.stream.submissions()
будут выдавать комментарии или представления по мере их появления."
Вот пример использования:
for comment in reddit.subreddit('iama').stream.comments():
print(comment)
for submission in reddit.subreddit('all').stream.submissions():
print(submission)
StreamSubmission добавлено:
#WithStreamFunctionality
from IPython import display
import math
from pprint import pprint
import pandas as pd
import numpy as np
import nltk
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='darkgrid', context='talk', palette='Dark2')
import nltk
nltk.download('vader_lexicon')
import praw
reddit = praw.Reddit(client_id='myId',
client_secret='mySecret', user_agent='testing_api')
headlines = set()
#Changed
for submission in reddit.subreddit('politics').stream.submissions():
headlines.add(submission.title)
display.clear_output()
from nltk.sentiment.vader import SentimentIntensityAnalyzer as SIA
sia = SIA()
results = []
for line in headlines:
pol_score = sia.polarity_scores(line)
pol_score['headline'] = line
results.append(pol_score)
pprint(results[:10], width=100)
df = pd.DataFrame.from_records(results)
df.head()
Но не работает, он застревает ... ошибок в консоли тоже нет ...
Спасибо за любые ответы! Кроме того, я новичок в Python и довольно плохо знаком с работой с API в целом, поэтому, если что-то, что я сказал, не имело смысла или отражает отсутствие понимания, пожалуйста, дайте мне знать!