タイトルをコピペしたブコメを非表示にしたいです。どのようなアルゴリズムが適しているでしょうか?

目的は、はてなブックマークにおけるコメントの内、その人の考えが余り反映されていないコメントを非表示にすることです。
ブコメを目視で観察(http://b.hatena.ne.jp/entry/matome.naver.jp/odai/2131632919918955401)してみると、そのようなブコメにはタイトルをコピペしたものが多かったため、表題の事を質問させて頂きました。
文字数が足りないので、質問の続きはコメント欄に追記致しました。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/09/19 08:39:29
  • 終了:2011/09/26 08:40:03

ベストアンサー

id:pacochi No.1

ぱこち回答回数247ベストアンサー獲得回数1132011/09/25 13:44:30

回答がまだついていないようなので、思い切って回答させていただきます。

書いてはみたものの、こんなのでいいのかなと引っ込み思案気味になって一旦しまったものです。


例示されたエントリをそのまま例に取ると、大体こんな事をやってます。

  1. 「無料で」「学」「べる」「優良英語」「サイト」「まとめ - 」「NAVER 」「まとめ」で区切ります。
  2. 「無料で学」「学べる」「べる優良英語」「優良英語サイト」「サイトまとめ - 」「まとめ - NAVER 」「NAVER まとめ」のように結合して配列にしまいます。
  3. 各コメントでこの文字列を検索して、何割かヒットしたら、タイトルの一部が含まれているとみなします。
  4. 意見 (そこそこの文字数で独自の語が入っている文字列) とタイトルを併記している人をフィルタリングしないよう、最初に区切った語をコメントから消去していって、残った文字数を数えて判定します。

いくつもの文字列を切ったり消したり探ったりしているので、もしかしたらちょっと重いかもしれません。

(例示されたエントリで実行したら、体感としては一瞬でしたが、他の環境でもそうだと言い切れる自信はありません。)

もし重かったら、最初の処理 (タイトルの一部が含まれていると判定するまでの処理) ははしょっても良いかもしれません。


あと、この方法は「ほげほげをほげほげしてほげほげすると・・・」みたいなひらがなだけで構成されたタイトルにはめっぽう弱いです。


Greasemonkey 用のユーザスクリプトをまだちゃんと書いたことが無いので、どれくらい使いまわせるかは未知なのですが、参考になれば嬉しいです。

id:al001

pacochiさん

またまたご回答ありがとうございます!お返事大変遅くなってしまい申し訳ないです;

なるほど!文字種で分割するのですね!この方法なら一文字ずつ分割する必要が無いので高速に処理が出来そうですね。

ブックマークレットまでありがとうございます。実際に使ってみたら結構な精度で非表示にできました!

この方法を使わせていただこうと思います。本当にありがとうございました _ _

2011/11/05 10:36:19
  • id:al001
    以下に具体例を挙げます。
    例えばウェブページのタイトルが「ほげほげの秘密に迫る!:ほげほげをほげほげしてほげほげすると・・・:はてなちゃんの部屋」の場合、
    「見てる/ほげほげをほげほげしてほげほげすると・・・/よー」に類するコメントを非表示にしたいです。
    とどのつまり、タイトルの一部分が引用され、更にそれに何らかの文字列が結合されているコメントを非表示にしたいです。
    はてなブックマークに登録されているタイトル及びコメントは既に取得できています。その二つを使って前述の非表示にしたいコメントを判断するアルゴリズムが知りたいです。
    記述はGreasemonkeyユーザスクリプト内でJavaScriptを用いて行いますが、アルゴリズムさえ分かれば大丈夫だと思います・・・
    ご教示よろしくお願い致します _ _
    # 一応次に自分の思いついたアルゴリズムを記述致します。
  • id:al001
    以下に自分で思いついたアルゴリズムを記述致します。
    1. タイトルとコメントを文字単位に分解し、どれぐらい重複しているのか調べる
    双方の文字列を文字単位に分解し、コメントを配列に、タイトルをハッシュにそれぞれ格納します。そして、コメントの文字の何割がタイトルに入っている文字であるかを調べます。この割合が一定以上であれば非表示にします。
    しかし、このやり方だと文字の順番という情報が失われてしまうので精度が低いかなと思い、もっといい方法がないかと悩んでおりました。
    2. タイトルの部分文字列を作成し、コメントの中にその部分文字列がないかを調べる
    タイトルを前から後ろから削っていき、ある文字数以上の部分文字列を全て作成します。
    コメントの中にその部分文字列があるかを調べます(長い部分文字列から順に)。あった場合その時点で調べるのをやめ、その部分文字列の長さを記録します。
    そして、「その部分文字列の長さ/コメントの文字数」が一定以上の時、そのコメントを非表示にします。
    今自分が思いつく中ではこれが一番いいのでは、と思っています。
    こっちがいい、あれの方がいいなど、どなたかご助言して頂けると嬉しいです _ _
  • id:al001
    pacochiさん、またまたご回答ありがとうございます!
    現在ご回答について試したり考えたりさせて頂いています・・・
    取り急ぎお礼まで。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません