LoginSignup
7

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

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
What you can do with signing up
7