Skip to content

cacaoMath/rss_collect_api

Repository files navigation

RSS colelct API

概要

  • RSS の記事(内容)をjsonとして返すAPIを目指す
  • 返すRSSの特徴
    • ジャンル分けをして、ジャンルに合ったものを返す(とりあえずwindows news用)
    • さまざまなRSSから、上記のジャンルに合ったものを抽出する
  • APIとして実装したい機能
    • RSS feedのURLを追加・削除する
    • その日のさまざまなRSS記事の内容をジャンルで厳選してJsonで返す
    • 学習データの追加および学習・削除
  • RSSを厳選する方法
    • ナイーブベイズを使って簡単な機械学習で行う(マシンスペックが許せば将来的には深層学習も使うかもしれない)

内容一覧

システム構成例

rss_collect_api drawio

デプロイ方法

$ git clone [email protected]:cacaoMath/rss_collect_api.git
$ git checkout ${デプロイするバージョンタグ名}
  • .envファイルに必要な値を入力する
    • .env.sampleを例にする
  • deploy.shを叩く
    • deploy.shで必要なDockerfileのビルドや辞書のコピーなどが行われる。
  • deploy完了、localhost:8000などで接続できるか確認する

開発環境構築

  • pipenvでパッケージ管理しているためインストールしておく
  • pipenv install --devで開発に必要なパッケージ込みでインストール可能
  • 内部処理に使用してるmecab-ipadic-NEologdは別で要インストール
  • DBはDockerで立ち上げられる
    • cp docker-compose.yml.sample docker-compose.ymlの後にdocker-composeで立ち上げる
  • .envにDB情報などの記入が必要なので.env.sampleを参考に記入し作成する。

API

  • /docs or /redocで詳細の確認が可能
  • POST,UPDATE,DELETEの処理はBASIC認証が必要
    • /rssは例外とする

feeds

  • /feeds : GET
    • 登録しているRSS feed URLの一覧表示
  • /feeds/{feed_id} : GET
    • {feed_id}のRSS feed URLの表示
  • /feeds/{feed_id} : UPDATE
    • {feed_id}のRSS feed URLの更新
  • /feeds/{feed_id} : DELETE
    • {feed_id}のRSS feed URLの削除
  • /feeds : POST
    • RSS feed URLの登録

learning-data

  • /learning-data : GET
    • 学習データの一覧表示
  • /learning-data/{data_id} : GET
    • {data_id}の学習データを表示
  • /learning-data/{data_id} : UPDATE
    • {data_id}の学習データを更新
  • /learning-data/{data_id} : DLETE
    • {data_id}の学習データを削除
  • /learning-data : POST
    • 学習データの追加

categories

  • /categories : GET
    • 登録されているカテゴリ(ジャンル)の一覧表示

classifier

  • /classifier : GET (学習モデルが保存できる場合に実装)
    • 機械学習モデル更新日出力
  • /classifier/predict : POST
    • テキストのジャンルを推定

rss

  • /rss : POST
    • 分類器を使用して、POSTしたジャンルで集められた記事のタイトル、日付、URLなどをJSONで返す
    • RequesBody: JSON
      {"categories": ["string1", "string2", ...]}
      
      • "categories"にはGET /categories得られる値から、得たい記事のジャンルをlistで入れる。

/rss内部処理

rss

Model

feeds

  • url: str
    • valid
      • length: 255
      • null: false
  • description : str | None
    • valid
      • length: 255
  • is_active
    • valid
      • default: True

learning-data

  • word: str
    • valid
      • length: 255
      • null: false
  • category_id: Categoryのデータに紐づくid
  • category : Categoryとリレーション

Category

  • category: str
    • valid
      • length: 30
      • null: false
      • 使用できる文字: a-z,A-Z,0-9,-

Schema(型データ)

参考

ジャンル推定

ナイーブベイズ

形態素分析

rss_feed

Test

About

登録されたRSSfeedURLリンク先から、選んだジャンルの記事を収集するAPI

Topics

Resources

Stars

Watchers

Forks