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
 
Vitred (diskuto | kontribuoj)
Neniu resumo de redakto
Linio 1:
Mi faris topologiatopologian analizoanalizon 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):
 
<pre>
 
#!/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)
 
 
 
</pre>