2022-11-19に更新

グレートクソアルゴリズム

読了目安:15分

アルゴリズムはチートされる 注目と広告、アテンション エコノミー / attention economy

それっぽいタイトルでありながら儲け話の記事じゃないよ。
Youtube content ID と Mult-iChannel Networks についての内容です。
image
https://we.tl/t-1BtTeio0RG

vi_id ... youtube videoId
ch_id ... youtuber channel id
pu_da ... publishedDate

"https://m.youtube.com/watch?v=/" + videoId
"https://m.youtube.com/channel/" + channelId

   1 vi_id:zvrsGCyPvF0 ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-10-09
   2 vi_id:Uq0TSMmc1Z8 ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-10-07
   3 vi_id:WsHHOrQ18Yk ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-09-23
   4 vi_id:sqbj63hrlHI ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-09-17
   5 vi_id:EFYZCv0aEIU ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-09-08
   6 vi_id:iGVULqpmiEE ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-08-26
   7 vi_id:FQU_ObSjDmc ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-08-16
   8 vi_id:GAkZEQglk3k ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-08-06
   9 vi_id:IW3et-CxvC4 ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-08-04
  10 vi_id:D9OeuTyzMLE ch_id:UC0yQ2h4gQXmVUFWZSqlMVOA pu_da:2022-07-29

ファイルはテキストファイルで、; で区切って三項目並べています。

関連するyoutube チャンネル数の比較

https://we.tl/t-dHlu1z0fR9

2022 時点で関係する youtube channel リスト 18,786 の youtube videoid から調べ

https://rentry.co/p427u


image

狂ったアルゴリズムはチートされる

transrate to

recommendation system というのか、普通に カスタムされていない chrome ブラウザ などで、例えば日経テレ東の youtube channel にある、西村博之成田某の番組の映像のサムネイルをクリックすると、そのあとからは、ブラウザのなかに表示されるものは、日経テレ東 channel のサムネイルがついたクリップがウィンドウの 50 % くらいを独占するようになる。

関連 youtube URL リスト 2007 本

cf. 以下の条件では結果が変わるかもしれません。
https://en.m.wikipedia.org/wiki/Brave_%28web_browser%29
https://en.m.wikipedia.org/wiki/DuckDuckGo
https://en.m.wikipedia.org/wiki/NewPipe
Vanced is discontinued but ReVanced is here - HOW to install
https://youtu.be/mU4M2m_cL7g
https://github.com/pi-hole/pi-hole

これを、Youtube からの自動の推薦、つまり、youtube recommendation system と呼ぶことにして、その推薦するクリップの判定アルゴリズムが狂ってるなと思っている(個人の感想ですよ)というかクソ。踏んだら(クリックしたら)、ずっと(関連動画を薦める個人属性が)くっついてしまうので、その後の検索でも検索したい内容と無関係に分析された属性によって薦めてくる見たくない動画内容が半分まぎれて、集中が拡散される作りになっている。

rf.
Collaborative_filtering
https://en.m.wikipedia.org/wiki/Collaborative_filtering

youtube recommendation system

機械学習に使うポイントの付け方とか、合理的に機械的に評価しているようでいて、単純にすべてがバグってる としか思えない(個人の感想ですよ)。
関連の動画を排除しようとすると表示されている動画のサムネイルに対して一つづつ「興味がないために非表示にする」を選んで閉じていかないといけないというわけ。

Hated that video? YouTube’s algorithm might push you another just like it.
New research from Mozilla shows that user controls have little effect on which videos YouTube’s influential AI recommends.
By Hana Kirosarchive page
September 20, 2022
https://www.technologyreview.com/2022/09/20/1059709/youtube-algorithm-recommendations/


Does this button work?
Investigating YouTube’s ineffective user controls
https://foundation.mozilla.org/en/youtube/user-controls/


単純に、ユーザーのためのアルゴリズムではなくてプラットフォームの方向性にそくしたアルゴリズムだからといえばそれまでだ。要するに、知りたい見つけたいものを探す動機のあるユーザーに対して、その道中にお菓子を置いてみたり、エロ本を置いてみたりして集中を乱してザッピングさせるようなアルゴリズムだ。そんなの要らないというものがずっと消えないで残ると、モチベーションが拡散されていく。

このバグのように悪夢的な的外れの youtube recommendation system について、アメリカのインターネットの匿名掲示板のオーナーである人物は、このバグみたいな関連動画をオススメするアルゴリズムは、このアルゴリズムの特性を利用してチート可能と確信して、Youtube によって設定されたアルゴリズムを活用して、広告収入をより多く得れるように場を設定するように実践したのだろう。
あんまり遠回しに表現しすぎると意味わからない ?

rf.
Bibliotheca Anonoma
https://wiki.bibanon.org/4chan/History
アノニマス BBS プログラムの系譜をまとめていく
https://crieit.net/posts/BBS

広告収入をより多く得れるように場を設定

チーティング ?

