スキップしてメイン コンテンツに移動

RSSからYoutube/Podcast配信

本文要約

要約

今回は現在使用している方法とは異なり、実装が簡単な要約方法になります。
参考元にはニューラルネットワーク(accel-brain-base)を使用した例などもありますので、そちらを参考にしてください。

Pythonライブラリの追加

以下のライブラリをインストールしてください。
$ pip install pysummarization

Pythonプログラム
test.pyに以下のコードを記述します。
ここでソース記事の各行を重みづけしてから、重要度の高い5つの行だけを選択します。
test.py
from pysummarization.nlpbase.auto_abstractor import AutoAbstractor
from pysummarization.tokenizabledoc.simple_tokenizer import SimpleTokenizer
from pysummarization.abstractabledoc.top_n_rank_abstractor import TopNRankAbstractor

def getSummary(text):

    # Object of automatic summarization.
    auto_abstractor = AutoAbstractor()
    # Set tokenizer.
    auto_abstractor.tokenizable_doc = SimpleTokenizer()
    # Set delimiter for making a list of sentence.
    auto_abstractor.delimiter_list = [". ",".\n","\n"]
    # Object of abstracting and filtering document.
    abstractable_doc = TopNRankAbstractor()
    # Summarize document.
    result_dict = auto_abstractor.summarize(text, abstractable_doc)

    # Output result.
    out_text = ''

    dic_len = len(result_dict["summarize_result"])
    if dic_len > 5 :
        dic_len = 5
    for i in range(dic_len):
        out_text += result_dict["summarize_result"][i]
    return out_text
以前のgetBody()から上記のgetSummary()を呼び出します。
タイトルや本文に色々ゴミが入ってくるので軽く削除してます。
またブログアップロードする際に改行文字をHTMLの改行タグ(<BR>)に変更しています。
test.py
def getBody(link):
    try :
        res = requests.get(link)
        extractor.analyse(res.text)
        text, title = extractor.as_text()
        title = re.sub('[-|:|\||\[|\(|\{].*','',title)
        text = re.sub('&.*?;','',text)
        text = getSummary(text)
        return postBlog(title,text.replace('\n','<BR>'),'TECHNOLOGY')
    except Exception as e :
        print(e)
        return None
結果はこちら

ちなみに要約前は以下。
次は翻訳に入ります。

参考URL:

pysummarization



このブログの人気の投稿

RSSからYoutube/Podcast配信

皆さん、情報収集はどの様にされていますでしょうか? 私は最先端に情報に触れる為、海外ニュースをRSSで購読しているのですが、私の英語力/語彙力では時間が掛かかってしょうがない。 また、できれば目で読むのではなく、音声で聞き流しながら通勤や他の作業中に行いたい。 という事で自動でニュースを収集・要約・翻訳し、それをブログ・ポッドキャスト・Youtubeに自動投稿するPythonプログラムを作成して時短化しました。 その手法を公開してますので参考にしてください。 Bloggerの立ち上げ方 GCPとBloggerの連携 情報収集自動化 Blogger自動投稿 本文要約 翻訳 音声作成 動画作成 Youtubeにアップロード Youtubeの投稿制限の回避方法 Podcast配信 翻訳・要約の改善(GPT-3) 以下のURLで上記から作成したブログやYoutubeを公開しています。参考までに見てください。 ブログ:海外ニュースを仕入れてお届け YouTube:海外Newsを仕入れてお届け Amazon Music:海外ニュースを仕入れてお届け。 Google Podcasts:海外ニュースを仕入れてお届け。 Apple Podcasts:海外ニュースを仕入れてお届け。

Bloggerの立ち上げ

Bloggerとは BloggerはGoogleのサービスの一つで、無料でブログを始めることができます。 Googleアカウントが必要となりますので、ない方はアカウントの作成をお願いします。 Bloggerサイトへのログイン https://www.blogger.com/から「ブログの作成」を選択してください。 Googleアカウントを聞かれるので、Googleアカウントとパスワードを入力してください。 ブログの名前を入力 作成するブログの名前を決めます。これは後から変えられるのでとりあえずは書こうとしてる内容に沿ったものを記入してください。 ブログのURL(インターネット上の所在地)を作成します。 こちらも変更できる(※)のですがので、頻繁に変更すると読者や検索などから外されてしますので、個人名や法人名など変更しないことを前提に名付けた方が良いと思います。 (※「.blogspot.com」以外のカスタムドメインを自分でとって、それを設定することもできます) プロファイルの作成 ブログが作成されるとプロファイルの作成画面が出てきます。ブログ読者に見られることを意識して、ユーザー名やわかりやすい説明を記入しましょう。 以上でブログが作成できました。作成したURLをブラウザに打ち込んでみましょう! 貴方だけのブログサイトが立ち上がりました。 次は GCP(Google Cloud Platform)とBloggerを連携 させてみましょう。 参考: Blogger Help  

動画作成

ffmpegを使った音声&映像ミキシング ffmpegを使って音声ファイル(mp3)と映像ファイル(mp4)をミキシングします。 ライブラリの追加 $ sudo apt install ffmpeg Pythonプログラム test.pyに以下のコードを記述します。 subprocessを使ってffmpegをpythonから起動させます。 元となる映像データ(input.mp4)は著作権フリーのものから拾ってきてください。 ※映像の長さと音声の長さのより短い方に合わせた動画が作成されます。 またHWエンコードの対応があれば、SWエンコーダー(libx264)ではなくHWエンコーダ―(h264_nvenc)を指定してください。 test.py import subprocess from subprocess import PIPE def makeVideo (): cmd = 'ffmpeg -y -i /tmp/input.mp4 -i /tmp/temp.mp3 ' cmd += ' -movflags +faststart -c:a aac -profile:a aac_low -ac 2 -ar 48000 -c:v libx264' cmd += ' -vf yadif=0:-1:1 -profile:v high -bf 2 -g 30 -coder 1 -b:v 1M -b:a 384k' cmd += ' -pix_fmt yuv420p -map 0:v:0 -map 1:a:0 -shortest ' cmd += ' /tmp/output.mp4 ' rtn = subprocess . run ( cmd , shell = True , stdout = PIPE , stderr = PIPE , text = True ) return 以前のgetRss()から上記のmakeVideo()を呼び出します。 逐一動画にしても良いですが、PodcastやYoutubeにアップロードできる回数が限りがありますので、ある程度まとめた音声...