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

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

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

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

Mecab

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

Q&A

解決済

1回答

3298閲覧

parseToNodeが許容する型について

bunks

総合スコア30

Python 3.x

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

Mecab

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

0グッド

0クリップ

投稿2018/10/09 04:31

編集2018/10/09 05:10

さくらVPS(CentOS7)でMeCabを使用するDjangoアプリ作っているのですが,以下のコードの
node = self.tagger.parseToNode(sentence)

'str' object has no attribute 'parseToNode'
とエラーが出ます。
sentence.encode('utf-8')
としても同様です。

また,色々なサイトを見ていると,str型のでもエラーが出ていないようなものもあるように見えます。

上記,エラーの解決方法とstr型でもエラーが出ない場合がある理由を教えてください。

def __init__(self, text): u""" 初期化メソッド @param text チェーンを生成するための文章 """ if isinstance(text, str): text = text.decode("utf-8") self.text = text # 形態素解析用タガー self.tagger = MeCab.Tagger('-Ochasen') def _morphological_analysis(self, sentence): """ 一文を形態素解析する @param sentence 一文 @return 形態素で分割された配列 """ morphemes = [] node = self.tagger.parseToNode(sentence) ←←← while node: if node.posid != 0: morpheme = node.surface morphemes.append(morpheme) node = node.next return morphemes

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

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

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

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

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

guest

回答1

0

ベストアンサー

問題は入力データの型の問題ではなく self.tagger 自体が str型になっていることかと思います。

ということで、

  1. クラスの __init__()メソッドなどで、self.tagger = MeCab.Tagger(...)

等の記述が間違いなく入っている
2. 他の箇所で self.tagger を上書きしていないか

等を確認するとよいのではないでしょうか

投稿2018/10/09 04:56

編集2018/10/09 04:58
magichan

総合スコア15898

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

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

bunks

2018/10/09 05:14

回答ありがとうございます。 上記の点確認しましたが,問題なさそうでした…。 ローカル(MacOS)ではこのコードで動くのですが,VPS(CentOS7)に移行すると,エラーとなってしまします。
magichan

2018/10/09 05:20 編集

問題ありませんか・・。 試しに node = self.tagger.parseToNode(sentence) の直前に print(type(self.tagger)) あたりを入れるとどのように表示されますか?
bunks

2018/10/09 06:19

ローカル,VPS共に<class 'MeCab.Tagger'>となります。 色々いじってたのですが,別のエラーを解決するためにinitで self.tagger = MeCab.Tagger('-Ochasen').parse('')となっていたようで, 表題のエラーについては解決しました。 お手数おかけしてすみません。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問