概要
ある単語(例:生成AI、VTuber、移民)の世間的なイメージを定量的に示すことが目標です。最終的には、次のようなグラフを作成します。

より具体的には、新聞のタイトルを.txtファイルに落とし込み、そのテキスト内に現れる単語の頻度をPythonを使って計測することを目指します。
新聞の記事タイトルは読者を惹きつけるためのものであり、一定の「世間的なイメージ」に基づいて書かれたものであると推察されます。タイトルを分析することで、対象の「報じられ方」を明らかにすることを目指します。なお、分岐する媒体や新聞社によって、報じられ方に差があることを示すのも面白いかもしれません。
この記事で伝えること
・記事のタイトルに現れている語句の使用頻度をランキング化する方法
・AIへの有効な指示文の書き方
・分析結果から考察を導くプロセス
応用
- 新聞社ごとの報道の差について考察する。
- 媒体ごとの報道の差について分析する(テキストの抽出法を変えれば、Xなども分析できます!)。
- 研究活動の準備段階として、世間のイメージを探る。
- 対象についての理解を深め、創作活動に活かす。
- 対象の世間的なイメージを知って、マーケティングに活かす。
- 時事用語を追うことで、社会の動向がわかる(今回は扱いませんが、時系列の情報も含めて期間ごとに分析するのも面白いかと!)。
注意
- 説明の環境はmacOSです。
- ChatGPTのPlus版を使用しています(他のAIエージェントでも代用できます!)
- 日本語のテキスト分析に向けた説明です(他の言語や複数言語には対応していません)。
- 2026年8月時点の内容です。
- 本記事内容の再配布はご遠慮ください。
準備①:AIエージェント
この部分は、AIエージェントを使い慣れている方は飛ばしてください!
AIエージェントとは ユーザーの指示に対して、AIがWebページやツールなどを活用して、自律的に作業を実行するシステムのこと。
今回は、AIエージェントにデータを抽出してもらいます。ChatGPTの場合、Plusではデスクトップ版のWorkタブから利用できます(※2026年8月時点の表示です)。

準備②:Python環境
この部分はPythonを導入済みで、SudachiPyを実装済みでしたら飛ばしてください。
Pythonとは 広く使われているプログラミング言語の1つ。
SudachiPyとは ワークス徳島人工知能NLP研究所が開発している、形態素解析器SudachiのPython版。
Pythonはここからダウンロードしてください。
Pythonインストール後に、ターミナルを開きます。「ターミナル」はハッカーが動かしているイメージがある画面です。初期状態だと、真っ黒な画面に白文字が浮かんでいるような表示になるかと思います。
アプリケーション欄に「ターミナル」と入力すると検索できます。

Pythonを導入した後で、ターミナルに次のテキストを入力して、エンターキーを押します。
python3 -m pip install sudachipy sudachidict_coreこれで、SudachiPyが実装されました。SudachiPyを使うことで、日本語のテキストを分析できるようになります。
手順①:テキスト抽出
(※ テキストの抽出やAIエージェントによる探索を禁止しているサービスもありますので、実施前に規約をご確認ください。)
今回は朝日新聞で「発達障害」について扱っている記事について分析してみます。AIエージェントに次のような指示を出します。
Codex内ブラウザで朝日新聞の検索画面を開いてください。 「発達障害」と検索すると、2589件の結果が出てきます。 リンク:URL 今から、この2589件のタイトルのみをテキスト化して、1つのtxtファイルにまとめてください。
※ちなみに、執筆者は発達障害(神経発達症)に関する研究をしているため、この語句を選んでいます。
このとき、URLの先は「サイト内記事検索」にて、その語句の検索画面になっています。

他の新聞社でも同様の機能さえあれば、テキストを抽出できます。また、指示を書き換えれば他のメディアでも分析できます。
指示において重要なのは次の3点です。
- ゴールを1つに絞り、具体的に伝える(例:この2589件のタイトルのみをテキスト化して、1つのtxtファイルにまとめてください)
- こちらの状況を詳細に伝える(例:発達障害」と検索すると、2589件の結果が出てきます。リンクはこちら)
- 手順を指定する(例:Codex内ブラウザで朝日新聞の検索画面を開いてください)
1と2は特に重要な要素です。まず、ゴールが1つに定まらない場合は、分割をするべきです。
例えば、今回はテキストの分析がゴールですが、「テキストを抽出した上で分析して」という指示は2つの成果を求めています。「テキストを抽出する」「テキストを分析する」という2つの指示にわけて、1回の作業で1つのゴールを定めるようにします。
また、こちらの状況を詳細に伝えるべきです。件数を指定したり、リンクを指定したりすることによって、AIは指定に則さない事態が生じた場合に対処してくれます。
『「取得件数が違うな…」→「もう一回やり直してみよう!」』という流れで、指示を遵守してくれます。こちらの状況を正確に伝えることで、結果も希望に沿ったものになる可能性が高まります。
以下では、実際の操作画面を見ながら.txtファイル出力までを確認します。
① 指示出し

先ほどの指示をAIエージェントに渡します。
② ブラウザ操作

AIエージェントが自律的にブラウザを操作します。初回実行時には許可を求められますので、確認の上で操作を進めてください。
③ 操作完了

今回は6分33秒で作業が完了しました。抜け漏れもないようです。
④ アウトプット 問題なく1行につき1つの記事タイトルを出力できています。フォーマットが希望通りではない場合は、さらに具体的に指示する必要があります。

⑤ フォルダを開く

画面右上の「開く」から「フォルダーで開く」を選択してください。
⑥ リネーム

.txtファイルをリネームして、headlines.txtにします。
<拡張子が表示されない?>
macOSではデフォルトでは.txtなどの拡張子が表示されません。Finderを選択して、上部に表示される「Finder」→「設定」→「詳細」→「全てのファイル名拡張子を表示」にチェックを入れることで、表示させることができます。
手順②:Pythonによる分析
AIによって出力されたデータを使い、Pythonで分析を進めます。まず、「テキストエディット」で次のようなコードを入力してください。
コードの内容としては、headlines.txtの中の「名詞」「動詞」「形容詞」を抽出して、どの語が何回現れたのかをカウントします。その上で、回数に応じてランキングを作成し、上位50語を「frequency.csv」として出力します。
重要なのは次の部分です。
# 集計から除外する語
# 必要になったら、この中に語を追加する
STOP_WORDS = {
"する",
"ある",
"いる",
"なる",
}分析には不要な語(地名・人名・数字など)をランキングから除外するためのコードです。ここで調整をすることで、データを整えます。
以下では、テキストエディットでの打ち込みから、結果のfrequency.csv出力までを順を追って説明します。
① テキストエディットの標準化

先のコードをコピペした上で、テキストエディットの「フォーマット」から「標準テキストにする」を押してください。字体などの情報を省いた、純粋なテキスト情報のみ(.txt形式)に変更します。
② Pythonの拡張子で保存
変換後は、「frequency.py」というファイル名・拡張子で保存します。保存時に、拡張子を.pyに変更してください。.txtのままでは正常に動作しません。

UnicodeはUTF-8を指定します。
③ 1つのファイルにまとめる
AIエージェントが出力したheadlines.txtとfrequency.pyを同じファイルに入れます。ファイル名はお好きなもので構いません。

④ 再びターミナルを開く
ターミナルを開いて、「cd 」と入力します。「cd」の後ろに半角スペースが入っています。
続いて、ターミナル上に③のファイルをドラッグ&ドロップします。その上で、Enterキーを押してください。
cd と入力します

ファイルをドラッグ&ドロップ

この状態でEnterキーを押してください

※ ちなみに、ターミナル内で「このファイルの場所に行くよー!」という指示を「cd + ファイルの場所」で出しています。
⑤ ファイルの確認
ターミナルに「ls」を入力して、headlines.txtとfrequency.pyの2つのファイルが表示されていれば成功です。

⑥ frequency.pyを実行
ターミナルに次の指示を入力し、Enterキーを押してください。
python3 frequency.py「処理が完了しました。」という表示が出たら成功です。ファイル内に結果(frequency.csv)が出力されます。

手順③:結果の調整
続いて、結果(frequency.csv)を確認します。私はExcelで開いていますが、Numbersなどが設定されているかもしれません。いずれのソフトでも正しく表示されていれば問題はありません。
私の分析では、次のように表示されました。

