AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  形態素解析をして日本語の文章を単語区切りにする方法

公開日:2017.10.02 [最終更新日]2017.10.23

形態素解析をして日本語の文章を単語区切りにする方法

カテゴリー: AI(人工知能)の作り方

こんにちはAI研究所のマサミです。
今回は、日本語の文章を単語で区切る「形態素解析」の方法について書きたいと思います。

形態素解析とは、日本語などの自然言語の文章を、意味を持つ最小の単位である「形態素」に分割し、品詞を判別する作業です。
例えば、AI研究所のキャッチフレーズ「AIに脅かされないために、AIを作る側の人間になる」を形態素解析すると以下のようになります。

形態素解析の例
「AI / に / 脅かさ / れ / ない / ため / に / 、 / AI / を / 作る / 側 / の / 人間 / に / なる」

形態素解析は、機械学習で使用するデータを作成する際にもよく利用されます。
例えば、スパムメールの判定を機械学習させる際に単語の出現頻度を学習データとして使用することがありますが、その際にも形態素解析を利用することができます。


形態素解析を実際にやってみる

代表的な形態素解析の手法として、文法規則性による方法と、確率的言語を用いる方法の2種類がありますが、そういった手法を用いた形態要素解析ライブラリがすでに世の中にたくさんあります。
それらのライブラリはオープンソースで配布されていてPythonで利用できるものもありますので、今回は「Janome」というライブラリを使って形態素解析をしてみたいと思います。

まずは、先ほど例にあげたAI研究所のキャッチフレーズ「AIに脅かされないために、AIを作る側の人間になる」を形態素解析してみます。

プログラムはたったの5行です。

from janome.tokenizer import Tokenizer
t = Tokenizer()
copy = t.tokenize("AIに脅かされないために、AIを作る側の人間になる")
for word in copy:
    print(word)

実行した結果はこうなります。

AI	名詞,一般,*,*,*,*,AI,*,*
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
脅かさ	動詞,自立,*,*,五段・サ行,未然形,脅かす,オビヤカサ,オビヤカサ
れ	動詞,接尾,*,*,一段,未然形,れる,レ,レ
ない	助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ
ため	名詞,非自立,副詞可能,*,*,*,ため,タメ,タメ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
、	記号,読点,*,*,*,*,、,、,、
AI	名詞,一般,*,*,*,*,AI,*,*
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
作る	動詞,自立,*,*,五段・ラ行,基本形,作る,ツクル,ツクル
側	名詞,一般,*,*,*,*,側,ガワ,ガワ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
人間	名詞,一般,*,*,*,*,人間,ニンゲン,ニンゲン
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
なる	動詞,自立,*,*,五段・ラ行,基本形,なる,ナル,ナル

では、続いて形態素解析を使って、AI入門セミナーのアンケート結果に出てくる名詞の出現頻度をカウントしてみたいと思います。

以下のアンケート結果を「blog.txt」というファイル名で保存しておきます。

冒頭にお話しいただいた「AIってなんでもできる夢のような技術」というイメージから抜け出すために参加しました。午前の座学が大変わかりやすく、午後のworkでさらに理解を深めることができました。
途中、数学のお話が濃くなった時は焦りましたが。。。
やりたいことに対する事例・アドバイスが聞けるサービス目線のセミナーがありましたらぜひ参加したいです。
__________

これまで様々なセミナーに参加してきましたが、個人的に一番満足できたセミナーでした。自分史上最高のセミナーでした。
プログラミング関係に疎い私でも理解でき、逆にプログラミングに興味を持ち、自分でもプログラミングに携わりたい・作りたいと思いました。
今後、弊社において、AI技術を活用したシステムの開発及びサービスの提供を進めていくうえで、どのような準備が必要なのか、どのようなサービスを提供できるのかを確認することができました。
講師の皆様は、非常にわかりやすく、親切丁寧にご教示くださいました。今後、プログラミング等のセミナーにも参加させていただきたく思います。 ありがとうございました。
__________

AIの仕組みがとても良く理解できた。講義内容も丁寧で面白く、長時間であったが飽きることなく終わることが出来た。
入門という事であるが、十分にdeepな内容で、AIの可能性を示唆してくれる内容だった。
持ち込んだパソコンでトラブルが発生したが、予備機を貸し出してくださり感謝しています。
今回、サプライズ講師の小池氏の講義は興味深く感銘を受けた。特に「AIの民主化」というキーワードに刺激を受け、何か出来ないかと考えを巡らし始めるきっかけを貰うことが出来た。
休憩時間などで、スタッフへの質問にも丁寧に答えて頂き、対応も良かったです。
__________

時間を忘れるほど楽しい経験ができた。
__________

小池さんの生の開発話が大変興味深かった。
クレジットカード審査などは、AIを使わなくてもできるのでは?と思いどのような問題をAIを使って解決すればよいのか、おぼろげながらイメージできるようになりました。
__________

セミナーに参加することにより、自分のAIのイメージが正しいのかどうなのかをある程度、把握することができました。
画像判別の手法は漠然としたものだったのですが、今回のセミナーでなんとなくイメージできたような気がします。
AzureMLも実際に操作することにより、重たかった扉が開き、少し先へ進んでみようと思えるようになりました。
AIをより深く勉強していくためのきっかけを与えてくれる入門編としてはよかったと思います。
__________

自宅から遠かったので迷ったのですが受講して本当に良かった。
次回も受けたいのでご案内お願いします。
__________

今回は「AI入門」ということで、漠然としか知らなかったAIに対して バックボーンの技術や、AzureMLでの実装などを学ぶことで、より具体的なものとなったので良かったです。
ただ、AIに関する知識が具体的になった反面、もっと詳細に知りたいと思う内容が増えてしまいました。(けっして悪いと言っているわけではありません)
__________

