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

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

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

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

Python 3.x

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

Twitter

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

Q&A

解決済

1回答

394閲覧

Tweepyでurlとハッシュタグを除去したツイートを取得したい

LUCKEY113

総合スコア4

Django

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

Python 3.x

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

Twitter

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

0グッド

0クリップ

投稿2023/01/21 02:36

前提

Tweepyでツイートを取得して,MeCabにかけようとしています.

実現したいこと

Tweepyでツイートを取得する際にurlとハッシュタグが書かれていない
ツイートを取得したいです.

urlも解析されてしまい,余計な結果が得られてしまうからです.

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

該当のソースコード

python

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

試したこと

検索ワードに-filter:links をつけて取得しようとしましたが,モデルから取得してきた文を
MeCabにかけて変数にしたものを検索ワードとしているのでうまく動作しませんでした.

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

django4.1.4
python3.10.8
tweepy

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

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

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

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

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

guest

回答1

0

ベストアンサー

urlも解析されてしまい,余計な結果が得られてしまうからです.

ここが問題ならば、発想を変えて、URLやハッシュタグを含まないツイートをフィルタリングするのではなく、正規表現を利用して、取得したツイート文字列からURLやハッシュタグを除去すればよいのではないでしょうか。

py

1text = "これはUrl・ハッシュタグを含む文章です。 https://www.teratail.com/ #ハッシュタグ" 2 3# URLにマッチする正規表現パターン 4pattern_url = r"https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)" 5 6# ハッシュタグにマッチする正規表現パターン 7pattern_hashtag = r"#[\w]+" 8 9# URL除去 10text = re.sub(pattern_url, "", text) 11 12# ハッシュタグ除去 13text = re.sub(pattern_hashtag, "", text) 14 15print(text)

投稿2023/01/21 02:51

編集2023/01/21 03:10
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問