被リンク数の分布
リンクだけ存在する、内容がまだ書かれていないページも含む
リンク数が凄そうと思って勝手にプロットしました
これ横軸はなんですか?
数字を出してみた
なるほど。
無理やり付けるとしたら、ページタイトルを目盛り毎に付ける?
横軸:被リンク数
rangeは適当に設定する
縦軸を:そのrangeに含まれるページ数
graphの形で色々わかる
予想
階層構造的に作ると、被リンク数が極端に少なくなる
ハッシュタグをたくさん使うと、右端に山ができる
縦横が対数軸になってるhistogramを作って直線が引ければべき乗分布らしい
横軸は?
以下のグラフは手抜きで、対数っぽく範囲を切って度数分布を描いただけです……
まだ全体で400ページ程度しかないのに多いような
リンクだけあって内容がまだ書かれていないページも計上しています
適当なグラフだけど、どちらもべき乗分布になっている
ちゃんとしたヒストグラムをプロッターで書いたらきれいな直線になりそう
できた
仮説
単語リンクが多いとスケールフリーネットワークになる
よく話される話題に登場する単語へのリンクが集中する
Scrapboxだと
関連ページリストで話題が繋がって便利なので単語リンクが頻繁に行われる
ページ間リンクが主体だと密結合のネットワークになる
本質的に関連するページの間だけつながっている状態
密結合のままネットワークが成長していく?
検証
被リンク数の計算方法
JSONをゴニョゴニョすればできると思う
後で書く
これオモシロイ
自分のプロジェクトにも出してみたい
各ページの被リンク数をCSVで出力するやつ
csv.js(async () => {
const pages = [];
let followingId = null;
do {
const param = followingId === null ? '' : `?followingId=${followingId}`;
const res = await fetch(
`https://scrapbox.io/api/pages/${scrapbox.Project.name}/search/titles${param}`
);
followingId = res.headers.get('X-Following-Id');
pages.push(...(await res.json()));
} while (followingId);
const counter = {};
for (const p of pages) {
for (const l of p.links) {
if (counter[l] === undefined) {
counter[l] = 0;
}
counter[l]++;
}
}
const numLinks = Object.entries(counter);
numLinks.sort((a, b) => b[1] - a[1]);
console.log(numLinks.map((p) => `${p[0]},${p[1]}`).join('\n'));
})();
あらゆる複雑なものは
両対数グラフにプロットすると直線になるものです
Scrapboxだからどうこう、ということは関係ないと思います