新着記事一覧

キャリア形成・転職 仕事・キャリア

2026/10/24

【40代の転職】40代の転職で書類選考は何社通った?

「40代で転職活動を始めたら、書類選考ってどのくらい通るんだろう?」 40代で転職を考えている人なら、気になるところではないでしょうか。 特に私の場合は、デジタルマーケティングの実務経験が約2年。それまでの約14年は国内営業・海外営業で、デジタルマーケティング一筋のキャリアではありませんでした。 しかも、マネージャー経験はなく、時短勤務を希望。 正直、転職活動を始める前から「40代でこの経歴だと、かなり厳しいかもしれない」と思っていました。 実際に12社に応募して、書類選考を通過したのは2社。ただ、その2 ...

続きを読む

転職エージェント

キャリア形成・転職 仕事・キャリア

2026/10/23

【40代の転職】転職エージェントの選び方

転職活動を始めるとき、利用する人も多い「転職サイト」。 転職サイトに登録していると、様々な転職エージェントからスカウトや連絡があります。 私も今回の転職活動では、複数の転職サイトに登録し、その中でスカウトを送ってくれたいくつかの転職エージェントの担当者と実際に話をしました。 そこで感じたのが、「転職エージェントなら、どこでも同じというわけではない」ということです。 求人の紹介方法も違えば、書類添削や面接対策などのサポート内容も違います。 そして何より、担当者によって熱量や相性がかなり違うと感じました。 今 ...

続きを読む

ポケモン 遊び・趣味

2026/10/23

【ポケモン】40代母親がポケモンGoにはまった理由

「ポケモンGOって、まだやってるの?」そう思う人もいるかもしれません。 実は私も、一度はポケモンGOをやめています。でも今では……かなりハマっています。しかも、40代の母親です(笑)。 今回は、そんな私がなぜ今さらポケモンGOにハマっているのか、その理由を書いてみたいと思います。 リリース当初からプレイ ポケモンGOがリリースされたのは2016年。私もリリース当初からプレイしていました。 「ポケモンが現実の世界に出てくる!」 というだけで当時はとても新鮮で、歩きながらポケモンを探したり、ポケストップを回し ...

続きを読む

キャリア形成・転職 仕事・キャリア

2026/10/23

【40代の転職】転職するか迷ったとき、私が比較したこと

40歳で転職活動を始めました。ただ、私の場合「会社が嫌だから辞める」という転職ではありませんでした。 16年間働いてきた会社には、良いところがたくさんありました。だからこそ、転職を決めるまでにはかなり悩みました。 「今の会社に残ったほうがいいのでは?」 「それでも、これからのキャリアを考えたら転職したほうがいいのでは?」 何度も行ったり来たりしながら、いろいろな条件を比較しました。 この記事では、40代で転職を考えているけれど、今の会社にも不満がなく、転職するべきか迷っている方に向けて、私が実際に比較した ...

続きを読む

ポケモン 遊び・趣味

2026/10/20

【ポケモン】ポケモンGo リアルイベントの醍醐味

ポケモンGOのリアルイベントに参加してみて、改めて感じたことがあります。 それは、「ポケモンGOって、こんなに人とつながれるゲームだったんだ!」ということ。 普段もポケモンGOをプレイしていますが、家の近所や通勤途中で遊んでいるときは、一人(もしくは子供と)で黙々とポケモンを捕まえています。 知らない人に話しかけることも、ほとんどありません。 ところが、リアルイベントになると、それがちょっと変わります。 そこには、同じようにポケモンが好きな人が全国、そして世界中から集まっている。 「ポケモンが好き」という ...

続きを読む

キャリア形成・転職 仕事・キャリア

2026/10/20

【40代の転職】転職活動のスケジュールと進め方

海外営業からデジタルマーケティングへキャリアチェンジし、やりたい仕事に手応えを感じていたものの、組織変更によってデジタルマーケティングの仕事そのものがなくなってしまったことが、転職を考える大きなきっかけでした。 今回は、その後の転職活動のスケジュールと、実際にどのように転職活動を進めたのかを書いてみたいと思います。 結果的には、3月に本格的に転職活動を始め、4月に転職先を決定、4月22日を最終出社日として、5月は少しゆっくり過ごし、6月から新しい会社で働き始めました。 これから転職を考えている方の参考にな ...

続きを読む

ポケモン 遊び・趣味

2026/10/18

【ポケモン】Pokémon GO Fest 2026:東京!5月のリアルイベントの服装と持ち物まとめ

