2

構造を知らなくても、1 つまたは複数の HTML ページで類似点 (正確にはそのパターン) を見つけたいと思います。

コンテンツとすべての属性が削除される、非常に単純化された例について話しましょう。

01 <div>
02  <div><table>.*</table></div>
03  <div><table>.*</table></div>
04
05  <div><p></p><img/></div>
06  <div><p></p><img/></div>
07  <div><p></p><img/></div>    
08
09  <div><table>.*</table></div>
10  <div><table>.*</table></div>
11 </div>

私たち (人間) は、2 つの異なるタイプのパターンがあることがわかります。最初のもの (表を含む) は 4 回発生します。もう1つはイメージタグ付きで、3回あります。それは簡単です(人間にとって)。

私が書きたい完璧なモジュールは、次のような結果セットを返します。

$VAR = [ { reduced_pattern => '<div><table>.*</table>div>',
           real_pattern => '<!-- the real pattern -->',
           hits => [{ line => 02,
                      content => "<div><table>foo 1</table></div>",
                      relevance => 0,9,
                    },
                    { line => 03,
                      content => "<div><table>foo 2</table></div>",
                      relevance => 0,95,
                    },   
                    { line => 09,
                      content => "<div><table>foo 3</table></div>",
                      relevance => 0,87
                    },
                    { line => 10,
                      content => "<div><table>foo 4</table></div>",
                      relevance => 0,80
                    }
                   ]
         }, 
         { real_pattern => '<!-- the real pattern -->',
                 hits => [{ line => 05,
                      content => "<div><p>bar 1</p><img/></div>",
                      relevance => 0,79,
                    },
                    { line => 06,
                      content => "<div><p>bar 2</p><img/></div>",
                      relevance => 0,95,
                    },   
                    { line => 07,
                      content => "<div><p>bar 3</p><img/></div>",
                      relevance => 0,80
                    }
                   ],
         }
        ];  

そんな感じ。

アルゴリズムについての質問です。「顕著な類似性を識別するアルゴリズム」を検索しました。ここではSOとCPANのウェブ上の同様の文ですが、よく一致するものは見つかりませんでした. (たくさんあることは知っていて、たくさん読んでいます。)

何を探しているかを知る必要があるため、RegExp は考慮されません。ニューラルネットワークでできると思いますが、学習は難しいかもしれません。また、ファジー ハッシュ (sssdeep など) も解決策になる可能性があります。または、k-means または mahout の方向から開始する必要がありますか?

あなたの答えとコメントをありがとう!

4

1 に答える 1

0

私もあなたの質問を完全に理解するのに少し苦労していますが、ページを2つの別々のタイプに分類しようとしている場合、検討すべきアルゴリズムの1つはサポートベクターマシンかもしれません. 事前に分類されたデータセットを生成できる場合は、隠れマルコフ モデルが適している可能性があります。xhudik が示唆したように、ディシジョン ツリーも使用できます。

特定の回答をお探しの場合は申し訳ありませんが、達成したいことを特定するには、より多くの情報が必要だと思います (例: 2 ~ 3 個の HTML の例とそれらをどのように分類するか)。

編集:また、クラスタリングについて調べましたか?WekaOrangeなどの製品は、インテリジェントな統計的グループ化が必要な場合に役立ちます。

于 2013-02-18T21:20:07.237 に答える