1. まとめトップ

Janetter用正規表現ミュートワード講座

Janetter使いに贈る、ミュートのあれこれ

更新日: 2014年08月02日

20 お気に入り 59024 view
お気に入り追加

この記事は私がまとめました

infogain_botさん

私はJanetterでテレビ実況TLを見ることが多いのですが、非常に鬱陶しいツイートが挿入されることも珍しくありません。
そこで、ミュートワード(いわゆるNGワード)やミュートアプリにに正規表現を使用して、フィルタリングをしています。
ここでは、テレビ実況用にかぎらず、私が実際に試して使えたワードミュート用の正規表現を公開しています。

なお、正規表現はアプリに負荷をかけるらしく、複雑なものや強度の高いものは、動作不安定化のもとです。特に、複雑なワードミュートを使う場合は注意してください。

正規表現のワードミュートは、アプリミュートやユーザミュートで対処しきれない時に1~2個ぐらい導入する、という使い方が安全です。

使い方

残念ながら、このサイトに掲載されているワードは、全てのユーザの都合に合わせたものではありません
ですから、ご自身のTLの状況に応じて、内容を調整してみてください

(.*(たこ|いか|まぐろ|くじら)){2,}

たとえば、上記のようなワードは () の中が | (パイプと呼ばれる記号)で区切られており、ワードを追加することができます。
また、 {2,} の部分は、「直前に書かれているワードの組み合わせが2つ以上含まれている場合」という意味ですので、数値を大きくするとミュートしにくくなり、数値を小さくするとミュートしやすくなります(これは上記のワードの中での挙動であり、厳密な文法の意味とは違います)
もっと詳しい仕様を知りたい方は、ご自身で正規表現を勉強するほうが早いと思いますので、ページ最後尾のリンクを参照してください

基本編

(人|ら|は)(RT|フォロ)

リツイートやフォロー要求系のツイートを排除する基本形

文法
|
でミュート対象となるワードを複数選択し
()
でグループ化することで

人RT
人フォロ
らRT
らフォロ
はRT
はフォロ

という、パターンが含まれるツイートをミュートする
ただし、ミュートワードを簡単なものにすると、問題のないツイートまでミュート対象にするリスクが増えます

ハッシュタグ乱用対策

