Twitter деректерін алу, Python 3.0 арқылы алдын ала өңдеу және көңіл-күйді талдау | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 4 мая, печатный экземпляр отправим 8 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Молодой ученый O'zbekiston

Опубликовано в Молодой учёный №13 (303) март 2020 г.

Дата публикации: 25.03.2020

Статья просмотрена: 38 раз

Библиографическое описание:

Даулет, Сергей Жандосулы. Twitter деректерін алу, Python 3.0 арқылы алдын ала өңдеу және көңіл-күйді талдау / Сергей Жандосулы Даулет. — Текст : непосредственный // Молодой ученый. — 2020. — № 13 (303). — С. 260-264. — URL: https://moluch.ru/archive/303/68387/ (дата обращения: 24.04.2024).



Осы мақалада мен Twitter-дегі үш мәліметті үш кілт сөз + хэштегтермен бөліп-бөліп шығару үшін жасаған қадамдарым бойынша нұсқау беремін.

Түйінді сөздер: Twitter, файлдар, эмодзи, препроцессор

В этой статье я дам вам инструкции о шагах, которые я предпринял для разделения трех частей информации в Twitter с тремя ключевыми словами + хэштегами.

Ключевые слова: Twitter, файлы, эмодзи, препроцессор

Twitter — бұл мәліметтердің алтын кеніші. Twitter басқа әлеуметтік платформалардан айырмашылығы, барлық қолданушылардың твиттері жалпыға қол жетімді. Егер сіз үлкен көлемді деректерді аналитиканы іске қосу үшін алуға тырыссаңыз, бұл үлкен мүмкіндік. Twitter деректері ерекше. Твиттердегі соңғы жиырма минут ішінде белгілі бір тақырып бойынша әр твитті немесе белгілі бір пайдаланушының қайталанбайтын твиттерін тарту сияқты күрделі сұраулар жасауға мүмкіндік береді.

1.Кітапханаларды импорттау

from tweepy import Stream

from tweepy import OAuthHandler

from tweepy.streaming import StreamListener

import json

import pandas as pd

import csv

import re #regular expressionfrom textblob import TextBlob

import string

import preprocessor as p

2. Twitter есептік деректері

#Twitter credentials for the app

consumer_key = 'xxxxx'

consumer_secret = 'xxxx'

access_key= 'xxxx'

access_secret = 'xxxx'

3. Есептік деректер

Тіркелгі деректерін Twipty-тің 'auth' деп аталатын OAuthHandler данасына жіберіңіз, содан кейін жоғарыда жасалған access_key және, access_secret арқылы set_access_token әдісін қолданыңыз.

#pass twitter credentials to tweepyauth = tweepy.OAuthHandler(consumer_key, consumer_secret)

auth.set_access_token(access_key, access_secret)

api = tweepy.API(auth)

4. CSV файлдары үшін файл жолдарын жасаңыз

#declare file paths as follows for three filestelemedicine_tweets = «data/telemedicine_data_extraction/telemedicine_data.csv»epilepsy_tweets = «data/telemedicine_data_extraction/epilepsy_data.csv»heart_stroke_tweets = «data/telemedicine_data_extraction/heart_stroke_tweets_data.csv»

5. Нені алу керек?Бағандар.

#columns of the csv fileCOLS = ['id', 'created_at', 'source', 'original_text','clean_text', 'sentiment','polarity','subjectivity', 'lang',

'favorite_count', 'retweet_count', 'original_author', 'possibly_sensitive', 'hashtags',

'user_mentions', 'place', 'place_coord_boundaries']

6. Эмоциялар мен эмодзилерді басқарыңыз. Эмодзи тану.

Смайлики: Көңіл-күйімізді талдауға кедергі келтіретін сөйлемнің ортасында ескі мектеп смайликтарының қажеті жоқ болғандықтан (Happy (бақытты) & Sad (қайғылы)) бірнеше эмотикондар жариялайық.

