CoderCastrov logo
CoderCastrov
Парсер

Очистка данных о спортивных новостях от Specrom Analytics

Очистка данных о спортивных новостях от Specrom Analytics
просмотров
2 мин чтение
#Парсер
Table Of Content

    Целью данного поста является использование различных пакетов Python для обработки и исследования данных, полученных с помощью API новостей Specrom Analytics для дальнейшего использования в анализе естественного языка (NLP).

    Начнем с загрузки данных о спортивных новостях за последние 24 часа. Вы можете ознакомиться с тем, как работает API новостей здесь

    input = {
      "domains": "usatoday.com",
      "topic": "sport",
      "q": "",
      "qInTitle": "",
      "content": "false",
      "page": "1",
      "author_only": "false"
    }
    client = Algorithmia.client('simOse7pPzy2I5tZYeVGSL2W+z11')
    algo = client.algo('specrom/LatestNewsAPI/0.1.6')
    algo.set_options(timeout=300) # optional
    results =algo.pipe(input).result
    results

    Файл результатов является файлом JSON, который содержит различную информацию о заголовке новости, авторе и ссылках на изображения, содержащиеся на веб-сайте, а также ссылку на источник новостей.

    {'Article': [{'author': '[]',
       'description': 'The Chicago Bears will face the Detroit Lions in Week 13. Will the Bears be on in your part of the country?',
       'publishedAt': '2020-12-05',
       'source_name': 'Bears Wire',
       'source_url': 'usatoday.com',
       'title': 'NFL Broadcast Map: Will Bears vs. Lions air in your area?',
       'url': 'https://bearswire.usatoday.com/2020/12/05/chicago-bears-detroit-lions-week-13-broadcast-map/',
       'urlToImage': 'https://bearswire.usatoday.com/wp-content/uploads/sites/63/2020/09/43061694d3f643e18525491e35c45608.jpg?w=1024&h=576&crop=1'},
    .....

    Это представляет собой снимок того, как будет выглядеть файл. Python предоставляет простой способ нормализации JSON-файла в таблицу данных с помощью только Pandas.

    import pandas as pd
    df=pd.json_normalize(results,record_path=['Article'])
    df

    Поскольку мы замечаем, что в некоторых случаях имена источников содержат пустые элементы, было бы интересно удалить их, если их количество не так велико, как количество непустых элементов. Мы сделаем это позже, после того, как узнаем количество пустых элементов.

    df.info()
    
    Отображенная информация

    Из информации мы заключаем, что только заголовок, имя источника (имя источника новостей) и описание. Было бы интересно сохранить авторов, если бы API мог получить их с веб-сайта.

    df=df.drop(columns['author','source_url','publishedAt','urlToImage','url']
    Очищенные данные

    Поскольку имя источника в общем случае содержит много повторяющихся слов (в основном два слова Wire и Junkie), я решил удалить их, поскольку они не вносят вклада в анализ (они в основном используются usatoday.com как ссылка для браузера, а другое слово в общем случае описывает команду, такую как Trojans, или лиги, такие как NFL или MMA).

    df["source_name"]=df["source_name"].str.replace('Wire','')
    df["source_name"]=df["source_name"].str.replace('Junkie','')
    df
    Окончательно очищенные данные

    После очистки данных было бы интересно узнать, какие новости публикует USAToday по спорту, просто посмотрев на их имя источника.

    Подсчет количества вхождений определенного источника

    USAToday использует источники для организации различных тем, чтобы подписчики этих тем могли получать уведомления о своих любимых темах. Используя эти данные, мы видим, что большая часть вчерашних опубликованных новостей относится к множеству команд NFL.

    Целью этого было показать, как мы можем очистить данные, импортированные из API Specrom Analysis.