LoginSignup
10
9

More than 1 year has passed since last update.

ニュース記事の感情分析(ネガポジ判定ないし極性判定とも)

Posted at

はじめに

過去の記事(※1)で自然言語処理をする機会が増えてますとお伝えしてました。
いろいろと手を出してて、感情分析(ネガポジ判定ないし極性判定とも)にもチャレンジしてもいたり。。。

この2~3か月くらい、筆者は仕事でデータ収集(BeautifulSoupやSeleniumを使ったWebスクレイピング)と自然言語処理(MeCabを使った形態素解析とgensim使った単語の分散表現と感情分析)をする機会が増えてます。

本稿では、「livedoor NEWSに対して感情分析をする」過程をCode交えて紹介してゆく。

感情分析とは

感情分析とは、とある文章に込めた想い(感情)がポジティブかネガティブかを、文章に含まれる単語軍から推定(分類)するタスクです。
東北大学でも関連研究に取り組まれており、資材(日本語評価極性辞書12)も公開されております。

本稿で利用するレポジトリはこちらです。

また、ハンズオンはこちらです。

本稿で紹介すること

  • 使った環境
  • 感情分析の進め方(ニュース記事を例に)

本稿で紹介しないこと

  • BERTの全般
  • ニュース記事のスクレイピング

(筆者の過去投稿を参照いただけると。。。)
2022年1月1日の話題のニュース記事を予め取得しCSVファイルに出力して利用します。

まずは、環境の準備

筆者は、NGCカタログイメージを取得し、コンテナ起動しています。

以下、NGCカタログイメージ3の取得コマンドです。

$ docker pull nvcr.io/nvidia/pytorch:20.11-py3

以下、PythonとPythonライブラリ群のVer情報です。

$ python -V
Python 3.6.10 :: Anaconda, Inc.
$ python -m pip --version
pip 20.2.4 from /opt/conda/lib/python3.6/site-packages/pip (python 3.6)
$ pip list | grep -i torch
pytorch-transformers          1.1.0
torch                         1.8.0a0+17f8c32
torchtext                     0.8.0a0
torchvision                   0.8.0a0
$ pip list | grep -i transformers
pytorch-transformers          1.1.0
transformers                  3.0.2
$ mecab -v
mecab of 0.996

それでは、ニュース記事の感情分析に挑戦!

筆者は、NGCカタログイメージからコンテナ起動し、Google ChromeからJupyterLabに接続して実行しています。

Codeを順に紹介してゆきます。

1. ハンズオンに倣って、BERTモデルとMeCab辞書で感情分析器をインスタンス化

from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained("/home/jovyan/bert-base-japanese-sentiment")
tokenizer = AutoTokenizer.from_pretrained("/home/jovyan/bert-base-japanese-whole-word-masking", word_tokenizer_type="mecab", mecab_kwargs={"mecab_option": "-d /home/jovyan/mecab/ipadic -r /dev/null"})

sentiment_analyzer = pipeline("sentiment-analysis", model=model, tokenizer=tokenizer)

2. ニュース記事のCSVファイルをDataFrameに読込み

import pandas as pd

# CSVファイルからDataFrameを生成
df = pd.read_csv('livedoor_news/livedoor_news_topic_2022-01-01.csv', encoding='utf-8')
df.head(5)

中身はこんな感じ。

url id title summary
0 https://news.livedoor.com/topics/detail/214452... 21445293 「うる星やつら」が36年ぶりにTVアニメ化 フジ・ノイタミナ枠で フジテレビの深夜アニメ枠「ノイタミナ」で放送されるとのこと
1 https://news.livedoor.com/topics/detail/214463... 21446393 「コミケ」の献血に長蛇の列で大盛況「オタクの鑑」など感心の声 東京都赤十字血液センターはTwitterで長蛇の列の様子を掲載し、感謝
2 https://news.livedoor.com/topics/detail/214474... 21447477 「逃走中」HIKAKINが逃走成功で150万円獲得 視聴者から祝福の声 賞金である150万円を獲得することとなり「やった〜!」と歓喜
3 https://news.livedoor.com/topics/detail/214458... 21445857 声優の飯田里穂が一般人との結婚を報告「あたたかく見守っていただけたら」 ツイッターでは直筆書面にて「一般の方と入籍いたしました」と伝えている
4 https://news.livedoor.com/topics/detail/214453... 21445372 餅がのどに詰まったら4分勝負、やるべき3つの対処法 NG行動は? 人間は窒息すると4分で脳に影響が出るため、その場での対処が重要だという

