- いつもの
#幻水総選挙2022
#幻水総選挙2022協力攻撃
#幻水総選挙お題小説
#幻水総選挙推し台詞
#幻水総選挙運動
取得方法は次の通り。日時範囲は任意で。
tweets = BySearchWordTweet.where(search_word: "#幻水総選挙運動").where(tweeted_at: Time.zone.parse("2022-05-01").end_of_day..Time.zone.parse("2022-06-26").end_of_day).remove_duplicated.remove_retweet.remove_specific_user_with_id_number(1471724029).remove_specific_user_with_id_number(1388758231825018881).order(tweeted_at: :asc);
- 5分ぐらいかかる
- products <-----> characters <-----> nicknames
- いずれも 多対多 の関係
$ bundle exec rails suikoden_database:import
$ bundle exec rails suikoden_database:destroy
$ bundle exec rails suikoden_database:destroy
- ツイート or DM を指定して、Natural Language に投げる
- 受け取った戻り値を JSON化 するなどして analyze_syntaxes に保存する
- これを cron する
- 一つの ツイート or DM につき 1つの analyze_syntax が得られる
- API の戻り値のレコードをまるまる一つに収めたものである
- 中身は JSON とかあるので掘っていくと個数は多い
sentences
とtokens
が多い- なお
tokens
しか使わない
- PickupCharacterNames.execute(tweet_or_dm_object) によって候補名が配列で得られる
- 中身は結構複雑
- 中身
- AnalyzeSyntax#check_words によって、キャラ名データベースと比較するべき単語を配列で得る
- この際、除外条件を継ぎ足し継ぎ足ししていっている
- 作りは最低なのでリファクタすべき
- この際、除外条件を継ぎ足し継ぎ足ししていっている
- AnalyzeSyntax#check_words によって、キャラ名データベースと比較するべき単語を配列で得る
c = CloudLanguage.client
context = "テッドとルカに。"
response = NaturalLanguage::Analyzer.analyze_tweet_syntax_by_api(c, context)
attrs = {
language: response.language,
sentences: response.sentences.map(&:to_json),
tokens: response.tokens.map(&:to_json),
tweet_id: nil,
direct_message_id: nil,
}
as = AnalyzeSyntax.new(attrs)
PickupCharacterNames.exec(as)