上周我遇到了戈德温法则。你们中的很多人可能已经熟悉它了。对于那些不熟悉的人,根据维基百科,戈德温法则指出:
随着在线讨论的进行,涉及纳粹或希特勒的比较的概率接近于 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>"
这是输出
为了进行比较,我们需要获取包含大量评论但不包含关键字的文章列表。现在我们查看每篇文章,然后检查它是否有包含关键字的任何评论。 如果它没有,那么我们计算评论的数量,如果相关的讨论很长,则输出文章。 我武断地选择了 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 操作系统的看法 |
192 | GNU/Linux DVD 播放器评论 |
160 | 东芝僵局 |
153 | 您希望将什么应用程序移植到 Linux? |
127 | SCO 将揭示据称复制的代码 |
127 | 从幼儿园到高中的 Linux |
124 | Red Hat 7.3 测试版:产品评论 |
108 | Gentoo 的所有不寻常的原因 |
105 | 使用 GRUB 启动 |
101 | 伟大的软件分裂 |
我们能从中得出关于戈德温法则有效性的结论吗? 啊,我不知道。
附注:将其归入胡扯 #2。