Uzanto:Taw/Topologio de Vikipedio: Malsamoj inter versioj

Enhavo forigita Enhavo aldonita
Taw (diskuto | kontribuoj)
novaj polaj dataoj - 24.8% en esperanta sed nur 4.6% en pola estas malakcesebla
(Neniu diferenco)

Kiel registrite je 00:10, 27 jul. 2002

Mi faris topologia analizo de Esperanta Vikipedio.


Analizo de pola Vikipedio estas ĉi tie: http://pl.wikipedia.com/wiki.cgi?Taw/Topologia_Wikipedii


Rezultoj:


Ĉiuj:

  • -1 1366 (31.93827449%)
  • 0 1 (0.02338087444%)
  • 1 53 (1.239186346%)
  • 2 601 (14.05190554%)
  • 3 1549 (36.21697451%)
  • 4 555 (12.97638532%)
  • 5 108 (2.52513444%)
  • 6 41 (0.9586158522%)
  • 7 3 (0.07014262333%)

Sume 4277


Sen redirektoj, diskusiaj paĝoj kaj malplenaj paĝoj:

  • -1 847 (24.75884244%)
  • 0 1 (0.02923121894%)
  • 1 48 (1.403098509%)
  • 2 565 (16.5156387%)
  • 3 1340 (39.16983338%)
  • 4 479 (14.00175387%)
  • 5 99 (2.893890675%)
  • 6 40 (1.169248758%)
  • 7 2 (0.05846243788%)

Sume 3421


  • 0 - ĉefpaĝo
  • (n+1) - unu kliko el (n) paĝo
  • -1 - malakcesebla


El tiu 847 paĝoj, 319 paĝoj estas orfaj, aliaj havas ligiloj sed estas malakcesebla el ĉefpaĝo.


En Pola Vikipedio (ete pli granda) nur 12.0% (586 el 4894) / 4.6% (198 el 4270) estas malakcesebla kaj nur 117 paĝoj estas orfaj.


Skripto (necesas mysql versio de databazo de vikipedio):


#!/usr/bin/ruby



require "mysql.so"



host = nil

user = nil

passwd = "***"

db = "wikipedia"



my = Mysql.new(host, user, passwd)

my.select_db db



def topology(my)

    order={}

    linked={}

    empty_redirect_or_talk={}



    res = my.query("SELECT cur_title FROM cur  WHERE cur_title LIKE 'Priparolu:%'

              OR cur_text LIKE '#redirect%'

              OR cur_text = '' ORDER BY cur_title")

    while row = res.fetch_row

	empty_redirect_or_talk[row[0]] = true

    end



    res = my.query("select cur_title from cur")

    while row = res.fetch_row

        order[row[0]] = -1

	linked[row[0]] = []

    end



    res = my.query("select distinct * from linked")

    while row = res.fetch_row

	linked[row[1]].push row[0]

    end



    cur_order = 0

#    cur_set = ["Polska_Wikipedia"]

    cur_set = ["Ĉefpaĝo"]

    begin

	cur_linked = []

	cur_set.each {|title|

	    order[title] = cur_order

	    cur_linked += linked[title]

	}

	cur_linked.uniq!

        new_set = []

        cur_linked.each {|title|

	    if order[title] == -1

		new_set.push title

		order[title] = cur_order

    	    end

	}

	cur_set = new_set

        cur_order += 1

    end while cur_set.size != 0



#   With empty redirect and talk

    group_by_order = {}

    order.each {|k,v|

        group_by_order[v] = [] unless group_by_order[v]

	group_by_order[v].push k    

    }

    group_by_order.sort.each {|k,v|

	print "* ",k," ",v.size," (#{v.size*100.0/order.size}%)\n"

    }

    print "Total #{order.size}\n\n"

#   Without empty redirect and talk

    group_by_order = {}

    total = 0

    order.each {|k,v|

	next if empty_redirect_or_talk[k]

        group_by_order[v] = [] unless group_by_order[v]

	group_by_order[v].push k

	total += 1

    }

    group_by_order.sort.each {|k,v|

	print "* ",k," ",v.size," (#{v.size*100.0/total}%)\n"

    }

    print "Total #{total}\n\n"

#   esat accessible

    group_by_order.sort.each {|k,v|

	if k >= 6

	    v.each {|t|

		print "* ",k," [[",t,"]]\n"

	    }

	end    

    }

    print "\n"

end



def lonely(my)

# user pages don't exist yet

    res = my.query("SELECT cur_title FROM cur

            WHERE cur_title NOT LIKE 'Priparolu:%'

              AND cur_text NOT LIKE '#redirect%'

              AND cur_text != '' ORDER BY cur_title")

    p = []

    while row = res.fetch_row

	p.push row[0]

    end

    res = my.query("SELECT DISTINCT linked_to FROM linked ORDER BY linked_to")

    l = []

    while row = res.fetch_row

	l.push row[0]

    end

    r = p - l

    r.each {|lp|

	print "* [[", lp, "]]\n"

    }

    print "\n"

end



def wanted(my)

    res = my.query("SELECT unlinked_to, COUNT( DISTINCT unlinked_from ) AS ulf

            FROM unlinked

            GROUP BY unlinked_to

            ORDER BY ulf DESC

            LIMIT 100")

    while row = res.fetch_row

	print "* ", row[1], " [[",row[0],"]]\n"

    end

    

end



topology(my)

lonely(my)

wanted(my)