#HappyEmoticons

emoticons_happy = set([

':-)', ':)', ';)', ':o)', ':]', ':3', ':c)', ':>', '=]', '8)', '=)', ':}',

':^)', ':-D', ':D', '8-D', '8D', 'x-D', 'xD', 'X-D', 'XD', '=-D', '=D',

'=-3', '=3', ':-))', ":'-)", ":')", ':*', ':^*', '>:P', ':-P', ':P', 'X-P',

'x-p', 'xp', 'XP', ':-p', ':p', '=p', ':-b', ':b', '>:)', '>;)', '>:-)',

'<3'

])

# Sad Emoticons

emoticons_sad = set([

':L', ':-/', '>:/', ':S', '>: [', ':@', ':-(', ': [', ':-||', '=L', ':<',

':- [', ':-<', '=\\', '=/', '>:(', ':(', '>.<', ":'-(", ":'(", ':\\', ':-c',

':c', ':{', '>:\\', ';('

])

6.2 Эмодзиді тану

Бұл қажет болғандықтан, қазіргі уақытта адамдар твиттерде смайликтерсіз жарияламайды, өйткені іс жүзінде бұл басқа тілге айналды, әсіресе жасөспірімдер арасында, сондықтан сіз бұл үшін жоспар құрып алуыңыз керек.

#Emoji patterns

emoji_pattern = re.compile(" ["

u«\U0001F600-\U0001F64F» # emoticons

u«\U0001F300-\U0001F5FF» # symbols & pictographs

u«\U0001F680-\U0001F6FF» # transport & map symbols

u«\U0001F1E0-\U0001F1FF» # flags (iOS)

u«\U00002702-\U000027B0"

u«\U000024C2-\U0001F251"

"]+", flags=re.UNICODE)

Содан кейін біз алдымен бақытты да, қайғылы эмотикондық массив тізімдерін біріктіреміз:

#combine sad and happy emoticonsemoticons = emoticons_happy.union(emoticons_sad)

7. Тазалау әдісі (Препроцессор)

Мұнда өңдеу екі әдіспен жүзеге асырылады:

1-әдіс: твитті алдын-ала процессорды пайдалану. Препроцессор дегеніміз — Python-да жазылған твит деректерін алдын-ала өңдейтін кітапхана. Осы твиттер негізінде машиналық оқыту жүйелерін құру кезінде алдын-ала өңдеу қажет. Бұл кітапхана твиттерді тазалауды, талдауды немесе таңбалауды жеңілдетеді.

2-әдіс: Мен қосарланған тексеру функциясын және твитті қайта өңдеу функциясын қолмен анықтадым және біздің деректер 100 % тазартылғанына сенімді болу әрқашан жақсы.

7.1 1-әдіс

import preprocessor as p

PS: Мен бұны 1-қадамда импорттағанмын (Кітапханаларды импорттау бөлімі)

Мысалы:

clean_text = p.clean(twitter_text)

7.2 2-әдіс

Clean_tweets (твит) деп аталатын әдісті жариялаңыз және бұл әдіс твиттер-алдын-ала процессордан жойылған твиттердегі кейбір мәліметтерді және қос тексерістен тұратын смайликтер мен эмодзилерді тазартады, өйткені мобильді эмотикондардың кейбір ескі нұсқалары твиттер алдындағы процессордың таза әдісінде қолданылмайды (1-әдіс).

def clean_tweets(tweet):

stop_words = set(stopwords.words('english'))

word_tokens = word_tokenize(tweet)#after tweepy preprocessing the colon symbol left remain after #removing mentions

tweet = re.sub(r':', '', tweet)

tweet = re.sub(r'…', '', tweet)

#replace consecutive non-ASCII characters with a space

tweet = re.sub(r' [^\x00-\x7F]+',' ', tweet)#remove emojis from tweet

tweet = emoji_pattern.sub(r'', tweet)#filter using NLTK library append it to a string

filtered_tweet = [w for w in word_tokens if not w in stop_words]

filtered_tweet = []#looping through conditions

for w in word_tokens:

#check tokens against stop words, emoticons and punctuations

if w not in stop_words and w not in emoticons and w not in string.punctuation:

filtered_tweet.append(w)

return ' '.join(filtered_tweet)

#print(word_tokens)

#print(filtered_sentence)return tweet

8. Твиттерді шығарыңыз

Twitter-дің API-не қосылу үшін біз Twitter API-ге кіру үшін өте жақсы қолдау көрсетілетін Tweepy деп аталатын Python кітапханасын қолданамыз. Ол Python 2.6, 2.7, 3.3, 3.4, 3.5 және 3.6 қолдайды. Твиттердің басқа API-лары де бар, бірақ мен Tweepy-ді ұсынамын, өйткені ол ешқашан қиындық тудырмады.

Мен төменде толық кодты орналастырып, маңызды бөліктерді бөліп, сол бөлік не үшін екенін сипаттаймын:

8.1 Әдістің басы

def write_tweets(keyword, file):

#If the file exists, then read the existing data from the CSV file.

if os.path.exists(file):

df = pd.read_csv(file, header=0)

else:

df = pd.DataFrame(columns=COLS)

#page attribute in tweepy.cursor and iteration