5月に開催されたPokémon GO Fest 東京に、小学2年生の息子と一緒に参加してきました!リアルイベントは初参加です! 今回が初めてのリアルイベント参加。 参加する前は、 「5月ならそこまで暑くないかな?」 「飲み物はどれくらい持っていけばいい?」 「スマホの充電は足りる?」 など、いろいろと気になることがありました。 実際に参加してみると、ポケモンGOのリアルイベントならではの準備がかなり重要! 特に、たくさんの人が集まるイベントなので、飲み物やモバイルバッテリーなどは「ちょっと多いかな?」くら ...

続きを読む

Python 仕事・キャリア

【Python】Pythonでの自然言語処理(日本語)

こちらの記事では、自然言語処理についてまとめています。

自然言語処理とは?

自然言語とは、日本語や英語のような自然発生的に生まれた言語です。
日常的に使用している自然言語について、言葉が持つ意味を解析し処理します。活用事例としては、チャットボット、音声認識AI、文字認識(手書き文字をカメラが認識し文字データへと変換する技術)、検索エンジン、翻訳、感情分析、文章要約などがあります。

文章の意味を機械に理解させるには、単語分割を行う必要があります。手法は主に2つあります。

1.形態素解析
形態素とは意味を持つ最小の言語単位で、単語は一つ以上の形態素を持ちます。
形態素解析は、辞書を利用して形態素に分割し、さらに形態素毎に品詞などの情報を付与することです。

2.Ngram
N文字毎、N単語毎に文章を切り分ける手法です。1文字ないし1単語で切り分けたものをユニグラム、2文字(単語)毎をバイグラム、3文字(単語)
毎をトリグラムと呼びます。Ngramは形態素解析のように辞書や文法的な解釈が不要なため言語に関係なく使用可能ですが、ノイズが大きくなるというデメリットがあります。

自然言語処理の実装

形態素解析を行う際は形態素解析ツールを使用します。日本語の形態素解析ツールとしてが、MeCabやjanome等があります。
今回はjanomeを使って形態素解析を行い、単語の頻出数を棒グラフとwordcloudで可視化してみたいと思います。

#必要なライブラリをインポートする
import re
import unicodedata
from janome.tokenizer import Tokenizer
import matplotlib.pyplot as plt
from collections import Counter
from matplotlib import font_manager
from wordcloud import WordCloud

with open("sample.txt", encoding="utf=8") as f:
    text = f.read().replace('\n', '').replace(' ','')

#text内に格納された文章の中で不要な文字や記号を削除する
text = re.sub(":","", text)

#janomeで形態素解析を行う
t = Tokenizer()
tokenized_text = t.tokenize(text)

#格納する空リストを作成する
word_list = []
for token in tokenized_text:
    tokeneized_word = token.surface # 形態素解析
    hinshi = token.part_of_speech.split(",")[0]
    if (hinshi == "名詞") or (hinshi == "動詞"):
        word_list.append(tokeneized_word)

#Top20の頻出単語を棒グラフで可視化してみる
# 単語の出現頻度をカウント
word_freq = Counter(word_list)

# 上位20件の単語とその頻度を取得
top_words = word_freq.most_common(20)

# 単語と頻度をそれぞれリストに分割
words, freqs = zip(*top_words)

# 日本語フォントの指定
jp_font_path = 'BIZ-UDGOTHICB.TTC'
jp_prop = font_manager.FontProperties(fname=jp_font_path)

# 棒グラフの描画
plt.figure(figsize=(10, 6))
plt.bar(words, freqs, color='skyblue')
plt.xlabel('Words', fontproperties=jp_prop)  # X軸ラベルに日本語フォントを指定
plt.ylabel('Frequency')
plt.title('Top 20 Words by Frequency')
plt.xticks(rotation=45, ha='right', fontproperties=jp_prop)  # X軸のラベルを回転させて読みやすくし、日本語フォントを指定
plt.tight_layout()
plt.show()

#WordListに含まれる言葉を空白で区切って一つの文字列にする
words_wakachi = " ".join(word_list)
print(words_wakachi)

#日本語のフォントを指定する
font = 'BIZ-UDGOTHICB.TTC'

#意味のない言葉を除外する
stopWords = ["さ","する","これ","あり","こと","でき","し","い","ため"]

#WordCloudを表示する
word_cloud = WordCloud(font_path=font, width=800, height=400,
                        stopwords=set(stopWords),min_font_size=5, 
                        collocations=False, background_color='white', 
                        max_words=400).generate(words_wakachi)

figure = plt.figure(figsize=(15,10))
plt.imshow(word_cloud)
plt.tick_params(labelbottom=False, labelleft=False)
plt.xticks([])
plt.yticks([])
plt.show()

