哈布拉业力诅咒

整点


不可预见的后果


“ Habr业力系统及其对用户的影响”至少是一门课程的主题
关于“ Picaba”的业力主题

我可以从阅读Habr已有很长时间的事实着手,但这并不是一个完全准确的陈述。 正确的论题是:“很长一段时间以来我一直在阅读Habr的文章”-但是当我决定今年春季最终注册时,我对社区内部正在发生的事情不感兴趣。 这是一个从搜索引擎来到Habr的人读过关于编程复杂性或有用技术新闻的有用文章的典型错误。 只要您仅从积极的一面看待门户,就不会问有关幕后情况的问题。 当然,在评论或文章中提到因果报应时不时地下滑-但归根结底,因果报应在几乎所有主要门户网站上(我天真地认为),这对于自我调节的Internet社区来说是正常的。

我突然失去了在五分钟内撰写多个评论的能力后,必须认真考虑一下。

同时,一切似乎都进行得很好:我的评论总是很刺耳,我的评分越来越高-突然间我发现自己的业障为负。 我整个互联网通信的长期经验,所有用户习惯以及常识告诉我这是一种错误:其他站点用户对站点用户的认可指标不能同时上升或下降! 但是我决定不not之以鼻,而是进行一些研究,包括分析(以研究用户对业力的看法的形式)和统计(以账户指标的分析形式)。

事实证明,与业力的用户战争历史非常悠久。 由于取得了不同的成功,它已经进行了十多年,其帐户包括数十名受阻受害者和几篇被删除的文章。 而且,很奇怪的是,我的问题(年级和业力之间的差异)实际上没有用在论证中-即使在开放API期间,也没有使用这些计算。 更为接近的是,在相对较新的条目中仅选择了一个评论者:
“实际上,有什么有趣的发现:是否有人对事物大加赞赏?
https://habr.com/cn/company/habr/blog/437072/#comment_19650144

在统计部分中,您可以看到是的。 但是即使没有统计信息,用户也已经很长时间了解了因果报应的一切。

这是十年前的记录:
集线器上的最大问题是,有许多用户根据以下原则对业力设置负号:“啊,您的观点与我的观点不同,这是业力的负号。” 尽管对我来说,一个合理的评论,带有反驳的观点,一个明确的相反立场,甚至不应该使评论本身减负,而不是作者的业力。 不幸的是,在哈布雷(Habré)上几乎没有合理的争端文化和对坚强对手的尊重,许多人倾向于丢下帽子。
总的来说,我认为将等级分为两个等级“等级”和“业力”是不直观的,因此是不正确和无效的。
https://habr.com/cn/post/92426/#comment_2800908

这是五年前的记录:
仅分析了业力至少变化了15个单位的情况,但这并不能整体改变情况,因为 在这种情况下,比例为30%到70%。 显然,业力在很大程度上是由于评论而合并的,但对于书面文章却有所提高。
https://habr.com/cn/post/192376/

这是三年前需要改进的建议:
建议:
文章作者只能在发表文章后的特定时间段(例如一周)内为业力投票。 如果一个人在过去一周中没有发表任何东西,那么他就不会因业力而被泄露以发表评论。 该规则无法扩展到仅芦苇帐户-它们会通过有用的注释获得因果关系。
评论:
Habr用户经常抱怨因人为报废而在其他人的帖子中发表令人反感的评论。 例如,在这篇文章中,问题是在2012年描述的。 沃兹,现在在那里。
https://github.com/limonte/dear-habr/issues/49

这是三年前关于同一主题的另一次对话:
金属龙
我可以说为什么我停止写评论(我会例外):因为很难获得业力,因为为此您需要不断生成一些文章,但是丢失它很容易。 如果您编写正确,那不是浪费,这是不正确的。 由于许多原因,可以减少此数:我在争议中不同意您的意见,我认为评论中的某些事实是不正确的,或者仅仅是他心情不好。