"ユーザーの Youtube 視聴画面全部を自分の関連動画のサムネイルで埋め尽くし、オススメに自分の関連するものばかりを設定する という目的を達成するには、自分以外に自分が配信した youtube 映像からコピーコンテンツを作れるひとが、どんどんコピー動画を作りコンテンツの量を増し て、それを youtube へアップしていけば、より楽に自分の関連コンテンツが溢れかえる。
あとは、狂った youtube recommendation system が、ユーザーが一度でもそれら関連動画へのリンクをクリックすれば、ずっとそれら関連動画をユーザーに薦め続ける。
まるで malware に感染したみたいに、ソフトに逃げられない動線を張り巡らされてしまうのだ。
自分では編集せず、うまく見やすく編集したものか、偶然でも何でもいいけど、再生回数が上がったものから、売り上げを上納してもらえる仕組みをつくればいい"

と考えてみる(個人の意見です)。

Multi Channel Networks ( MCNs )

そして、そのためには、コピーコンテンツを テイクダウン(ノーティスアンドテイクダウン)するライセンスを持てばいい。
そうすると、コピー動画の配信から視聴された回数分の広告収入を自分に流入させれる、ということで、そういった権限のライセンス( youtube content IDを管理できる )を特権として持った企業として、いくつかの会社がある。

rf.
* Hololive Production (Japan)
* Nijisanji (Japan)
* uuum (Japan)
https://en.m.wikipedia.org/wiki/List_of_multi-channel_networks

この業態を Multi Channel Networks という。
MCNs の周辺の動態を調べている研究によると、MCNs と手を組まなくてはならない理由として、脱税と身元隠しが主要な理由としてあるらしい。

rf.
Behind the Tube: Exploitative Monetization of Content on YouTube
Andrew Chu, Arjun Arunasalam, Muslum Ozgur Ozmen and Z. Berkay Celik
日本語解説記事
https://www.itmedia.co.jp/news/articles/2208/17/news061_3.html

image
image
YouTube Multi-Channel Networks - Broughy Explains ( 2016 Aug 9 )
https://youtu.be/MpYqxDxlKUw?t=141

要するに google との契約で Youtuber とダイレクトにすんでしまう関係を、わざわざ MCNs と契約して google からの広告収入をダイレクト受け取らない理由は、そのモチベーションと重なるということになる。簡単に言うと、どーしても google と直接契約したくはないか、できない理由がある場合は、そうするよね。もちろん、儲かるしかけを設定できるならば、だが。

これを踏まえて、コピー動画をつくって再生回数をあげれるというクラスターが MCNs にぶら下がって収益を得る、その仕組みが具現化したのが、切り抜き動画群なわけだ。

それを支えるのがクラスターを作り出す中間の右から左へコンテンツを納品していく業者で、おそらく労働市場(副業というラベルになっている)で、マッチングした実作業労働者がいるのだろう。たぶん。
例えば、クラウドワークスにアカウントつくって覗いてみると、なーんだこれーという動画編集丸投げ案件が(よく)ある。

アテンションを加熱させるためのヘイトへのエスカレーション

こういったエコシステムの弊害で、より多くのアテンションを稼ぎだすためだけにエクストリームな表現、アジテーシーションがエスカレーションして、よりリアクションに熱気がでるヘイトよりな言動が産み出されていく。

Youtube では人間を使ったクレーム対応に日本語を理解する人間が関わっているのいるのかどうかはかなり疑問がある。{ 遠回しな表現 }

Youtube プラットフォーム上でのコンテンツの内容について倫理規定はどこまでもグレーゾーンであるわけで、コンテンツによって収益を得ようとする youtuber は youtube が裁定する倫理違反かどうかのジャッジの境界を探りつつも、より強いヘイトを内包するゴシップに増長していく傾向がある。

ひろゆき氏「沖縄の人って文法通りしゃべれない」 県民の“日本語”めぐり発言
2022年10月12日 05:47

有限会社未来検索ブラジル 元社長の考察 2022/9/7
https://otakei.otakuma.net/archives/2022090706.html

4 つの Responsibility( 責任): Remove、 違反コンテンツの削除
2019年9月12日木曜日
https://youtube-jp.googleblog.com/2019/09/4-responsibility-remove.html
ヘイトスピーチに関するポリシー

切り●き動画を推奨して、たくさんの亜種を増殖させたいインフルエンサーは、やや微妙な表現で匂わせるコントラバーシャルな言動を使うが、そこから派生していく亜種は、そういった表現の部分を拾い上げて全面に押し出して、●●す等のように●●字で●●たテロップをつけたサムネイルで人の関心をひこうとすることで、結果としてボーダーライン上のハラスメントの増長をひき起こしている。

ただ、あんまり過激に、興味をひくだけのために社会的問題になったり、はっきりした分断を助長する行為と、広告を出さなければならない企業の狙いとは相容れない。

ある程度までそのモラルハザード越えたと思われるコンテンツが増えると、インフルエンサーのイメージがポイズニングされる。
派生した亜種の増殖によって、好感度も、その逆も、溢れかえるイメージによってコントロールされている わけなのだから。


【RTメモ】Qアノン、2ch、5ch、そして8ch
https://min.togetter.com/wP0Vo8e


youtube URL list 750 個