for page in tweepy.Cursor(api.search, q=keyword,

count=200, include_rts=False,

Бұл әдіспен мен екі параметр жасадым; біреуі файл атауына арналған, сонымен қатар үш түрлі файл бар, және де файлға толтырылатын үш кілт сөз бар, бұл екінші параметрді түсіндіреді.

8.2 JSON

Twitter API-ден алған нәтижеңіз JSON форматында болады және ақпараттың жеткілікті мөлшері бар.

for status in page:

new_entry = []

status = status._jsonif status ['lang']!= 'en':

continue

JSON талданған барлық мәліметтерді әр итерацияға сақтау үшін біз жаңа жол = [] жол атауын жасаймыз. Біз тек деректерді шығаруды жалғастырамыз, егер бұл тіл ағылшын тілі болса, маған осы кезеңде твиттер тілін тілге аударуда қиындық туғызбайды.

8.3 RT және FAV ауыстырыңыз

* кодты іске қосқан кезде, төменде берілген код соңғы жүктеуден кейін өзгертілген санын ауыстырады.

if status [‘created_at’] in df [‘created_at’].values:

i = df.loc [df [‘created_at’] == status [‘created_at’]].index [0]

if status [‘favorite_count’]!= df.at [i, ‘favorite_count’] or \

status [‘retweet_count’]!= df.at [i, ‘retweet_count’]:

df.at [i, ‘favorite_count’] = status [‘favorite_count’]

df.at [i, ‘retweet_count’] = status [‘retweet_count’]

continue

8.4 Алдын ала өңдеу уақыты

Енді твиттерді өңдеудің № 1 әдісін қолданатын кез келді.

clean_text = p.clean(status ['text'])

Қосымша өңдеу үшін clean_tweet-2 әдісін шақырыңыз.

filtered_tweet=clean_tweets(clean_text)

8.5 Сезім

Сезім сипаты Sentiment (полярлық, субъективтілік) пішінінің аталған жиынын қайтарады. Полярлық есеп — бұл [-1.0, 1.0] ауқымындағы өзгермелі. Ол субъективтілік — бұл [0.0, 1.0] ауқымындағы құбылыс, мұнда 0.0 өте объективті және 1.0 өте субъективті.

filtered_tweet түрлі айнымалыдағы сезім(sentiment), полярлық (polarity) және субъективтілікті(subjectivity) бөлек сақтадым.

blob = TextBlob(filtered_tweet)

Sentiment = blob.sentiment

polarity = Sentiment.polarity

subjectivity = Sentiment.subjectivity

8.6 All қосымшаны қосыңыз

JSON талданған деректерін біз жасаған жол массивіне қосыңыз:

new_entry += [status ['id'], status ['created_at'],

status ['source'], status ['text'],filtered_tweet, Sentiment,polarity,subjectivity, status ['lang'],

status ['favorite_count'], status ['retweet_count']]

Бұл қосымшалар — біз Tweepy-ті пайдаланып twitter-ден алынған деректер. Бірізділікті сақтау үшін біз автордың түпнұсқалық атын (твиттің твиттер профилі) жинаймыз.

new_entry.append(status ['user'] ['screen_name'])

8.7 NSFW мазмұны бар твиттер

Possible_sensitive твиттер мәліметтерінің бағаны Twitter-де NSFW мазмұнына арналған.

try:

is_sensitive = status ['possibly_sensitive']

except KeyError:

is_sensitive = None

new_entry.append(is_sensitive)

8.8 Хэштегтер және твиттің басқа пайдаланушылары

hashtags = ", ".join([hashtag_item ['text'] for hashtag_item in status ['entities'] ['hashtags']])new_entry.append(hashtags) #append the hashtagsmentions = ", ".join([mention ['screen_name'] for mention in status ['entities'] ['user_mentions']])new_entry.append(mentions) #append the user mentions

8.9 Твиттердің орналасқан жерін анықтаңыз

Мен твиттің орналасқан жерін бақылауға тырысамын, бірақ бұл оңай емес және мүмкін емес, өйткені қолданушылардың көпшілігі Twitter-ге әрқашан өз орындарына кіруге мүмкіндік бермейді. Бірақ мен бәрібір осылай жүрдім:

try:

coordinates = [coord for loc in status ['place'] ['bounding_box'] ['coordinates'] for coord in loc]

except TypeError:

coordinates = None

new_entry.append(coordinates)

«Твиттер-орналасуды» алу кезінде бізде кездесетін қиындыққа байланысты, мен твиттің орналасқан жерінің орнына пайдаланушының профилін біле алдым, өйткені ол негізінен пайдаланушы орналасқан аймақ пен ел туралы түсінік береді.

try:

location = status ['user'] ['location']

except TypeError:

location = ''

new_entry.append(location)

8.10 Деректер жинауды аяқтаңыз

Бітуге сәл қалды. Бізде қазір барлық қажетті мәліметтер бар, оны дерек қорына жақсылап орап алайық.

single_tweet_df = pd.DataFrame([new_entry], columns=COLS)

df_final = df.append(single_tweet_df, ignore_index=True)

9. CSV файлына жазыңыз

csvFile = open(file, 'a',encoding='utf-8')df.to_csv(csvFile, mode='a', columns=COLS, index=False, encoding=«utf-8")

10. Кілт сөздерді айтыңыз

telemedicine_keywords = '#telemedicine OR #telehealth OR #digitalhealth OR #ehealth OR #digitalpatient OR #digitaltransformation'Epilepsy_keywords = '#Epilepsy OR #epilepsyawareness OR #epilepsyaction OR #epilepsyalerts OR #epilepsybed OR #epilepsycongres OR #epilepsysurgery OR #epilepsysurgery OR #Epilepsytreatment OR #seizures OR #seizurefree'HeartDisease_keywords = '#HeartDisease OR #stroke OR #Stroking OR #strokepatient OR #StrokeSurvivor OR #hearthealth OR #Stroke OR #HeartFailure'

11. Біздің әдістерді қосу.

write_tweets(telemedicine_keywords, telemedicine_tweets)

write_tweets(Epilepsy_keywords, epilepsy_tweets)

write_tweets(HeartDisease_keywords, heart_stroke_tweets)

12. Біз жасаған CSV файлдарымен танысыңыз.

Основные термины (генерируются автоматически): CSV, JSON, NSFW, мена, FAV, NLTK, бар.


Ключевые слова

twitter, файлдар, эмодзи, препроцессор

Похожие статьи

Opinion monitoring and analysis in social networks | Статья в журнале...

API, XML, REST, JSON, задача, JSP, POST, URI, HTML, вызов функции. Ключевые слова. Ява, электронное обучение, ОТДЫХ, MongoDB.

Основные термины (генерируются автоматически): JSON, XML, API, набор данных, данные, SVG, HTML, формат, CSV, DOT.

Виртуальная онлайн-доска как платформа создания мини-проектов...

В недалеком прошлом закрытие класса или школы на карантин вызывало много вопросов и проблем: как объяснить материал всем и провести урок, не превышая длительности урока в 40 минут?

Влияние развлечений на развитие творческого воображения...

Препринт статьи. Эстетическое воспитание — один из важных элементов в системе всестороннего развития личности Человек, умеющий ценить прекрасное, обладающий чувством эстетического отношения к действительности, воспринимает мир во всём многообразии красок...

Опубликовать статью в журнале «Образование и воспитание»...

Сразу же после оплаты. Моментально после онлайн-оплаты на сайте появится препринт вашей статьи (у вас будет ссылка на страницу с публикацией). Кроме этого, в личном кабинете сразу же появится справка на фирменном бланке издательства и свидетельство о публикации статьи.

Опубликовать статью в сборнике конференции «Проблемы...»

Сразу же после оплаты. Моментально после онлайн-оплаты на сайте появится препринт вашей статьи (у вас будет ссылка на страницу с публикацией). Кроме этого, в личном кабинете сразу же появится справка на фирменном бланке издательства и сертификаты участников конференции...

Критерии корректности рекламы как формы социальной...

Реклама — навязчивая, зачастую вызывающая раздражение, когда она прерывает просмотр фильма, регулярно появляется в наших почтовых ящиках или высвечивается в виде СМС на экранах наших смартфонов — она преследует нас повсюду.

Похожие статьи

Opinion monitoring and analysis in social networks | Статья в журнале...

API, XML, REST, JSON, задача, JSP, POST, URI, HTML, вызов функции. Ключевые слова. Ява, электронное обучение, ОТДЫХ, MongoDB.

Основные термины (генерируются автоматически): JSON, XML, API, набор данных, данные, SVG, HTML, формат, CSV, DOT.

Виртуальная онлайн-доска как платформа создания мини-проектов...

В недалеком прошлом закрытие класса или школы на карантин вызывало много вопросов и проблем: как объяснить материал всем и провести урок, не превышая длительности урока в 40 минут?

Влияние развлечений на развитие творческого воображения...

Препринт статьи. Эстетическое воспитание — один из важных элементов в системе всестороннего развития личности Человек, умеющий ценить прекрасное, обладающий чувством эстетического отношения к действительности, воспринимает мир во всём многообразии красок...

Опубликовать статью в журнале «Образование и воспитание»...

Сразу же после оплаты. Моментально после онлайн-оплаты на сайте появится препринт вашей статьи (у вас будет ссылка на страницу с публикацией). Кроме этого, в личном кабинете сразу же появится справка на фирменном бланке издательства и свидетельство о публикации статьи.

Опубликовать статью в сборнике конференции «Проблемы...»

Сразу же после оплаты. Моментально после онлайн-оплаты на сайте появится препринт вашей статьи (у вас будет ссылка на страницу с публикацией). Кроме этого, в личном кабинете сразу же появится справка на фирменном бланке издательства и сертификаты участников конференции...

Критерии корректности рекламы как формы социальной...

Реклама — навязчивая, зачастую вызывающая раздражение, когда она прерывает просмотр фильма, регулярно появляется в наших почтовых ящиках или высвечивается в виде СМС на экранах наших смартфонов — она преследует нас повсюду.

Задать вопрос