Maxshopen
是的,这是古老的habrasystem疾病。 假定那些具有积极业力的人是足够的,只是不会减去任何人。 当一切都变得更糟时–业障越大,用户可以押注的越多,它最终以一对“加注星标”的哈勃使用者向左和向右派发,得到-6,-8,之后可能性降为一。 业力经济的创造者最初显然没有考虑匿名性的弊端
在我看来,很长一段时间以来,该系统不得不通过在向某人投票时从用户的业力中扣除一定数量的资金来更加平衡。 不需要很多-0.2-0.5就足够了。 这将大大增加选民在选择为某人投票时的责任。
https://habr.com/cn/post/276383/#comment_8761911

最后,从今年年初开始对该帖子发表评论:
业力不是系统自我调节的很好工具。 那些对一个人(甚至是他的职位)不满意的人通常会进行业力评估。 结果是获得业力非常困难,而合并则非常容易。 这使人们重新考虑-如果它不是很流行,是否值得发表您的意见? 毕竟,如果我只表达一次,他们将纠结并合并业障,将无法再表达更多。 这导致这样一个事实,即只有一种意见留在资源上,而所有其他意见都被排挤了。
https://habr.com/cn/company/habr/blog/437072/#comment_19647340

下面的评论解释了为什么“撰写文章”并不能真正节省业力系统:
这篇文章从业力方面几乎没有带来任何好处,对于一个不成功的评论,一个人可以被完全融合。
这里的问题是等级和业力的分离。 在头脑中,人们的工作方式如下:
1.内容分级是我对文章或评论的态度。
2.对业力的评价是我对一个人的态度
最后
1.如果您撰写了世界上最好的文章,它们将为您带来很多优势(在评分中),并考虑您完成的任务。
2.如果您写的评论“不参与讨论”,那么您将获得负面评论,甚至是一个您可能这么认为的人,因此,您和业力。
https://habr.com/cn/company/habr/blog/437072/#comment_19649262


许多对业力体系不满意的人表达了自己的观点,即这是政府的一项蓄意政策- 例如,在本评论本评论中。 当然,有很多间接证据:
  • 删除了API,因此无法监视动态;
  • 我们进行了动态评分,因此无法直接在个人资料中查看总评分;
  • 他们经常提到“业报”,据此,利大于弊(甚至没有提到因果报酬和等级之间的比率)。
  • 他们说很多,但没有理由,因果报应反映了出版物和评论的质量(这与统计数字相矛盾,正如我们从评估指标中看到的那样)。

我也提醒你, 以业力的存在形式, 从未在任何地方给出业力存在的理由

我们无法以任何方式证明这些阴谋论。 但是在我看来,问题不在于他们-与业力消极的人存在同样的问题:对公义的坚不可摧的信念,以至于那些不同意您的人被视为“坏人”。 Habr领导者以同样的方式在这里做出决定-我们将与用户的信息分开评估用户。 而且十年来一直没有向他们解释这是对用户进行排名的错误方法。 他们很聪明,他们创建了一个完整的门户。 因此,您创建了Habr,然后我们进行了交谈(顺便说一句,有趣的是, 从字面上讲,我是索赔的业力倡导者,并回答了 “首先得到它”)

就我个人而言,我认为业计划本身来自Lepra ,那里的大型互联网门户网站的当前大多数所有者一次都在闲逛 。 哈勃始于同一个勒普雷-一个封闭的俱乐部,对邀请和相互评价不满意-离开了俱乐部。 那些日子已经一去不复返了,俱乐部已经很久没有关闭了,自从不是给“俱乐部的另一位成员”,而是给普通用户提供普通评论和文章以来,评分就一直很久。 但是内部精英主义并没有放任行政。 每个人都认为-的确,这些家伙创建了一个大型的盈利门户网站,多年来一直在撰写有关技术主题的文章-他们怎么可能不知道某些东西? 因此,如果一切都不好,那么他们就是恶棍。 但是实际上,管理员只是停留在童年时代。 而且,门户网站越大越有利可图,就很难承认错误理解的骄傲导致的多年错误。

混乱