youtube 上に関連動画は、6,111 個見つかった。

# coding: UTF-8
import urllib.request
import urllib.parse
import re
import time


words = "ひろゆき"
keywords = urllib.parse.quote(words)
target = "https://www.youtube.com/results?search_query=" + str(keywords)
video_list_0 = []
already_list = []
total_list = []
id_cell = {}
video_list_0.append(target)

def first_gether(target_url,total_list,id_cell):
    html = urllib.request.urlopen(target_url).read()
    html_strings = html.decode()
    del(html)

    video_list = []

    title = re.search(r'(?<=\<title\>).*?(?=\</title\>)',html_strings)
    if title is None:
        kakawari = re.search(r'ひろゆき|hiroyuki|西村博',html_strings)
        if kakawari is None:
            pass
        else:
            video_ids = re.findall(r"watch\?v=(.{11})", html_strings)
#            video_ids = re.findall(r&quot;watch\?v=(\S{11})&quot;, html_strings)
            id_data = list(set(video_ids))
            del(video_ids)
            video_list = ["https://www.youtube.com/watch\?v=" + str(x) for x in id_data]
            del(id_data)
    else:
        title_strings = title.group()
        del(title)
        kakawari2 = re.search(r'ひろゆき|hiroyuki|西村博',title_strings)
        if kakawari2 is None:
#            print(title_strings)
#            print('@@@')
            pass
        else:
#            total_list.append(target_url)
            idxxx = target_url.replace("https://www.youtube.com/watch\?v=","")
            print("----------------")
            print(idxxx)
            id_cell[idxxx] = title_strings
            print('!!!',title_strings)
            print('@@@',target_url)
            video_ids = re.findall(r"watch\?v=(.{11})", html_strings)
#            video_ids = re.findall(r&quot;watch\?v=(\S{11})&quot;, html_strings)
            id_data = sorted(list(set(video_ids)),key=video_ids.index)
            del(video_ids)
            video_list = ["https://www.youtube.com/watch\?v=" + str(x) for x in id_data]
            del(id_data)

    return video_list,total_list,id_cell

def second_gether(counter_x,url_list,already_list,total_list,id_cell):
    if len(url_list) > 0:
        sum_list = []
        rem = []
        for i,url in enumerate(url_list):
            if not re.match(r'^https',url):
                continue
            if url in already_list:
                print("----------------")
                print(counter_x,';',(i + 1),';',"skip")
                rem.append(url)
                continue
            print("----------------")
            print(counter_x,';',(i + 1),';',url)

            try:
                video_list,total_list,id_cell = first_gether(url,total_list,id_cell)
            except:
                time.sleep(1)
                continue
            already_list.append(url)
            if (len(video_list) > 0):
                sum_list.extend(video_list)

        total_list = list(set(total_list))
        if (len(rem) > 0) :
            for remove in rem:
                if remove in sum_list:
                    inum = sum_list.index(remove)
                    sum_list.pop(inum)

        next_list = sorted(list(set(sum_list)),key=sum_list.index)

        counter_x = counter_x + 1
        if(counter_x < 5):
            video_list,already_list,total_list,id_cell = second_gether(counter_x,next_list,already_list,total_list,id_cell)

    return video_list,already_list,total_list,id_cell

x = 0
video_list_0,already_list,total_list,id_cell = second_gether(x,video_list_0,already_list,total_list,id_cell)

del(video_list_0,already_list)

#for ind,allurl in enumerate(total_list):
#    print(ind,allurl)

i = 0
for k,v in id_cell.items():
    i = i + 1
    print(i,' id:',k,' title:',v)
    print("----------------")

exit()

https://rentry.co/gxu3a/raw

use strict;
use warnings;

use utf8;
use HTML::HTML5::Parser;
use XML::LibXML::QuerySelector;
binmode STDOUT,":utf8";
use Encode;
#use Data::Dumper;

my $keywords = qr/ひろゆき/;

my $useragent = "'User-Agent: Mozilla/5.0 (Linux; Android 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'";

my $filename1 = $ARGV[0];

open(my $fh0, '<:encoding(UTF-8)', $filenamer1)
  or die "Could not open file '$filename1' $!";

while (my $row = <$fh0>) {
    if ($row =~ m/^\n/){ next; }
    if ($row =~ m/skip/){ next; }
    chomp $row;

    my $url = $row;
    undef($row);
    my $syscom = qx{curl -sLH $useragent "$url"};

    my $mybody = Encode::decode('UTF-8',$syscom);
    #my $mybody = Encode::decode('shift-jis',$syscom);
    my $parser = new HTML::HTML5::Parser;
    my $doc = $parser->parse_string( $mybody,{ encoding => 'utf-8'});
    #my $doc = $parser->parse_string( $mybody );
    undef($mybody);
    my @nodelist = $doc->querySelectorAll('title');

    foreach(@nodelist){
        my $str = $_->textContent;
        if ( $str =~ $keywords){
            print $url."\n";
            last;
        }else{

        }
    }
}

close($fh0);
ツイッターでシェア
みんなに共有、忘れないようにメモ

tomato

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント