From feb3a4b8edaa66af15f8d033a357bf35f15cc253 Mon Sep 17 00:00:00 2001 From: matt Date: Tue, 11 Apr 2023 21:42:05 -0700 Subject: [PATCH] add progress report. add scraping for downloading and parsing. add joining of bias dataset. add broken links checker. --- .gitignore | 1 + dist/jensen_577_progress_report.pdf | Bin 0 -> 78946 bytes docs/progress.md | 105 ++++++++++++++++++++++++++++ docs/progress_spec_1.docx | Bin 0 -> 14103 bytes docs/progress_spec_2.docx | Bin 0 -> 14975 bytes src/broken_links.py | 23 ++++++ src/data.py | 9 +++ src/join_bias.py | 46 ++++++++++++ src/scrape.py | 92 ++++++++++++++++++++++++ 9 files changed, 276 insertions(+) create mode 100644 dist/jensen_577_progress_report.pdf create mode 100644 docs/progress.md create mode 100644 docs/progress_spec_1.docx create mode 100644 docs/progress_spec_2.docx create mode 100644 src/broken_links.py create mode 100644 src/join_bias.py create mode 100644 src/scrape.py diff --git a/.gitignore b/.gitignore index c682433..cef562a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.csv *.swp +__pycache__ diff --git a/dist/jensen_577_progress_report.pdf b/dist/jensen_577_progress_report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7160deda0961381a88471ab3d558c9f27dd4247b GIT binary patch literal 78946 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Νx=5gP=z_KX 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 A3jhEB literal 0 HcmV?d00001 diff --git a/docs/progress.md b/docs/progress.md new file mode 100644 index 0000000..0ad60de --- /dev/null +++ b/docs/progress.md @@ -0,0 +1,105 @@ +# Data Mining - CSCI 577 + +# Project Status Report I + +*2023-04-04* + +## Participants + +Matt Jensen + +## Overarching Purpose + +I hope to use a dataset of new articles to track the polarization of news over time. +I have a hypothesis that news has become more polarized superficially, but has actually converged into only two dominate views points. +I think there is a connection to be made to other statistics, like voting polarity in congress, or income inequality, or consolidation of media into the hands of the few. + +## Data Source + +To test this thesis, I will crawl the archives of [memeorandum.com](https://www.memeorandum.com/) for news stories from 2006 onward. +I will grab the title, author, publisher, published date, url and related discussions and store it in a .csv. +The site also has a concept of references, where a main, popular story may be covered by other sources. +So there is a concept of link similarity that could be explored in this analysis too. + +## Techniques + +I am unsure of which technique specifically will work best, but I believe an unsupervised clustering algorithm will serve me well. +I think there is a way to test the ideal number of clusters should exist to minimize the error. +This could be a good proxy for how many 'viewpoints' are allowed in 'mainstream' news media. + +\newpage + +# Project Status Report II + +*2023-04-11* + +## Participants + +Matt Jensen + +## Dataset Description + +The dataset I will be using for my analysis has the following attributes: + +- title + - a text description of the news item. + - discrete, nominal. + - ~800k distinct titles. +- url + - a text description and unique identifier for the news item. + - discrete, nominal. + - ~700k distinct urls. +- author + - a text name. + - discrete, nominal. + - ~42k distinct authors. +- publisher + - a text name. + - discrete, nominal. + - ~13k distinct outlets. +- related links + - an adjacency matrix with the number of common links between two publishers. + - continuous, ratio. + - counts are less than total number of stories, obviously. +- published date + - the date the article was published. + - continuous, interval. + - ~5.5k distinct dates. + +In addition, I will augment the data with the following attributes: + +- title word embedding + - a vectorized form of the title from the output of a LLM or BERT model which embeds semantic meaning into the sentence. + - continuous, nominal. + - 800k vectors, of 768 values. +- political bias of the publisher + - a measure of how voters feel the political leanings of the publisher map to the political parties (Democrat/Republican). + - continuous, ordinal. + - ~30% of the publishers are labelled in [allsides.com](https://www.allsides.com/media-bias/ratings) ratings. +- estimated viewership of the publisher + - an estimate of the size of the audience that consumes the publisher's media. + - continous, ratio. + - I still need to parse [The Future of Media Project](https://projects.iq.harvard.edu/futureofmedia/index-us-mainstream-media-ownership) data to get a good idea of this number. +- number of broken links + - I will navigate all the links and count the number of 200, 301 and 404 status codes return. + - discrete, nominal + - size of this dataset is still unknown. + +## Purpose + +I want to analyze data from the news aggregation site [memeorandum.com](https://www.memeorandum.com/) and combine it with media bias measurements from [allsides.com](https://www.allsides.com/media-bias/ratings). +My goal for the project is to cluster the data based on the word embeddings of the titles. +I will tokenize each title, and use a BERT style model to generate word embeddings from the token. + +Word embedding output from language models encode semantic meaning of sentences. +Specifically, BERT models output embeddings of 768 dimensional space. +Clustering these vectors will map from this semantic space to a lower dimensional cluster space. + +My understanding of cluster leads me to believe that this lower dimensional space encodes meaning like similarity. +In this way, I hope to find outlets that tend to publish similar stories and group them together. +I would guess that this lower dimensional space will reflect story quantity and political leanings. +I would expect new outlets with similar quantity of stories and political leanings to be grouped together. +Another goal is to look at the political alignment over time. +I will train a classifier to predict political bias based on the word embeddings as well. +There is a concept of the [Overton Window](https://en.wikipedia.org/wiki/Overton_window) and I would be curious to know if title of new articles could be a proxy for the location of the overton window over time. + diff --git a/docs/progress_spec_1.docx b/docs/progress_spec_1.docx new file mode 100644 index 0000000000000000000000000000000000000000..6379e3965aa78b20f0f336c3c2141fe8b03d415a GIT binary patch literal 14103 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 P0DZtf8Vca}?e2d7Gd4;j literal 0 HcmV?d00001 diff --git a/docs/progress_spec_2.docx b/docs/progress_spec_2.docx new file mode 100644 index 0000000000000000000000000000000000000000..8ab6bf20da4c137a20aa372645fe0f00a9359892 GIT binary patch literal 14975 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 1) as dups +from cte +""") + +sns.histplot(x=hist['cnt']) +plt.show() diff --git a/src/data.py b/src/data.py index c55324c..e59878c 100644 --- a/src/data.py +++ b/src/data.py @@ -6,6 +6,15 @@ from enum import Enum class Data(str, Enum): Titles = 'titles' +def data_dir(): + return Path(os.environ['DATA_MINING_DATA_DIR']) + +def connect(): + DATA_DIR = Path(os.environ['DATA_MINING_DATA_DIR']) + # APP_DIR = Path(os.environ['DATA_MINING_APP_DIR']) + DB = duckdb.connect(str(DATA_DIR / 'project.duckdb')) + return DB + def from_db(t: Data): DATA_DIR = Path(os.environ['DATA_MINING_DATA_DIR']) # APP_DIR = Path(os.environ['DATA_MINING_APP_DIR']) diff --git a/src/join_bias.py b/src/join_bias.py new file mode 100644 index 0000000..a268f51 --- /dev/null +++ b/src/join_bias.py @@ -0,0 +1,46 @@ +import click +import duckdb +from data import connect +import polars as ps + +DB = connect() +DATA_DIR = Path(os.environ['DATA_MINING_DATA_DIR']) +bias = ps.read_csv(DATA_DIR / 'allsides_bias.csv', sep="|") + +DB.sql(""" + with cte as ( + select + outlet + ,count(1) as stories + from stories + group by outlet + ) + ,total as ( + select + sum(stories) as total + from cte + ) + select + cte.outlet + ,cte.stories + ,bias.outlet + ,bias.lean + ,sum(100 * (cte.stories / cast(total.total as float))) over() as rep + ,total.total + from cte + join bias + on jaro_winkler_similarity(bias.outlet, cte.outlet) > 0.9 + cross join total.total +""") + +DB.sql(""" + select + outlet + ,count(1) as stories + from stories + group by outlet + order by count(1) desc + limit 50 +""") + +outlets diff --git a/src/scrape.py b/src/scrape.py new file mode 100644 index 0000000..bff666f --- /dev/null +++ b/src/scrape.py @@ -0,0 +1,92 @@ +from datetime import date, timedelta +import datetime +import requests +from pathlib import Path +import click +from tqdm import tqdm +from data import data_dir +from lxml import etree +import pandas as pd + +@click.group() +def cli(): + ... + +@cli.command() +@click.option('-o', 'output_dir', type=Path, default=data_dir() / "memeorandum") +def download(output_dir): + day = timedelta(days=1) + cur = date(2005, 10, 1) + end = date.today() + dates = [] + while cur <= end: + dates.append(cur) + cur = cur + day + date_iter = tqdm(dates, postfix="test") + for i in date_iter: + date_iter.set_postfix_str(f"{i}") + save_as = output_dir / f"{i.strftime('%y-%m-%d')}.html" + if save_as.exists(): + continue + url = f"https://www.memeorandum.com/{i.strftime('%y%m%d')}/h2000" + r = requests.get(url) + with open(save_as, 'w') as f: + f.write(r.text) + + +@cli.command() +@click.option('-d', '--directory', type=Path, default=data_dir() / "memeorandum") +@click.option('-o', '--output_dir', type=Path, default=data_dir()) +def parse(directory, output_dir): + directory = data_dir() / "memeorandum" + parser = etree.HTMLParser() + pages = [f for f in directory.glob("*.html")] + published = [] + others = [] + #page = pages[0] + page_iter = tqdm(pages, postfix="starting") + for page in page_iter: + page_iter.set_postfix_str(f"{page}") + date = datetime.datetime.strptime(page.stem, '%y-%m-%d') + # tree = etree.parse(str(page), parser) + tree = etree.parse(str(page), parser) + root = tree.getroot() + items = root.xpath("//div[contains(@class, 'item')]") + + for item in items: + out = dict() + citation = item.xpath('./cite') + if not citation: + continue + author = citation[0] + if author.text: + author = ''.join(author.text.split('/')[:-1]).strip() + else: + author = '' + out['author'] = author + url = citation[0].getchildren()[0].get('href') + publisher = citation[0].getchildren()[0].text + out['publisher'] = publisher + out['publisher_url'] = url + title = item.xpath('.//strong/a')[0].text + out['title'] = title + item_id = hash((title,page.stem,url)) + out['id'] = item_id + published.append(out) + + related = item.xpath(".//span[contains(@class, 'mls')]/a") + # relation = related[0] + for relation in related: + another = dict() + another['url'] = relation.get('href') + another['publisher'] = relation.text + another['parent_id'] = item_id + others.append(another) + df = pd.DataFrame(published) + df.to_csv(output_dir / 'stories.csv', sep='|', index=False) + df = pd.DataFrame(others) + df.to_csv(output_dir / 'related.csv', sep='|', index=False) + + +if __name__ == "__main__": + cli()