这些是深水,沃森,深水。 我刚开始潜水。
《福尔摩斯探案》特刊

在下文中,我将使用术语“业力”来表示业力,并使用术语“评估”或“总评估”来表示用户在文章和评论中已经收到的所有优缺点的总和。

弄清历史后,我们将尝试查看数字。 最近,对统计信息进行了整个分析周期,但它仅涉及当年-我需要了解用户的总评分。 由于我们没有API,因此没有显示个人资料中的真实评分,而是显示了可疑的评分-我只能研究每个评论,并从中收集有关作者和评分的数据。 那就是我所做的。

我从一开始就打开了所有出版物,取出了出版物作者的昵称和文章的评级,然后是评论员的昵称及其评论的评级。

这是主解析器的代码。
import requests
from bs4 import BeautifulSoup
import csv

def get_doc_by_id(pid):
    fname = r'files/' + 'habrbase' + '.csv'
    with open(fname, "a", newline="") as file:
        try:
            writer = csv.writer(file)
            r = requests.head('https://habr.com/ru/post/' +str(pid) + '/')
            if r.status_code == 404: #   
                pass
            else:
                r = requests.get('https://habr.com/ru/post/' +str(pid) + '/')
                soup = BeautifulSoup(r.text, 'html5lib')
                if not soup.find("span", {"class": "post__title-text"}):
                    pass
                else:
                    doc = []
                    cmt = []
                    doc.append(pid) #
                    doc.append(soup.find("span", {"class": "user-info__nickname"}).text) #
                    doc.append(soup.find("span", {"class": "voting-wjt__counter"}).text) #
                    writer.writerow(doc)
                    comments = soup.find_all("div", {"class": "comment"})
                    for x in comments:
                        if not x.find("div", {"class": "comment__message_banned"}):
                            cmt.append(x['id'][8:]) #
                            cmt.append(x.find("span", {"class": "user-info__nickname"}).text) #
                            cmt.append(x.find("span", {"class": "voting-wjt__counter"}).text) #
                            writer.writerow(cmt)
                            cmt = []
        except requests.exceptions.ConnectionError:
            pass

x = int(input())
y = int(input())

for i in range(x, y):
    get_doc_by_id(i)
    print(i)



habrbase:



« — » habrauthors.csv. . , - , , .

:
import requests
from bs4 import BeautifulSoup
import csv
import pandas as pd

def len_checker():
    fname = r'files/' + 'habrdata' + '.csv'
    with open(fname, "r") as file:
        try:
            authorsList = len(file.readlines())#   
        except:
            authorsList = 0
        return authorsList

def profile_check(nname):
    try:
        r = requests.head('https://m.habr.com/ru/users/' +nname + '/')
        if r.status_code == 404: #   
            pass
        else:
            ValUsers = []
            r = requests.get('https://m.habr.com/ru/users/' +nname + '/')
            soup = BeautifulSoup(r.text, 'html5lib') # instead of html.parser
            if not soup.find("div", {"class": "tm-user-card"}):
                valKarma = 0
                valComments = 0
                valArticles = 0
            else:
                valKarma = soup.find("span", {"class": "tm-votes-score"}).text #
                valKarma = valKarma.replace(',','.').strip()
                valKarma = float(valKarma)
                tempDataBlock = soup.find("div", {"class": "tm-tabs-list__scroll-area"}).text.replace('\n', '') # 
                mainDataBlock = tempDataBlock.split(' ')
                valArticles = mainDataBlock[mainDataBlock.index('')+1]
                if valArticles.isdigit() == True:
                    valArticles = int(valArticles)
                else:
                    valArticles = 0
                valComments = mainDataBlock[mainDataBlock.index('')+1]
                if valComments.isdigit() == True:
                    valComments = int(valComments)
                else:
                    valComments = 0
            ValUsers.append(valKarma)
            ValUsers.append(valComments)
            ValUsers.append(valArticles)
    except requests.exceptions.ConnectionError:
        ValUsers = [0,0,0]
    return ValUsers


