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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Mecab

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

Q&A

解決済

1回答

358閲覧

tweepyで取得したツイートをそのままMeCabにかけたい

LUCKEY113

総合スコア4

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

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

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Mecab

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

0グッド

0クリップ

投稿2023/01/20 05:58

前提

ユーザが文を入力した際にそれをMeCabにかけ,
その中から名詞と形容詞であるものを抽出し,それをTweepyより
ツイートを取得し,それらをまたMeCabにかけようとしていますが
Type errorになってしまいます.

例)
ユーザ:おにぎりを買う

MeCab:おにぎり を 買う

おにぎり

Tweepy:おにぎりに関するツイートを取得

おにぎりはおいしい

MeCab: おにぎり は おいしい

というような感じです.

実現したいこと

上記の例のようにしたいです.

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

TypeError at /hello/tw_an in method 'Tagger_parseToNode', argument 2 of type 'char const *' Request Method: GET Request URL: http://127.0.0.1:8000/hello/tw_an Django Version: 4.1.4 Exception Type: TypeError Exception Value: in method 'Tagger_parseToNode', argument 2 of type 'char const *'

該当のソースコード

python

1def tw_an(request): 2 idea1 = IdeaModel.objects.filter(paper=1, section=1).first().idea1 3 #モデルに保存されているレコードを取得しています 4 5 tagger = MeCab.Tagger() 6 node = tagger.parseToNode(idea1) 7 words = [] 8 hinshis = [] 9 10 while node: 11 word = node.surface 12 hinshi = node.feature.split(",")[0] 13 if hinshi == "名詞" or hinshi == "形容詞": 14 words.append(word) 15 hinshis.append(hinshi) 16 node = node.next 17 18 # Twitterの認証 19 省略 20 21 # 検索条件の設定 22 search_word = words 23 24 # 何件のツイートを取得するか 25 item_number = 1 26 27 # 検索条件を元にツイートを抽出 28 tweets = tweepy.Cursor(api.search_tweets, q=search_word, tweet_mode='extended', result_type="mixed", lang='ja').items(item_number) 29 30 # 抽出したデータから必要な情報を取り出す 31 # 取得したツイートを一つずつ取り出して必要な情報をtweet_dataに格納する 32 tw_data = [] 33 34 for tweet in tweets: 35 # tweet_dataの配列に取得したい情報を入れていく 36 tw_data.append([ 37 tweet.full_text, 38 ]) 39 40 41 for data in tw_data: 42 tagger = MeCab.Tagger() 43 tw_node = tagger.parseToNode(data) 44 tw_words = [] 45 tw_hinshis = [] 46 47 while tw_node: 48 tw_word = node.surface 49 tw_hinshi = node.feature.split(",")[0] 50 if tw_hinshi == "名詞" or tw_hinshi == "形容詞": 51 tw_words.append(tw_word) 52 tw_hinshis.append(tw_hinshi) 53 tw_node = node.next 54 55 56 params = { 57 'title': 'Hello', 58 'word': words, 59 'data': idea1, 60 'result': tw_data, 61 } 62 return render(request, 'hello/tw_an.html', params)

試したこと

取得してきたツイートがMeCabにかけられないのかと思い,
文字型にしようとしたりしましたが無理でした.

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

django 4.1.4
python
mecab 0.996.3
tweepy3.10.8

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

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

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

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

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

guest

回答1

0

ベストアンサー

tw_data.append([tweet.full_text])にて、full_textではなくfull_text1個を持つリストを追加しており、そのため提示エラーが発生しています。
[]は不要でしょう。

Python

1import MeCab 2 3tagger = MeCab.Tagger() 4for data in ['今日は晴れ', ['今日は晴れ']]: 5 print(data) 6 tw_node = tagger.parseToNode(data) 7""" 8今日は晴れ 9['今日は晴れ'] 10Traceback (most recent call last): 11(略) 12TypeError: in method 'Tagger_parseToNode', argument 2 of type 'char const *' 13"""

投稿2023/01/20 06:08

can110

総合スコア38266

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

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

LUCKEY113

2023/01/21 01:56

ありがとうございます.この方法で無事できました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問