测试戈德温法则

上周我遇到了戈德温法则。你们中的很多人可能已经熟悉它了。对于那些不熟悉的人,根据维基百科,戈德温法则指出:

随着在线讨论的进行,涉及纳粹或希特勒的比较的概率接近于 1。

为了测试这条法则,我编写了一个小程序来查看drupal数据库中的评论,该数据库包含Linux Journal的 Web 内容。 该脚本首先从包含关键字之一的评论表中获取所有不同的文章 ID(在 drupal 术语中为 nids)。 然后,它获取每篇文章的评论数量,对列表进行排序,并输出计数以及文章标题。

这是脚本

#!/bin/bash

source mysqlpwd.sh

echo "<table border=\"1\">"
echo "<thead>"
echo "<tr><th># Comments</th><th>Article Title</th></tr>"
echo "</thead>"
echo "<tbody>"
mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
    -e "SELECT DISTINCT nid FROM comments WHERE comment LIKE '%hitler%' OR comment LIKE '%nazi%'" |
    while read nid
    do
        if [[ $nid != 'nid' ]]; then
            count=$(mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
                -e "SELECT COUNT(*) AS cnt FROM comments WHERE nid = $nid")
            count=$(echo ${count/cnt/})
            printf "%d\t%d\n" $count $nid
        fi
    done | sort --numeric --reverse |
        while read count nid
        do
            t=$(mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
                -e "select title from node where nid = $nid")
            t=$(echo ${t/title/})
            printf "<tr><td>%d</td><td><a href=\"/node/%d\">%s</a></td></tr>\n" $count $nid "$t"
        done
echo "</tbody>"
echo "</table>"


这是输出

# 评论文章标题
259与微软达成五年协议以放弃 Novell/SUSE
205企鹅当总统?
192我对 SCO 的访问
178拯救网络
165过时的微内核注定 Mac OS X 在性能上落后于 Linux
123马其顿的软件自由?
59我为什么不使用 GPL
58在未来十年内,开源无法实现什么?
56关于 Ox 的企鹅视角:Macworld 的第一天
55Miguel de Icaza 快速而随意地处理事实和历史
37政府中的 Linux:Linux 桌面评论,第 6 部分 - Ubuntu
32寻找答案
31准备就绪:缺失的链接?
13科学教律师承诺继续“采取适当行动”
12嘿,微软,先起诉我
7政府中的 Linux:了解联邦身份管理
5开源广播


为了进行比较,我们需要获取包含大量评论但不包含关键字的文章列表。现在我们查看每篇文章,然后检查它是否有包含关键字的任何评论。 如果它没有,那么我们计算评论的数量,如果相关的讨论很长,则输出文章。 我武断地选择了 100 作为讨论被归类为所需的最小评论数。

这是脚本

#!/bin/bash

source mysqlpwd.sh

echo "<table border=\"1\">"
echo "<thead>"
echo "<tr><th># Comments</th><th>Article Title</th></tr>"
echo "</thead>"
echo "<tbody>"
mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
    -e "SELECT nid FROM node" |
    while read nid
    do
        if [[ $nid != 'nid' ]]; then
            count=$(mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
                    -e "SELECT COUNT(*) as cnt FROM comments WHERE nid = $nid AND
                        (comment LIKE '%hitler%' OR comment LIKE '%nazi%')")
            count=$(echo ${count/cnt/})
            if [[ $count -eq 0 ]]; then
                count=$(mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
                    -e "SELECT COUNT(*) AS cnt FROM comments WHERE nid = $nid")
                count=$(echo ${count/cnt/})
                if [[ $count -gt 100 ]]; then
                    printf "%d\t%d\n" $count $nid
                fi
            fi
        fi
    done | sort --numeric --reverse |
        while read count nid
        do
            t=$(mysql -u $MYSQL_USERNAME -p$MYSQL_PASSWORD drupal_lj \
                -e "select title from node where nid = $nid")
            t=$(echo ${t/title/})
            printf "<tr><td>%d</td><td><a href=\"/node/%d\">%s</a></td></tr>\n" $count $nid "$t"
        done
echo "</tbody>"
echo "</table>"


这是输出

# 评论文章标题
423为什么选择 Python?
244在加利福尼亚州小额索赔法庭获得 Windows 退款
222本科系统管理员对 Linux 操作系统的看法
192GNU/Linux DVD 播放器评论
160东芝僵局
153您希望将什么应用程序移植到 Linux?
127SCO 将揭示据称复制的代码
127从幼儿园到高中的 Linux
124Red Hat 7.3 测试版:产品评论
108Gentoo 的所有不寻常的原因
105使用 GRUB 启动
101伟大的软件分裂


我们能从中得出关于戈德温法则有效性的结论吗? 啊,我不知道。

附注:将其归入胡扯 #2