def get_author_by_nick(x):
    finalRow = []
    df = pd.DataFrame
    colnames=['nick', 'scores']
    df = pd.read_csv(r'files\habrauthors.csv', encoding="ANSI", names = colnames, header = None)
    df1 = df.loc[x:]

    fname = r'files/' + 'habrdata' + '.csv'

    with open(fname, "a", newline="") as file:
        writer = csv.writer(file)
        for row in df1.itertuples(index=True, name='Pandas'):
            valName = getattr(row, "nick")
            valScore = getattr(row, "scores")
            valAll = profile_check(valName)
            finalRow.append(valName)
            finalRow.append(valScore)
            finalRow.append(valAll[0])
            finalRow.append(valAll[1])
            finalRow.append(valAll[2])
            writer.writerow(finalRow)
            print(valName)
            finalRow = []

n = len_checker()
get_author_by_nick(n)



, , - . , 2001 ? , , , : « (intermediate value).map is not a function». , , 2001 . , — . 250, — .

habrdata : ['nick', 'scores', 'karma', 'comments','articles','regdate']. .



. , .

20062007200820092010201120122013201420152016201720182019
204511668124635028534613686116109614970365948926782559123673


114 343 , - . , :



, , tabloo.

, . , alizar (UPD) 268 ! , - 30 . — Zelenyikot 1509, - 500. , , .



-10



, , , , . , - . , , — CSV R, SPSS. , — , , ( ). 4235 . . 2866 , , .



3-4 114 , . , . 4652. , , .

: 114 343
< 5: 89 447
.. : 67 890
.. : 4 652
>= 5 : 24 896

, «». " ", . , . , « , » — .

:
: 114 343
<5: 57 223
.. : 26 207
.. : 9 737
>=5 : 57 120

, , , , . , , .. ! — , 90.

, , « », . — >=5 24 ( 900 - 5 ; ). 36 — .

, ? , , 90% , , 4 — . , « ». , , « ». . « , » .

, 2016 2018 , « ». 90% , 5 . « » 60-70% .

, :

78205 114 343 0. , .
24 896 114 343 . , , , .

. , , — , . , . , , « ».


     ,       !


, , , .

:
  1. , .
  2. 1/3 , .
  3. , ( 10-20 )

, , ?

, . , :
, , … :
— .



, , .
.
, — , .
https://habr.com/ru/post/467875/#comment_20639397

, — , .

,



, ?


, . , ( ).

.

1.
. : . , — : .

: , , , «» . — . . , . .

. , . — — . — . , , , — ; — , , , . , . — . — .

. . . . . , — .



. .

2.
.

— . , . , . , . , : , — , , . 2013 , , . ; , , , .

— , , . « », , , . — , . , , .

, «» «», . , , . — , .

, . , , — ? — , ? . , . , — , , .

— . , « », . , , . -, .

, , : , . .

. , , . — (), , , . « » — — , .

, . . , — , .
, — . .
https://habr.com/ru/company/habr/blog/437072/#comment_19649328

, , — -, « ». , , .

.

3.
, . — , -, , .. . , .

, . . — « », . , « »; , — , ( ) .

. , — , , , , . , , , , .

pragmatik,
, ., , - / — .

, , . , +100, -10? ? , , - ? .

. , . , , , . . «», « » , .

, . , . «-25», , . — , « ». , , . , , . ! .
« :
: «, , . , , , . — , . .»
, — . andorro : « ».»
https://habr.com/ru/company/habr/blog/437072/#comment_19822200

, . — (.. ). « ». — , . « », . , , IRC, , « » « ». — , .

Episode Three



— ?
— , ,

« »

?

-, , , , . , , . — , , , , . , , , .

-, . 10 20 , ? 118, - 100, -100 , , , 10.

-, , , (.. ). « » — , : , .

-, , .. « » — - . , , - « ». , ; , — .

-, , « ». . — , — . .

— , . - « , , » - .

Source: https://habr.com/ru/post/zh-CN468491/


All Articles