可読性 - lxml ソースコード分析 (4): まとめ

score = (
      class_weight + name_weight + 
      children_comma_count + 1 + min(children_text_len //  , 3)
) / (1 - link_density) 

(1) テキスト要素はテキスト内にのみ表示される可能性のある要素です。たとえば<h1>~<h6> <p> <pre> <blockquote>、この 3 つはナビゲーション バーなどを持つことは絶対に不可能であり、これらはサイドバーに表示されることはほとんどありません。

(2)テキストコンテナは、テキストを含む要素であり、テキスト以外の要素を含まない。それは、かもしれないし<div> <section> <article> <main>、何か(珍しいこと)かもしれない<td> <span>ここでしか選択できないと思いますが、可読性を重視するだけで、ラベル名に厳密な制限はありません。

(3) 要素とコンテナ間の距離、可読性は 2 に制限されます。つまり、テキスト要素の親ノードと祖父母ノードが取得されます。距離に応じて減衰する一連のルールを定式化できると思います (たとえば、減衰指数は距離の 2 分の 1)。

(4) ID とクラス名は重要な判断材料です。名前は、ポジティブなキーワードとネガティブなキーワードに分けられ、ポジティブな重み付けとネガティブな重み付けが行われます。そしてそれぞれのキーワードも可能性と確実性に分かれていますが、意味は全く逆です。決定されたキーワードは重みの加減算に使用され、候補となるキーワードはスクリーニングに使用されます。たとえば、可能性のあるポジティブなキーワードのラベルは保持されますが、可能性のあるネガティブなキーワードのラベルは確実に削除されます。

ただし、タグの候補が見つからない場合は、除外キーワードの可能性を削除せずに再試行されます。これは長くて面倒なようです。たとえば、特定のキーワードの削除による二次的なやり直しを避けるために、特定の可能性のあるキーワードに異なる重みを割り当てます。

(5) この式から、可読性では、ナビゲーションとテキストを区別するために、テキストの長さ、カンマの数、リンク密度も考慮されることがわかります。文字の密度も考えられると思います。

(6) 可読性では、候補要素の兄弟も候補となる可能性があること、つまりテキストが複数の<div>ケースに含まれることも考慮されます。

おすすめ

転載: blog.csdn.net/wizardforcel/article/details/131656072