ここで問題となるのが、数字や「子」などの分析としては不適切な結果が表示されている点です。また、「障害」「発達」も発達障害を扱っている場合に現れるのは当然ですので、ランキングから除外したいところです。
そこで、スクリプト(frequency.py)の以下の部分で「除外ワード」を設定します。
# 集計から除外する語
# 必要になったら、この中に語を追加する
STOP_WORDS = {
"する",
"ある",
"いる",
"なる",
}最後の"なる",につづけて、改行をしながら、同じフォーマットで除外ワードを指定していきます。
① 分析結果から除外ワードを決定
一定の基準を設けておいた方が、結果を報告する際に説得力が伴います。私の場合は、「発達」「障害」「子(子どもと重複するため)」「数字(1, 2, 3など)」「こと」「ため」「元」「下」「上」「日」を除外ワードにしました。

② スクリプトに①を反映
frequency.pyに①を入力します。ファイルをダブルクリックすると、Python環境で立ち上がりますので、そのまま入力して保存します。

この作業はAIに任せることもできます。
③ 結果ファイル(frequency.csv)のリネーム
もとの結果が上書きされてしまわないように、ファイル内の「frequency.csv」はリネームしておきます。「frequency_1.csv」などで良いかと思います。
④ 再び実行
同じ手順でターミナルにてfrequency.pyを実行します。「cd 」でファイルの場所を指定した上で、「python3 frequency.py」を実行します。
すると、新たに「frequency.csv」が出力されます。

手順④:結果について考察
ここで、ランキングを見ながら調べた語句について考察してみます。グラフにしなくても、ランキングだけで見どころはあります。
25位までの結果から考えてみます。

私は「発達障害」について調べたわけですが、「学校」「不登校」「配慮」「学習」などの語句と一緒に記事タイトルに使われていることがわかりました。
あくまでも暫定的な仮説ではありますが、発達障害の諸症状による「学校生活への影響」が注目されていることを示唆しています。
文脈は分かりませんが「自分」という言葉が頻繁に現れている点も興味深いところです。「自分が発達障害かもしれない」という意識が広まりつつあるのでしょうか。
また、「女性」や「母」の語句がランクインしていることから、ジェンダーの問題を読み取れる可能性があります。さらに、「自閉症」が「ADHD(30位)」よりも頻繁に現れている点は、自分にとっては意外に感じられました。
このような分析については、AIに意見を求めるのも有効でしょう。
分析の限界
この分析は「語句についてのイメージ」という曖昧なものを、定量的に評価できるという点で有用です。ただし、限界もあります。
第一に、その言葉が使用されている文脈はわかりません。例えば「理解」という語句は、「理解が深まる」とも「理解できない」とも使われうるものです。語句が肯定的に使われているのか、否定的に使われているのかは、タイトルを実際に眺めて分析するしかありません。
第二に、記事タイトルの分析においては、「読者の興味を惹きつけるためにタイトルをつけるだろう」という仮定から「タイトルには世間的なイメージが反映されている」という推測をしています。ただ、実際には世間の意見よりも過度な表現をしたり、イメージを裏切るという形でタイトルをつけたりすることもあります。
加えて、学術的な厳密性は担保されていません。結果を出力したあとに、恣意的に除外する語句を選んでいる点が、分析の上では最も重大な問題です。データの収集方法なども含めて、査読のある学術論文よりも厳密性が劣っていることは明らかです。
結果をグラフにする
結果をグラフにしてみます。CSVファイルをGemini(Googleが提供する生成AI)に渡して、グラフを作成してもらいました。
※この作業はAIエージェントでなくても可能です。

結び
以上、AIを活用しながらPythonによって記事タイトルの分析をしました。データの収集やグラフ化といった単純作業はAIに任せながら、具体的な操作を知っておきたい分析は独力で行なっています。
今回は頻度のみの分析でしたが、例えば日付のデータも含めると「イメージの変遷」などについても考察できそうです。また、頻度だけではなく「共起」を分析することで、ある単語と同時に使われる傾向にある語句を示すことも可能です。さまざまに応用できるかと思いますので、参考にしていただけますと幸いです。