1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MeCab Jupyterで形態素解析をして名詞のみをリストアップした

Last updated at Posted at 2019-02-18

まずは試しに解析してみる

import MeCab as mc
tagger = mc.Tagger('')
results = tagger.parse('列島縦断 鉄道乗りつくしの旅~JR20000km全線走破~ダイジェスト')
print(results)

# 列島	名詞,一般,*,*,*,*,列島,レットウ,レットー
# 縦断	名詞,サ変接続,*,*,*,*,縦断,ジュウダン,ジューダン
# 鉄道	名詞,一般,*,*,*,*,鉄道,テツドウ,テツドー
# 乗り	名詞,接尾,一般,*,*,*,乗り,ノリ,ノリ
# つくし	名詞,一般,*,*,*,*,つくし,ツクシ,ツクシ
# の	助詞,連体化,*,*,*,*,の,ノ,ノ
# 旅	名詞,サ変接続,*,*,*,*,旅,タビ,タビ
# ~	名詞,サ変接続,*,*,*,*,*
# JR	名詞,一般,*,*,*,*,*
# 20000	名詞,数,*,*,*,*,*
# km	名詞,一般,*,*,*,*,*
# 全線	名詞,一般,*,*,*,*,全線,ゼンセン,ゼンセン
# 走破	名詞,サ変接続,*,*,*,*,走破,ソウハ,ソーハ
# ~	名詞,サ変接続,*,*,*,*,*
# ダイジェスト	名詞,サ変接続,*,*,*,*,ダイジェスト,ダイジェスト,ダイジェスト
# EOS

文字列形式でアウトプットされ、tabやら改行やら、カンマなどいろいろ区切り文字があるのでめんどくさそう。

ちなみに名詞は名詞でも英語(ローマ字)は以下のように、カンマの区切りの数も変わるよう

tagger = mc.Tagger('')
results = tagger.parse('NHK紅白歌合戦')
print(results)

# NHK	名詞,固有名詞,組織,*,*,*,*             <= カンマ6個
# 紅白	名詞,一般,*,*,*,*,紅白,コウハク,コーハク     <= カンマ8個
# 歌合戦	名詞,一般,*,*,*,*,歌合戦,ウタガッセン,ウタガッセン <= カンマ8個
# EOS

名詞だけ抽出してみる

簡単な処理の順番

処理の順番的には、

①形態素解析

②改行で分割

③tabで分割

2つに別れる
["紅白","名詞,一般,*,*,*,*,紅白,コウハク,コーハク"]

④後半をさらにカンマで分割

['名詞','一般','*','*','*','*','紅白','コウハク','コーハク']

⑤上記リストの始まりが名詞であれば、名詞リストに追加

ソースコード

# 名詞を抽出
def extractNoun(text):
    tagger = mc.Tagger('')
    results = tagger.parse(text)
    keywords = []
    keywords_kana = []
    for r in results.split('\n'):
        cols = r.split("\t")
        if len(cols) >= 2:
            parts = cols[1].split(",")
            if parts[0].startswith("名詞"):
                keywords.append(cols[0])
                if len(parts) > 7
                    keywords_kana.append(parts[7])
    return keywords, keywords_kana

色々試してみた

list = [
    'NHKニュース',
    '生活の知恵',
    'ピーマン袋',
    '生活ほっとモーニング',
    '土曜元気市',
    'お元気ですか日本列島',
    '経済羅針盤'
]

for name in list:
    keyword, kana = extractNoun(name)
    print('' + name)
    print('名詞  : ' + ','.join(keyword))
    print('カナ   : ' + ','.join(kana))


# ○NHKニュース
# 名詞  : NHK,ニュース
# カナ   : ニュース
# ○生活の知恵
# 名詞  : 生活,知恵
# カナ   : セイカツ,チエ
# ○ピーマン袋
# 名詞  : ピーマン,袋
# カナ   : ピーマン,ブクロ
# ○生活ほっとモーニング
# 名詞  : 生活,モーニング
# カナ   : セイカツ,モーニング
# ○土曜元気市
# 名詞  : 土曜,元気,市
# カナ   : ドヨウ,ゲンキ,シ
# ○お元気ですか日本列島
# 名詞  : 元気,日本,列島
# カナ   : ゲンキ,ニッポン,レットウ
# ○経済羅針盤
# 名詞  : 経済,羅針盤
# カナ   : ケイザイ,ラシンバン

最後に

次回は実際に名詞が羅列されたcsvやエクセルを読み込んで
いい感じにDataFrameにするところまでやりたい

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?