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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Mecab

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

自然言語処理

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

Q&A

解決済

1回答

4556閲覧

pythonの形態素解析における文字エラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Mecab

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

自然言語処理

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

0グッド

0クリップ

投稿2018/08/31 15:11

前提・実現したいこと

Mecabを使って、特定の品詞を出力しようとしています。

発生している問題・エラーメッセージ

stopワードを設定して、また未知語を除かない設計にすると、
以下のエラーが出てしまい、解決方法がわからず困っています。

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-11-bef4bebf1ee9> in <module>() 27 return keywords 28 text = "東京(日本)" ---> 29 extractKeyword(text) <ipython-input-11-bef4bebf1ee9> in extractKeyword(text) 17 keywords = [] 18 while node: ---> 19 features = tuple(node.feature.split(",")) 20 if features[0] == u"名詞" and features[:3] not in STOP_POS: 21 keywords.append(node.surface) AttributeError: 'str' object has no attribute 'feature'

該当のソースコード

python

1import sys 2import MeCab 3STOP_POS = { 4 ('名詞', '副詞可能', '*'), 5 ('名詞', '非自立', '副詞可能'), 6 ('名詞', '非自立', '一般'), 7 ('名詞', '接尾', '副詞可能'), 8 ('名詞', '接尾', '助数詞'), 9 ('名詞', '数', '*'), 10} 11 12 13def extractKeyword(text): 14 tagger = MeCab.Tagger('-Ochasen') 15 tagger.parse('') 16 node = text 17 keywords = [] 18 while node: 19 features = tuple(node.feature.split(",")) 20 if features[0] == u"名詞" and features[:3] not in STOP_POS: 21 keywords.append(node.surface) 22 elif features[0] == u"形容詞" and features[1] == u"自立": 23 keywords.append(node.surface) 24 elif features[0] == u"動詞" and features[1] == u"自立": 25 keywords.append(node.surface) 26 node = node.next 27 return keywords 28text = "東京(日本)" 29extractKeyword(text)

試したこと

以下のコードでは、エラーなく実行可能でした。

python

1import sys 2import MeCab 3def extractKeyword(text): 4 tagger = MeCab.Tagger('-Ochasen') 5 tagger.parse('') 6 node = tagger.parseToNode(text) 7 keywords = [] 8 while node: 9 if node.stat != 0: 10 node = node.next 11 continue 12 if node.feature.split(",")[0] == u"名詞": 13 keywords.append(node.surface) 14 elif node.feature.split(",")[0] == u"形容詞": 15 keywords.append(node.surface) 16 elif node.feature.split(",")[0] == u"動詞": 17 keywords.append(node.surface) 18 node = node.next 19 return keywords 20text = "東京(日本)" 21extractKeyword(text)

出力

['日本', '東京']

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

python3.6

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1 node = text

のせいだと思いますけど。

あとreturnの位置が変。

投稿2018/08/31 22:41

hayataka2049

総合スコア30933

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問