ではブロック毎に見ていきたいと思います。

#必要なライブラリをインポートする
import re
import unicodedata
from janome.tokenizer import Tokenizer
import matplotlib.pyplot as plt
from collections import Counter
from matplotlib import font_manager
from wordcloud import WordCloud

with open("sample.txt", encoding="utf-8") as f:
    text = f.read().replace('\n', '').replace(' ','')

#text内に格納された文章の中で不要な文字や記号を削除する
text = re.sub(":","", text)

まず、必要なライブラリをインポートし、今回解析したいテキストが格納されているsample.txtを読み込み、改行・空白、そして不要な記号(今回は":"を取り除いています)を削除します。

#janomeで形態素解析を行う
t = Tokenizer()
tokenized_text = t.tokenize(text)

#格納する空リストを作成する
word_list = []
for token in tokenized_text:
    tokeneized_word = token.surface # 形態素解析
    hinshi = token.part_of_speech.split(",")[0]
    if (hinshi == "名詞") or (hinshi == "動詞"):
        word_list.append(tokeneized_word)

まず、Tokenizer()を使用してjanomeのTokenizerオブジェクトを作成し、textを入れて形態素解析を行います。
for文を使って、トークンリスト内の各トークンに対して処理を行います。トークンを表示すると以下画像のようなものが表示されます。
token.surfaceで形態素解析した言葉が(以下で言う電子、ピアノ等)、token.part_of_speech.split(",")[0]で品詞が取り出せます。
今回は、名詞と動詞を抽出し、予め準備しておいた空のリストにappendで格納します。

#Top20の頻出単語を棒グラフで可視化してみる
# 単語の出現頻度をカウント
word_freq = Counter(word_list)

# 上位20件の単語とその頻度を取得
top_words = word_freq.most_common(20)

# 単語と頻度をそれぞれリストに分割
words, freqs = zip(*top_words)

# 日本語フォントの指定
jp_font_path = 'BIZ-UDGOTHICB.TTC'
jp_prop = font_manager.FontProperties(fname=jp_font_path)

# 棒グラフの描画
plt.figure(figsize=(10, 6))
plt.bar(words, freqs, color='skyblue')
plt.xlabel('Words', fontproperties=jp_prop)  # X軸ラベルに日本語フォントを指定
plt.ylabel('Frequency')
plt.title('Top 20 Words by Frequency')
plt.xticks(rotation=45, ha='right', fontproperties=jp_prop)  # X軸のラベルを回転させて読みやすくし、日本語フォントを指定
plt.tight_layout()
plt.show()

Counter(word_list)でword_list内の単語頻出頻度をカウントします。これにより各単語の出現回数が辞書の形で返されます。
word_freq.most_common(20)で出現頻度の高い上位20件の単語とその頻度を取得します。
zip(*top_words)で上位単語と頻度をそれぞれwordsとfreqsリストに分割します。単語と頻度を別々のリストとして取得できます。
今回は日本語フォントをグラフに適用させたいので、日本語フォントのファイルパスを指定し、FontPropertiesオブジェクトを作成しておきます。Matplotlibで描画すると以下のようなグラフが表示されます。

#WordListに含まれる言葉を空白で区切って一つの文字列にする
words_wakachi = " ".join(word_list)
print(words_wakachi)

#日本語のフォントを指定する
font = 'BIZ-UDGOTHICB.TTC'

#意味のない言葉を除外する
stopWords = ["さ","する","これ","あり","こと","でき","し","い","ため"]

#WordCloudを表示する
word_cloud = WordCloud(font_path=font, width=800, height=400,
                        stopwords=set(stopWords),min_font_size=5, 
                        collocations=False, background_color='white', 
                        max_words=400).generate(words_wakachi)

figure = plt.figure(figsize=(15,10))
plt.imshow(word_cloud)
plt.tick_params(labelbottom=False, labelleft=False)
plt.xticks([])
plt.yticks([])
plt.show()

まず、word_listを空白で区切り一つの文字列にします。

もともとは↑でしたが、加工後は↓のようになりました。

日本語フォントを指定し、stopWordsで意味のない言葉を指定しておきます。
WordCloudでWordCloudを表示するための準備を行い、Matplotlibで描画をすると、以下のようになります。

  • この記事を書いた人

Haru

会社員。育休2回取得、40代で転職。
職種はデジタルマーケティング。
ポケモン、スノボ、IT系の学び、キャリア、育児について発信していきます。

-Python, 仕事・キャリア
-, , ,