Файл: Основы проектирования программ. Этапы создания программного обеспеченияКурсовая работа.pdf
Добавлен: 30.03.2023
Просмотров: 313
Скачиваний: 2
Работа с API Twitter
Прежде, чем начать пользоваться API Twitter, необходимо зарегистрироваться в самой социальной сети, а затем зарегистрировать своё приложение на сайте [37].
После этого получаем токены доступа (Access token и Access Token secret) и пользовательские ключи (consumer_key, consumer_secret), с помощью которых можем подключаться к API и использовать его функционал.
Нам необходима для использования только одна функция GetSearch(key_word, lang="ru", count=100, result_type=result_type, since=date), где key_word – слово или фраза, по которой будет происходить поиск, lang – параметр, указывающий на то, на каком языке искать твиты, count – максимальное количество записей, которое можно получить при поиске, result_type принимает на вход «recent» или «popular», соответственно поиск идёт по популярным твитам, либо по последним по дате опубликования, since – указывает дата, с которой будет начинаться поиск.
К сожалению, с недавних пор у Twitter появилось много ограничений по доступу к их API: поиск происходит только по точным совпадениям с поисковым запросом, максимальное число твитов, которое можно получить с одного запроса, равняется 100, глубина поиска ограничена неделей, количество запросов за 15 минут не должно превышать 180.
Таким образом, чтобы частично избежать этих проблем, было решено использовать библиотеку pymorphy2, благодаря которой запрос пользователя предобрабатывается: находятся все словоформы, из них образуются все возможные комбинации, по каждому из которых делается запрос на сервер Twitter.
Далее найденные твиты по каждому из запросов проходят анализ тональности. Если количество всех комбинаций превышает число 180, то поиск осуществляется по первым 180 из них.
2.3Структура web-сервиса
Для понимания структуры созданного web-сервиса представим дерево файлов и каталогов:
-
-
- diploma
- settings.py (приложение 4)
- urls.py (приложение 5)
- wsgi.py (приложение 6)
- SentAnalyzer
- static
- style.css (приложение 7)
- templates
- SentAnalyzer
- static
- diploma
-
error.html (приложение 8)
home_page.html (приложение 9)
-
-
-
-
- apps.py (приложение 10)
- forms.py (приложение 11)
- SentimentAnalyzer.py (приложение 12)
- urls.py (приложение 13)
- views.py (приложение 14)
-
-
-
Интерфейс web-сервиса
На стартовой странице (рис. 21) сервиса находится поле, в которое надо ввести слово или фразу, по которому будет осуществляться поиск в Twitter. Также можно выбрать между поиском по популярным или последним твитам. Более того, можно осуществить выбор даты, с которой будет осуществляться поиск. Заполнив все поля, жмём кнопку «Отправить».
Рис. 21. Интерфейс web-сервиса
Затем пользователя перенаправляют на страницу с результатами (рис. 22), которые представлены в виде графика. Черный столбец показывает процентное соотношение твитов, которые свёрточная нейросеть не смогла отнести ни к одному из классов.
Рис. 22. Результат работы web-сервиса
Если пользователь достиг лимита по количеству запросов (180) менее, чем за 15 минут. То ему выводится на экран сообщение (рис. 23).
ЗАКЛЮЧЕНИЕ
Целью данной работы являлась реализация web-сервиса, способного классифицировать сообщения из социальной сети Twitter на 4 класса: позитивный, негативный, реклама/поздравления и неопределенный.
В ходе данной работы был осуществлён анализ существующих подходов и методов для предобработки и дальнейшей классификации текстов, по результатам которого были выбраны метод Word2Vec в совокупности со свёрточной нейронной сетью. Реализация данного подхода была осуществлена на языке программирования Python. По результатам обучения этих методов была достигнута точность классификации на тестовой выборке: для позитивного класса - 0.71653 %, для негативного - 0.71592 %, для класса с рекламой/поздравлениями - 0.97914 %, для неопределенного класса - 0.78565 %. Реализация самого web-сервиса проходила с использованием фреймворка Django и API Twitter.
СПИСОК ЛИТЕРАТУРЫ
[1] Technology Feels Like It’s Accelerating — Because It Actually Is. URL: https://singularityhub.com/2016/03/22/technology-feels-like-its-accelerating-because-it-actually-is/#sm.0000111fb880veofw901qi52f9mu9 (дата обращения: 26.08.2019)
[2] Top 15 Most Popular Social Networking Sites and Apps [August 2018]. URL: https://www.dreamgrow.com/top-15-most-popular-social-networking-sites/ (дата обращения: 26.08.2019)
[3] MonkeyLearn. Sentiment Analysis. Nearly Everything You Need to Know. URL: https://monkeylearn.com/sentiment-analysis/ (дата обращения: 26.08.2019)
[4] Пазельская А.Г., Соловьев А.Н. Метод определения эмоций в текстах на русском языке. С. 510 – 520. URL: http://www.dialog-21.ru/digests/dialog2011/materials/ru/pdf/50.pdf (дата обращения: 26.08.2019)
[5] Машинное обучение. URL: http://www.machinelearning.ru/wiki/index.php?title=%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5 (дата обращения: 26.08.2019)
[6] Artificial neural network. URL: https://en.wikipedia.org/wiki/Artificial_neural_network (дата обращения: 26.08.2019)
[7] Метод обратного распространения ошибки. URL: https://neurohive.io/ru/osnovy-data-science/obratnoe-rasprostranenie/ (дата обращения: 26.08.2019)
[8] Д. А. Кормалев. Приложения методов машинного обучения в задачах анализа текста. URL: https://docplayer.ru/26889690-Prilozheniya-metodov-mashinnogo-obucheniya-v-zadachah-analiza-teksta.html (дата обращения: 26.08.2019)
[9] Sara Rosenthal, Noura Farra, Preslav Nakov. SemEval-2017 Task 4: Sentiment Analysis in Twitter. URL: https://www.aclweb.org/anthology/S17-2088 (дата обращения: 26.08.2019)
[10] Классификация. URL: http://www.machinelearning.ru/wiki/index.php?title=%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F (дата обращения: 26.08.2019)
[11] Beyond Accuracy: Precision and Recall. URL: https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c (дата обращения: 26.08.2019)
[12] Оценка классификатора (точность, полнота, F-мера). URL: http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html (дата обращения: 26.08.2019)
[13] Word Embeddings in NLP and its Applications. URL: https://hackernoon.com/word-embeddings-in-nlp-and-its-applications-fab15eaf7430 (дата обращения: 26.08.2019)
[14] Deerwester S., Dumais S.T., Furnas G.W., Landauer T.K., Harshman R. Indexing by Latent Semantic Analysis // The American Society for Information Science. 1990. Vol. 41. P. 391-407. URL: http://lsa.colorado.edu/papers/JASIS.lsi.90.pdf (дата обращения: 26.08.2019)
[15] Jeffrey Pennington, Richard Socher, Christopher D. Manning. GloVe: Global Vectors for Word Representation. URL: https://nlp.stanford.edu/pubs/glove.pdf (дата обращения: 26.08.2019)
[16] Tomas Mikolov, Kai Chen, Greg Corrado, Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space URL: https://arxiv.org/pdf/1301.3781v1.pdf (дата обращения: 26.08.2019)
[17] NLPx Tales of Data Science. Word2Vec. URL: http://nlpx.net/archives/179 (дата обращения: 26.08.2019)
[18] Artificial neural network. URL: https://arxiv.org/pdf/1812.05737.pdf (дата обращения: 26.08.2019)
[19] Abdul Arfat Mohammed, Venkatesh Umaashankar. Effectiveness of Hierarchical Softmax in Large Scale Classification Task. URL: https://arxiv.org/pdf/1812.05737.pdf (дата обращения: 26.08.2019)
[20] G. Zweig, C.J.C. Burges. The Microsoft Research Sentence Completion Challenge, Microsoft Research Technical Report MSR-TR-2011-129, 2011.
[21] Jeffrey Pennington, Richard Socher, Christopher D. Manning. GloVe: Global Vectors for Word Representation. URL: https://nlp.stanford.edu/pubs/glove.pdf (дата обращения: 26.08.2019)
[22] Mathieu Cliche. BB twtr at SemEval-2017 Task 4: Twitter Sentiment Analysis with CNNs and LSTMs URL: https://arxiv.org/pdf/1704.06125.pdf (дата обращения: 26.08.2019)
[23] Andrew McCallumzy Kamal Nigam. A Comparison of Event Models for Naive Bayes Text Classification. URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.9324&rep=rep1&type=pdf (дата обращения: 26.08.2019)
[24] Kamal Nigamy, John Lafferty, Andrew McCallum. Using Maximum Entropy for Text Classification. URL: http://www.kamalnigam.com/papers/maxent-ijcaiws99.pdf (дата обращения: 26.08.2019)
[25] Glenn M. Fung, O. L. Mangasarian. Multicategory Proximal Support Vector Machine Classifiers. URL: https://link.springer.com/content/pdf/10.1007%2Fs10994-005-0463-6.pdf (дата обращения: 26.08.2019)
[26] Duyu Tang, Bing Qin, Ting Liu. Document Modeling with Gated Recurrent Neural Network for Sentiment Classification. URL: https://www.aclweb.org/anthology/D15-1167 (дата обращения: 26.08.2019)
[27] Yoon Kim. Convolutional Neural Networks for Sentence Classification. URL: https://arxiv.org/pdf/1408.5882.pdf (дата обращения: 26.08.2019)
[28] Ye Zhang, Byron C. Wallace. A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification URL: https://arxiv.org/pdf/1510.03820.pdf (дата обращения: 26.08.2019)
[29] Shaojie Bai, J. Zico Kolter, Vladlen Koltun. An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling. URL: https://arxiv.org/pdf/1803.01271.pdf (дата обращения: 26.08.2019)
[30] NLTK 3.4.1 documentation. URL: https://www.nltk.org (дата обращения: 26.08.2019)
[31] Gensim. URL: https://radimrehurek.com/gensim/ (дата обращения: 26.08.2019)
[32] Keras documentation. URL: https://keras.io/ (дата обращения: 26.08.2019)
[33] Python-twitter’s documentation. URL: https://python-twitter.readthedocs.io/en/latest/index.html (дата обращения: 26.08.2019)
[34] Web framework Django. URL: https://www.djangoproject.com/start/overview/ (дата обращения: 26.08.2019)
[35] Рубцова Ю. Корпус русскоязычных текстов из социальной сети Twitter. URL: http://study.mokoron.com/ (дата обращения: 26.08.2019)
[36] Converts MySQL dump to SQLite3 compatible dump. URL: https://github.com/dumblob/mysql2sqlite (дата обращения: 26.08.2019)
[37] Twitter API. URL: https://developer.twitter.com/en/docs.html (дата обращения: 26.08.2019)
Приложение
Приложение 1. Реализация и обучение Word2Vec
Приложение 2. Создание баз с неопределенными твитами и твитами с рекламой и поздравлениями
Приложение 3. Реализация и обучение свёрточной нейронной сети



Приложение 4. Файл settings.py
Приложение 5. Файл urls.py
Приложение 6. Файл wsgi.py
Приложение 7. Файл style.css
Приложение 8. Файл error.html
Приложение 9. Файл home_page.html
Приложение 10. Файл apps.py
Приложение 11. Файл forms.py
Приложение 12. Файл SentimentAnalyzer.py