PythonでYahoo!ニュースのトピックス記事をカテゴリ別に詳細なジャンルに分ける方法について、RSSフィードを使ったデータ取得から、機械学習を用いたジャンル分類までの手順を解説します。プログラミング初学者の方でも実行可能な方法を紹介します。
1. Yahoo!ニュースのRSSフィードの取得
まず最初に、Yahoo!ニュースのトピックス記事をRSSフィードで取得する必要があります。Pythonでは、`feedparser`ライブラリを使用して、RSSフィードを簡単に解析できます。以下のコード例では、RSSフィードを取得し、記事のタイトルを抽出します。
import feedparser
rss_url = 'https://news.yahoo.co.jp/rss/your_rss_feed.xml'
feed = feedparser.parse(rss_url)
for entry in feed.entries:
print(entry.title)
2. ニュース記事のカテゴリを特定する
次に、各記事がどのカテゴリに分類されるかを特定します。例えば、「スポーツ」や「経済」などのカテゴリを識別するには、ニュース記事のタイトルや概要から、事前にカテゴリを予測するモデルを作成する方法があります。
簡単な方法としては、キーワードによるルールベースの分類が考えられます。例えば、「MLB」や「サッカー」などのキーワードを含むタイトルは「スポーツ」に分類する、という方法です。しかし、より高度な分類には機械学習を使ったアプローチが効果的です。
3. 機械学習モデルを用いたジャンル分類
機械学習を用いて記事を分類する場合、`sklearn`ライブラリを使って簡単な分類モデルを作成できます。まずは記事タイトルを特徴量(例えば、単語の頻度など)に変換し、これを基にジャンルを予測するモデルをトレーニングします。
以下のコード例では、`TfidfVectorizer`を用いて記事タイトルをベクトル化し、`MultinomialNB`でナイーブベイズ分類器を使ってジャンル分類を行います。
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# データセットの作成
# 'titles' は記事タイトル、'labels' はそのカテゴリ
X_train, X_test, y_train, y_test = train_test_split(titles, labels, test_size=0.2, random_state=42)
# TF-IDF ベクトル化
vectorizer = TfidfVectorizer()
X_train_tfidf = vectorizer.fit_transform(X_train)
X_test_tfidf = vectorizer.transform(X_test)
# モデルのトレーニング
model = MultinomialNB()
model.fit(X_train_tfidf, y_train)
# 予測と評価
y_pred = model.predict(X_test_tfidf)
print('Accuracy:', accuracy_score(y_test, y_pred))
4. データの可視化と分析
分類された記事をさらに分析するために、結果をCSV形式で保存し、可視化ツール(例えば、`matplotlib`や`seaborn`)を使って分析することができます。例えば、各カテゴリごとの記事数を棒グラフで表示し、どのジャンルの記事が多く配信されているかを視覚的に確認できます。
import matplotlib.pyplot as plt
import pandas as pd
# 分類結果をデータフレームに保存
df = pd.DataFrame({'Category': y_pred})
# カテゴリごとの記事数を集計
category_counts = df['Category'].value_counts()
# 棒グラフの作成
category_counts.plot(kind='bar')
plt.title('記事カテゴリの分布')
plt.xlabel('カテゴリ')
plt.ylabel('記事数')
plt.show()
まとめ
Pythonを使ってYahoo!ニュースのトピックス記事をカテゴリ別に詳細なジャンルに分ける方法を紹介しました。最初にRSSフィードを取得し、機械学習やルールベースで記事を分類することが可能です。最後に、結果をCSVで保存し、可視化して分析することもできます。この方法を使って、どのジャンルの記事が多いのかを簡単に把握することができるようになります。

コメント