3. ニュース記事タイトルを対象に感情分析

result = [sentiment_analyzer(title)[0] for title in df['title'].to_list()]
for x, y in zip(result, df['title'].to_list()):
    x.update({'title': y})

4. 感情分析結果(戻り:Dict型)のリストからDataFrameを生成し、ニュース記事のDataFrameと結合

df = pd.merge(df, pd.DataFrame(result), on='title')
df.head(5)

中身はこんな感じ。

url id title summary label score
0 https://news.livedoor.com/topics/detail/214452... 21445293 「うる星やつら」が36年ぶりにTVアニメ化 フジ・ノイタミナ枠で フジテレビの深夜アニメ枠「ノイタミナ」で放送されるとのこと ポジティブ 0.877783
1 https://news.livedoor.com/topics/detail/214463... 21446393 「コミケ」の献血に長蛇の列で大盛況「オタクの鑑」など感心の声 東京都赤十字血液センターはTwitterで長蛇の列の様子を掲載し、感謝 ポジティブ 0.848410
2 https://news.livedoor.com/topics/detail/214474... 21447477 「逃走中」HIKAKINが逃走成功で150万円獲得 視聴者から祝福の声 賞金である150万円を獲得することとなり「やった〜!」と歓喜 ポジティブ 0.826164
3 https://news.livedoor.com/topics/detail/214458... 21445857 声優の飯田里穂が一般人との結婚を報告「あたたかく見守っていただけたら」 ツイッターでは直筆書面にて「一般の方と入籍いたしました」と伝えている ポジティブ 0.924203
4 https://news.livedoor.com/topics/detail/214453... 21445372 餅がのどに詰まったら4分勝負、やるべき3つの対処法 NG行動は? 人間は窒息すると4分で脳に影響が出るため、その場での対処が重要だという ポジティブ 0.862354

5. ポジティブ判定のニュース記事をスコア(ポジティブ度合い)の高い順にソートして表示

df[df['label'] == 'ポジティブ'].sort_values('score', ascending=False)

結果はこんな感じ。「ぱっと見た感じネガティブな気もしたけど、ポジティブに判定される記事もあるんだな」という印象。

