質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

6149閲覧

MeCabで形態素解析して,動詞の基本形の情報について

退会済みユーザー

退会済みユーザー

総合スコア0

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2018/12/01 06:02

編集2018/12/01 07:31

前提・実現したいこと

Mecabで形態素解析して,動詞の基本形の情報を用いた作業がしたいのですが,どのようにして動詞の基本形の情報を使ったら良いかが分かりません.
良ければご教授願いたいです.

イメージ説明

該当のソースコード

Python

1def extractKeyword(text): 2 tagger = MeCab.Tagger('-Ochasen') 3 tagger.parse('') 4 node = tagger.parseToNode(text) 5 keywords = [] 6 while node: 7 if node.feature.split(",")[0] == u"名詞": 8 if node.stat == 0 or node.feature.split(",")[1] != "サ変接続": 9 keywords.append(node.surface) 10 elif node.feature.split(",")[0] == u"形容詞": 11 keywords.append(node.surface) 12 elif node.feature.split(",")[0] == u"動詞": 13 keywords.append(node.feature.split(",")[6]) 14 elif node.feature.split(",")[0] == u"助詞": 15 keywords.append(node.surface) 16 node = node.next 17 return keywords 18 19text = input() 20print(extractKeyword(text)) 21 22print("入力文") 23text = input() 24print(extractKeyword(text)) 25

試したこと

形態素解析して6番目の情報なのでnode.feature.split(",")[5]にしたりしてみましたが,うまくいきませんでした...

補足情報(FW/ツールのバージョンなど)

Python3.7.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これは以前の私のコメントが悪かったですかね。0から数えて6番目ですから、文字通りfeature.split(",")[6]でいけると思います。

形態素によっては基本形の情報がなかったりするので、*が出てきたら飛ばすとか、そもそもsplitして6まで取れる長さにならないことも稀にあるとか、その辺に注意する必要があります。

投稿2018/12/01 06:31

編集2018/12/01 06:35
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/12/01 06:41

回答ありがとうございます. [6]にしてもうまく基本形が出力されませんでした...
hayataka2049

2018/12/01 06:44

あれ、うまくいきませんか。どんなのが出ました?
退会済みユーザー

退会済みユーザー

2018/12/01 06:50

名詞,形容詞,助詞は出るのですが,動詞のみが出ませんでした.
退会済みユーザー

退会済みユーザー

2018/12/01 06:51

動詞は何も出ませんでした.
hayataka2049

2018/12/01 06:54

質問文にその処理が含まれたコードと、得られる結果を載せてみてください
退会済みユーザー

退会済みユーザー

2018/12/01 07:03

記載しました.
hayataka2049

2018/12/01 07:06

node.feature.split(",")[6] == u"動詞" は意味をなしません。品詞タグの位置は0です。 node.feature.split(",")[0]が"動詞"のときにnode.feature.split(",")[6]を取れば動詞の原形が取れるということです。
退会済みユーザー

退会済みユーザー

2018/12/01 07:11

では,if node.feature.split(",")[6] == u"原形": のようにしたら良いということでしょうか?
hayataka2049

2018/12/01 07:14

それも違います。とりあえずkeywordsにsurfaceをappendする代わりに原型をappendすれば良いのでは(ifの条件はぜんぶもとに戻した上で)
退会済みユーザー

退会済みユーザー

2018/12/01 07:18

すみません,勉強不足のせいでご迷惑をおかけしております. elif node.feature.split(",")[6] == u"動詞": keywords.append(node.base) このような感じでしょうか?
hayataka2049

2018/12/01 07:21

elif node.feature.split(",")[0] == u"動詞": keywords.append(node.feature.split(",")[6])
退会済みユーザー

退会済みユーザー

2018/12/01 07:25

ありがとうございます. しかし,記載している画像と同じ結果になりました...
hayataka2049

2018/12/01 07:28

私の手元では上のコメントの方法でうまく行っています。書き換えたコードを質問文に乗せてみてください
退会済みユーザー

退会済みユーザー

2018/12/01 07:31

すみません,うまくいきました. ありがとうございます!
退会済みユーザー

退会済みユーザー

2018/12/01 07:38

すみません,原形にした後に,再び元の活用形に変換することは可能なのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問