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)