なんとなく理解していた人工知能、AI、機械学習の意味がより理解できたと思いました。わかりやすくありがとうございました。
これで終わってしまってももったいないのでぜひ続編をお願いしたいと思います。
__________

説明者以外の方がいて頂いた事で質問しやすかったですし理解も出来ました。
__________

説明は分かりやすく、資料も整っており、操作も一通り出来たので、全般的には大変良かったです。
__________

AIについては、なんとなくキーワードはよく聞くだけで、どういうものかがわかっていなかったですが、セミナーに参加することでAIの仕組みについてわかりやすく説明をしてもらえたので、どういうものができるかのイメージができるようになりました。
Azure MLを使用することで、AIも実際に作成でき楽しくセミナーに参加できました。ありがとうございました。
__________

難しいように見えますが仕組みは簡単につくれる環境があって誰でもできるところが素晴らしいと思いました。
また、それを活用しやすいように解説されて題材も提供されているのでわかりやすくて面白かったです。
__________

AIに関して全く知識が無く、漠然としていましたが、このセミナーを受けて少し霧が晴れた気がすると同時に、AIへの興味が強くなりました。
ありがとうございました。
__________

初めて人工知能のセミナーに参加しましたが、とてもわかりやすい内容でした。
__________

今回は大変勉強になりました。ありがとうございました。
午後の内容がとっかかりとして非常によかったので、より具体的な課題に対する実習主体のコースができたらまた参加したいと思います。
__________

まさか自分が人工知能を作れる日が来るとは思ってもいなかったので大変満足しています。
例えが分かりやすく、人工知能や機械学習の仕組みについても理解することができました。
__________

大変興味深く拝聴いたしました。
知識がまったくゼロの状態から、AIの基本的な仕組みの理解とDeepLearningによる画像認識AIの作成までできて驚いています。
非常に効率的でわかりやすい説明に感謝しております。
__________

azure mlなどのサービスで機械学習が簡単に組めるのを知り、時代の流れの速さに驚きました。
__________

昨今AI関連のセミナは多数開催されており、玉石混交の感がありますが、実際に作成するタイプは斬新でした。
かつ、適度に既製品を使って作成するため、プログラミングの専門知識がなくても、AIの作成プロセスが仮想体験できました。
__________

1日でここまでAIを理解できるとは思いませんでした。
メールの例がとても分かりやすかったです。あと、小テストがあったのでよかったです。
__________

AIの取り掛かりには良いセミナーでした。満足です。
__________

AIソフトの使い方やパラメータの意味が理解できたので活用しやすくなりました。ただ、もう少し数学的な説明があると理解しやすいように思います。
独学では学習の方向性が正しいのか自分では判らないので、このセミナーが参考になってよかったと思います。
__________

AIについて、全くのド素人だった私にも、とても分かりやすく噛み砕いて説明してくださるので、概ね理解することができました。
また実際に操作を体験することができ、AIの仕組みをより深く学ぶことができました。
ありがとうございました。
__________

AIがこんなにも身近に感じられるようになるとは思ってなかったので感動しました!
今後AIをアプリ利用するようなプログラムを作るセミナーを実施予定とのことだったので、また機会があれば受講したいと思います。ありがとうございました!
__________

電気系で情報処理の知識が少なく理解できるかどうか不安だったが、平易な説明だったので分かりやすかった。
さらに、CNNの体験を通じて特徴量を強調させていくモデルについての概要を把握できたと思う。
__________

初心者でもわかりやすいセミナーで安心しました。
意外と簡単にAIが作れることに驚きました。
AIを使ったスマホアプリを作るセミナーなどがあれば参加したいです。
__________

入口として使い方がわかることが非常に良かった。

プログラムコードは以下になります。

from janome.tokenizer import Tokenizer

blog = open("blog.txt", "r")
txt = blog.read()

t = Tokenizer()

word_dic = {}
lines = txt.split("\r\n")
for line in lines:
    blog_txt = t.tokenize(line)
    for w in blog_txt:
        word = w.surface
        ps = w.part_of_speech
        if ps.find('名詞') < 0: continue
        if not word in word_dic:
            word_dic[word] = 0
        word_dic[word] += 1

keys = sorted(word_dic.items(), key=lambda x:x[1], reverse=True)
for word,cnt in keys[:50]:
    print("{0}({1}) ".format(word,cnt), end="")

最後の3行は、出現頻度順に並び替えを行っています。

実行した結果は以下のようになります。

AI(33) こと(20) セミナー(17) よう(14) 理解(13) 参加(11) の(10) 的(8) 説明(7) 大変(6) 
仕組み(6) 内容(6) 学習(6) 作成(6) イメージ(5) 自分(5) プログラミング(5) もの(5) 知識(5) 
人工(5) 知能(5) サービス(4) 非常(4) 今回(4) 技術(3) ため(3) 今後(3) 活用(3) 開発(3) 提供(3) 
丁寧(3) 入門(3) AzureML(3) 操作(3) 具体(3) 機械(3) 簡単(3) 体験(3) お話(2) 午後(2) 数学(2) 
これ(2) 満足(2) 私(2) 興味(2) 講師(2) ご(2) 講義(2) 事(2) 性(2)

ライブラリを使えば簡単に形態素解析ができちゃいますね!

今回はJanomeを使ってみましたが、形態素解析の有名なライブラリとして「MeCab」があります。
MeCabを使う場合は、MeCabをインストールする必要がありますが、Janomeより10倍ほど処理が早いと言われています。

また今度時間があるときに、MeCabに記事も書きたいと思います!

タグ:


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)入門セミナー開催中
AI(人工知能)入門セミナー

AI入門ブログの中の人

AI研究所 研究スタッフ
通称:マサミ
アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。

LINE@

Facebookページ