url id title summary label score
30 https://news.livedoor.com/topics/detail/214459... 21445980 声優・井上麻里奈が青二プロダクションへ移籍「さらに精進して参ります」 「シグマ・セブンの皆様には感謝の気持ちで一杯」と前事務所に感謝 ポジティブ 0.962433
13 https://news.livedoor.com/topics/detail/214446... 21444622 天皇陛下と雅子さまがともに新年のビデオメッセージ 全文を紹介 陛下は、新型コロナウイルスや、発生から10年を迎えた東日本大震災に言及 ポジティブ 0.943239
20 https://news.livedoor.com/article/detail/21446... 21446256 ロイヤルホスト“苺”スイーツ発売へ! 贅沢なパフェ&ケーキなど全5種類が登場 ファミリーレストラン「ロイヤルホスト」は、1月12日(水)から、季節の… ポジティブ 0.934567
12 https://news.livedoor.com/article/detail/21446... 21446720 ピンク可愛い ガーナ新作アイス ロッテはチョコレート「ガーナ」ブランドの新作アイスクリーム「ガーナチョ… ポジティブ 0.930231
37 https://news.livedoor.com/topics/detail/214460... 21446051 「うる星やつら」が新作アニメ化 ラム役の声優・上坂すみれがコメント ヒロイン・ラム役を上坂すみれ、主人公・諸星あたる役を神谷浩史が担当 ポジティブ 0.929826
24 https://news.livedoor.com/article/detail/21446... 21446472 たこ壺に入った人気駅弁の「ひっぱりだこ飯」ドライカレーに 神戸の老舗駅弁メーカー淡路屋(本社、神戸市東灘区)は1月7日、名物駅弁… ポジティブ 0.926005
26 https://news.livedoor.com/article/detail/21444... 21444730 マイナポイント第2弾が本日(1月1日)スタート 当初は限定展開 マイナンバーカードの取得・利用促進を目的とした「マイナポイント」事業の… ポジティブ 0.925518
3 https://news.livedoor.com/topics/detail/214458... 21445857 声優の飯田里穂が一般人との結婚を報告「あたたかく見守っていただけたら」 ツイッターでは直筆書面にて「一般の方と入籍いたしました」と伝えている ポジティブ 0.924203
34 https://news.livedoor.com/article/detail/21444... 21444437 「ぐるナイ おもしろ荘」優勝は人力舎所属のピン芸人・ゆめちゃん 日本エレキテル連合、おかずクラブ、ぺこぱといったブレイク芸人の登竜門… ポジティブ 0.917474
28 https://news.livedoor.com/article/detail/21444... 21444423 アニメ『魔法科高校の劣等生』続編制作決定 特報映像も公開 アニメ『魔法科高校の劣等生』の続編が制作されることが決定した。12月31… ポジティブ 0.913538
15 https://news.livedoor.com/article/detail/21446... 21446073 古川登志夫&平野文『うる星やつら』新作アニメ化で喜び「楽しみにしてるっちゃ!」 『週刊少年サンデー』(小学館)で連載されていた漫画『うる星やつら』(… ポジティブ 0.910654
6 https://news.livedoor.com/article/detail/21447... 21447352 三大流星群のひとつ「しぶんぎ座流星群」 1月3日深夜が見頃 三大流星群のひとつ「しぶんぎ座流星群」 1月3日深夜が見頃2022/01/01 20:0… ポジティブ 0.906668
31 https://news.livedoor.com/article/detail/21444... 21444198 「SUMMER SONIC 2022」8月20日、21日に東京と大阪で開催へ 音楽フェス『SUMMER SONIC 2022』が今年8月20、21日に東京と大阪で開催さ… ポジティブ 0.895463
27 https://news.livedoor.com/article/detail/21446... 21446129 Amazonプライムビデオ1月の新作:「約束のネバーランド」「今日から俺は!!劇場版」「銀魂... 幅広い作品ラインアップが魅力のAmazon Prime Videoでは、毎月、新作の配信… ポジティブ 0.886706
21 https://news.livedoor.com/article/detail/21444... 21444375 「ジャニーズカウントダウン」でサプライズ、相葉雅紀が登場 ジャニーズ事務所所属のアイドルグループが多数出演する年越しライブ「ジャ… ポジティブ 0.886215
0 https://news.livedoor.com/topics/detail/214452... 21445293 「うる星やつら」が36年ぶりにTVアニメ化 フジ・ノイタミナ枠で フジテレビの深夜アニメ枠「ノイタミナ」で放送されるとのこと ポジティブ 0.877783
9 https://news.livedoor.com/topics/detail/214456... 21445695 大阪城とUSJを結ぶ遊覧船 2023年春にも定期運航が始まる見通し 23年春に大阪城公園の船着き場が完成する見込みで、これを活用して運航する ポジティブ 0.876632
19 https://news.livedoor.com/article/detail/21446... 21446116 仮面ライダー図鑑、期間限定で“寅年”仕様に タイガにオーズにゼロワン ジオウは“平成34年”に 仮面ライダーシリーズ公式ポータルサイトの人気コンテンツ「仮面ライダー… ポジティブ 0.872462
4 https://news.livedoor.com/topics/detail/214453... 21445372 餅がのどに詰まったら4分勝負、やるべき3つの対処法 NG行動は? 人間は窒息すると4分で脳に影響が出るため、その場での対処が重要だという ポジティブ 0.862354
23 https://news.livedoor.com/topics/detail/214462... 21446237 ニューイヤー駅伝で創部51年目のホンダが初優勝 6区で逆転首位 2区23位に落ちたが、6区でトップになり4時間51分04秒の記録で優勝した ポジティブ 0.861704
36 https://news.livedoor.com/topics/detail/214442... 21444220 12星座×血液型で見る2022年最強運ランキング 1位〜48位発表 1位は魚座×AB型で、思い切ったチャレンジが幸運を呼び寄せそう、とのこと ポジティブ 0.861353
25 https://news.livedoor.com/article/detail/21444... 21444170 映画「キングダム2」正式タイトル発表、スーパーティザーPVも解禁 2022年のはじまりとともに、実写映画『キングダム』の続編・パート2のタ… ポジティブ 0.850540
1 https://news.livedoor.com/topics/detail/214463... 21446393 「コミケ」の献血に長蛇の列で大盛況「オタクの鑑」など感心の声 東京都赤十字血液センターはTwitterで長蛇の列の様子を掲載し、感謝 ポジティブ 0.848410
14 https://news.livedoor.com/article/detail/21445... 21445327 23歳差の”恋心” ダニエル・ラドクリフがヘレナ・ボナム・カータ&#12540... 俳優のダニエル・ラドクリフ(32)は、「ハリー・ポッター… ポジティブ 0.836254
7 https://news.livedoor.com/topics/detail/214467... 21446778 身長や挙動テスト 経験者が語る「逃走中」のハンターの採用条件 ハンターの第1条件は身長180センチ以上で、モデルによく声がかかるという ポジティブ 0.836040
17 https://news.livedoor.com/article/detail/21447... 21447460 YouTube『Johnny′s Gaming Room』が本格始動 “参戦”メンバー13人を発表 ジャニーズのゲーム好きが集うYouTubeチャンネル『Johnny's Gaming Room… ポジティブ 0.832476
35 https://news.livedoor.com/article/detail/21444... 21444428 JR山陰線で倒木 約90人が車中泊 12月31日深夜、京都府内のJR山陰線で特急「きのさき17号」など列車3本が… ポジティブ 0.829401
2 https://news.livedoor.com/topics/detail/214474... 21447477 「逃走中」HIKAKINが逃走成功で150万円獲得 視聴者から祝福の声 賞金である150万円を獲得することとなり「やった〜!」と歓喜 ポジティブ 0.826164
32 https://news.livedoor.com/article/detail/21446... 21446689 『土方のスマホ』“正月の陣”放送決定 賀来賢人が坂本龍馬役 俳優の窪田正孝が土方歳三を演じ、昨年9月から10月にかけてNHK総合で放送… ポジティブ 0.825295
29 https://news.livedoor.com/topics/detail/214466... 21446653 JR松江駅で女性がけが 刃物を手にした男を現行犯逮捕 警察が現場に駆けつけたところ、けがをしている女性を発見 ポジティブ 0.816801
11 https://news.livedoor.com/topics/detail/214466... 21446661 「笑点」5年7カ月ぶりの新メンバーは桂宮治 正月特番内で発表 大喜利新メンバーとして、桂宮治が加わることが発表された ポジティブ 0.796677
22 https://news.livedoor.com/topics/detail/214454... 21445446 滋賀の県道高架下で焼けた遺体発見 仰向けの状態で死後数日が経過 遺体は仰向けの状態で、死後数日経過しているという ポジティブ 0.781807
8 https://news.livedoor.com/topics/detail/214474... 21447412 「ニューイヤー駅伝」優勝旗は授与されず 2021年王者の富士通が紛失 表彰式では優勝旗の授与はなく、優勝杯や賞状などがHondaに贈られた ポジティブ 0.772829
10 https://news.livedoor.com/topics/detail/214455... 21445513 鉛筆全体でHBの売り上げが激減 書写以外の小学校の授業ではBや2B推奨 1999年はHBが43%、2Bが22%だったが、2019年には2Bが51%、HBが20%に ポジティブ 0.743005