(.*(#|#)[^\s]+){5,}

ハッシュタグを5つ以上使っている場合にミュート。多くのユーザは、5つ以上のハッシュタグを必要としない
ツイッターのヘルプには2つ以下が推奨と記載されています

文法
ハッシュタグの文字(#|#)の直後に
空白以外の1文字以上[^\s]+で、ハッシュタグの特徴をつかみ、
直前に.*をつけることで、ハッシュタグの特徴が連続していなくともマッチするようにし
それらを()で、グループ化して、
{5,}をつけて、最小繰り返し数を指定


応用
(.*(#|#)[^\s]{3,}){5,}

3文字以上のハッシュタグ5つ以上でミュート

別種の応用
(.*(#|#|@|@)[^\s]+){5,}

 ハッシュタグやリプライ宛先が5つ以上ある場合にミュート
 たいてい、こういうツイートは単なるノイズにしかなりません


別種の応用のさらなる応用 (2014/06/18 より簡単な表記へ微修正)
(.*((#|#|@|@|h?ttps?:)[^\s]+)){5,}

 さらに、リンクも含めてみる
 とにかく、ハッシュタグ、リプライ宛先、リンクなどで埋まっているツイートは、たいてい、単なるノイズかスパムです

なお、通常、ハッシュタグの検出は

(#|#)[\w]+

このように行うようですが、私はJanetterの正規表現で空白改行などがどのように処理されるのかを知らないため、複数のハッシュタグの間が空白で区切られるという特性を考えて

(#|#)[^\s]+

という形で、ハッシュタグを検出しています

メディアタグ乱射対策

(.*(#|#)[^\s]*(nhk|etv|fujitv|tbs|tvasahi|ntv|tvtokyo)){3,}

メディア関連のタグを3つ以上使っている場合にミュート。多くのユーザは、多数の異なるメディア関連のハッシュタグを併用しない
他のカテゴリにも応用可能なので、乱射されやすいハッシュタグを組み合わせてみよう

文法
空白以外が1字以上[^\s]+の代わりに、
[^\s]*() と記述して、括弧内に文字列を指定
これにより、(#|#)の直後に他の文字列が含まれても、タグ内に指定文字列さえあればマッチする
どうやら、大文字小文字は区別せず検出するっぽい


短縮形
(.*(#|#)[^\s]*(tv|nhk|tbs)){3,}

テレビ系ハッシュタグの多くに共通するtvの文字検出に集約して短縮
ただし、余計なハッシュタグまで巻き込まれる可能性が増えます


ちょっと追加
(.*(#|#)[^\s]*(tv|nhk|tbs|フォロ|follow|RT)){3,}

フォロー要求型のノイズを排除するために、フォロー関連の用語を含めてみる


更に発展
(.*(tv|nhk|tbs|RT|@|緊急|拡散|募集|相互|フォロ|follow)){3,}

ハッシュタグ以外も含めて検出し、ノイズ対策を追加
ミュート強度が更に高く、巻き込みリスクも高く
2文字以下のように汎用性が高い文字列を入れるとミュート強度は高くなりますが、余計なものまで巻き込まれます


【実用版】
(.*((#|#)(nhk|fujitv|tbs|tvasahi|ntv|tvtokyo)|拡散希望|sougo|フォロ|フォロ|follow|amzn\.|a\.r10|naver\.)){2,}

主要メディア系ハッシュタグとノイズ用語のうち、いずれかが2つ以上含まれていればミュート
基本的な強度が高いため、一般的な用語を含めてしまうと、番組中の用語も対象になる場合があるので、注意
複数にまたがるメディア関連のハッシュタグを使うのは、たいていノイズにしかならないので、このワードはミュート範囲を狭く、かつ、強度を高く設定しています
個人的には、テレビ実況では最も実用的です

論争ノイズ対策

(.*(【|偏向|侵略|愛国|在日|反日|売国|マスゴミ|デモ|ウヨ|サヨ|不買|原発|放射能|捕鯨|売春|死刑|テロ|アンチ|信者|人権|反対|廃止|拡散|緊急|署名|陰謀|捏造|工作)){3,}

無関係なタグに紛れ込んでノイズになりやすい政治、宗教、思想など、論争傾向の強い用語が3つ以上含まれている場合にミュート
カテゴリ毎に分けてみたり、罵倒語などを含めてもいいかもしれない

広告ノイズ対策

(amzn\.|amazon\.|a\.r10|rakuten\.|ameblo\.)

広告ノイズに含まれるリンク内の特徴的な文字列を検出
短縮リンクの場合、リンク先のアドレスには適用されないので注意


応用
(?=.*(amzn\.|amazon\.|a\.r10|rakuten\.|dmm\.|ameblo\.|楽天|アマゾン|[aA]mazon|Yahoo|DMM|ショッピング|通販|チェック|ブログ|NAVER|フォロ|follow))(?=.*h?ttps?:)

(?=)(?=)で、AND検索が可能らしいので、特徴的な用語とリンクが同時に含まれているツイートをミュート対象に
宣伝用語とリンクを検出するので、短縮リンクにも、やや有効です

[追記]
 AND検索は、いずれか1つのワードを (?=.*) という形にしないと、うまく検出しませんので、ご注意ください。
 3つ以上のAND検索は試していません。


更に応用
(?=(.*(【|限定|懸賞|プレ|キャンペ|チェック|わずか|だけ|簡単|こちら|紹介|方法|OFF|\\|完|月|楽|円|品|販|売|店|増|得|特|価|割|値|引|料|券|裏|稼|儲|⇒)){3,})(?=.*h?ttps?:)

リンクの特徴を無視し、広告関連用語3つ以上とリンクが同時に含まれているときにミュート
やや強度は落ちますが、広告の特徴的なワードをつかむために、汎用性の高いワードを含めてみました
正直、これをやるなら、自動投稿系のアプリミュートのほうが有効ですが

正規表現の中に記述するURLについて

短縮URLに多く見られる .(ピリオド)の文字を正規表現の中で使用する場合、その前に \(エスケープ文字)を記述し、

\.

と、このような形式にする必要があります
たとえば、グーグル提供の短縮URL
goo.gl
を正規表現で表記する場合は

goo\.gl
となります
ご注意ください
(他にもいくつか、エスケープが必要になる文字が存在しており、ワードのサンプルの中で\が記述されている場合は、だいたいエスケープ目的です)

ツイッター系ノイズ対策

(.*(自動|rt|RT|follow|フォロ|フォロ|100|100|%|%|8|ふぁぼ|fav|拡散|ブログ)){3,}

ツイッターで多用されるリツイートやフォロー関係のノイズ対策
関連用語3つ以上でミュート対象


応用
(.*((人|ら|は)?(rt|RT)(し|され|ごと|毎)?|(相互|人|100%|100%)?(follow|フォロ|フォロ)(返し|100|100|獲得|増|)?|ふぁぼ|fav|拡散|ブログ|h?ttps?:)){3,}

ツイッター規約違反のフォロワー獲得系サービス対策も兼ねて用語やリンクが3つ以上含まれている場合にミュート

括弧を利用したスパム対策

(.*(【|『|「|[|\[)){2,}

 複数の鍵括弧(または大括弧)があるツイートには、過剰な強調表現を利用した広告宣伝目的のスパムが多く含まれています
 無関係のハッシュタグに紛れ込んでいる場合もあります
 テレビやゲームのセリフのような問題のないツイートも多いのですが、スパムの排除を優先するときは有効なワードとなるでしょう


(.*(【|『|「|[|\[|{|\{|〈|《)){2,}

 中括弧、山括弧を追加したバージョン
 あまり見られないのですが、一応、スパム排除の強度を高める目的で入れてみました



(【|『|「|[|\[).*(速報|定期|拡散|署名|最新|ニュース|ブログ|更新|!).*(】|』|」|]|\])

 括弧に囲まれた特定のワードを指定することで、スパムの傾向を絞り込むことができます

※旧「割り込み型ノイズ対策」
(【|\[).*(宣伝|拡散|緊急|定期|禁止|反対|署名|方法|bot).*(】|\])



(.*((#|#|@|@|h?ttps?:)[^\s]+|【|『|「|[|\[)){4,}

 ハッシュタグ乱用対策、乱射対策など、他のミュートワードに括弧対策を追加することで、より柔軟に、より効果的にスパム対策をすることができるようです

単語乱射対策

([^\s\n##]{3,10}(\s|\n|#|#)+){5,}

3文字以上10文字以下の文字列の後に、空白、改行、その他の区切り文字があるパターンが5つ以上の場合、ミュート
ハッシュタグ乱射にも部分的に有効

文法
区切り文字のみの繰り返しを検出しないよう
[^\s\n##]
と、
(\s|\n|#|#)
には同じ文字を入れることが大切


※わかりにくかったので補足
ボカロ 艦これ 東方 パズドラ エンジェルビーツ

など、半角スペースなどで区切って単語を羅列したようなツイートを標的としたミュートです(上記のサンプルワードはミュートできませんが、文字数を調整するなどして試してみてください)

誘導ツイート対策

※無駄に冗長な部分があったので、全体的に修正しました(2014/03/27)

^((#|#|h?ttps?:)[^\s]+|\s|\n)+$

文法上、1行内がハッシュタグやリンク、空白、改行だけで構成されている場合にマッチし、ミュート対象となる
はずだったのに、なぜか、1ツイート内の構成にマッチするという
\nを書いたためだろうか?

※正規表現では\sで空白改行を意味するのですが、全角スペースや改行など、一部がまれにミュートされない場合があるようです(原因はわかりません)

リプライも含めたバージョンは以下のとおり

^((#|#|@|@|h?ttps?:)[^\s]+|\s|\n)+$

非公式リツイート乱用対策

^([RQ]T|[RQ]T)\s(@|@)

リツイート用の文字がツイート先頭にあればミュート


^.{0,3}(@|@|[RQ]T|[RQ]T)

ツイートの先頭が(0文字以上)3文字以下の文章で、その直後にリプライやリツイート用の文字が含まれていれば、ミュート

1 2 3