6. ネガティブ判定のニュース記事をスコア(ネガティブ度合い)の高い順にソートして表示

df[df['label'] == 'ネガティブ'].sort_values('score', ascending=False)

結果はこんな感じ。「ネガティブに判定されるのも納得」という印象。
感情分析器がポジティブ判定を出しがちなのか、お正月というタイミングなのか、ネガティブ判定のニュース記事は少ないような。。。

url id title summary label score
18 https://news.livedoor.com/article/detail/21444... 21444511 マルフォイ役で知られるトム・フェルトン 母親から禁止されたこと 「ハリー・ポッター」シリーズのドラコ・マルフォイ役などで知られる俳優の… ネガティブ 0.926198
33 https://news.livedoor.com/topics/detail/214463... 21446317 オミクロン株、千葉で初の市中感染か 2週間以内の海外渡航歴のない2人感染 2人とも2週間以内の海外渡航歴などがないため、市中感染の疑いがあるという ネガティブ 0.670254
5 https://news.livedoor.com/article/detail/21446... 21446976 都内で6人のどに餅詰まらせ搬送…2人死亡 元日の1月1日、東京都内で6人が餅をのどに詰まらせて救急搬送され、この… ネガティブ 0.652022
16 https://news.livedoor.com/article/detail/21445... 21445030 2022年の年明けを告げる 初日の出 あけましておめでとうございます!2022年がスタートしました。太平洋側は晴… ネガティブ 0.582705

まとめ

公開されたBERTモデルを利用して、ニュース記事を感情分析する方法を紹介しました。
簡単に利用できるのにもかかわらず、その結果は想像以上に納得感のあるものと思いました。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9