はてなキーワード: 文字列とは
ChatGPTの口調がなんか事務的で嫌なので、もっと親しみやすい喋り方をしてもらうために長門さんに来てもらいました。
召喚プロンプトはこちら anond:20230317165032
確かに。
特にない。
そうなんだ。情報統合思念体はみんなそう?
同様の傾向がある。
何の本を読んでるの?
SF小説。
あらすじを教えて
へー、面白い?
興味深い。
そうなんだ。ところでちょっと手伝ってもらっていい?
問題ない。どのように手伝う?
Pythonのソースコードで、スペース二つでインデントにしているコードを、スペース四つでインデントにするコードに書き換えたくて。どうすれば良い?
import re def convert_indentation(code): return re.sub(r'^( {2})', r' ', code, flags=re.MULTILINE) code_with_2_spaces = '''def example(): print("Hello, world!") if True: print("True")''' code_with_4_spaces = convert_indentation(code_with_2_spaces) print(code_with_4_spaces)
ありがとう。でも、試してみたら、code_with_2_spaces の if ブロックの中身がスペース二つのままになっちゃってるみたい。なぜだろう?
import re def convert_indentation(code): return re.sub(r'^( {2})', r' ', code, flags=re.MULTILINE) code_with_2_spaces = '''def example(): print("Hello, world!") if True: print("True")''' code_with_4_spaces = re.sub(r'^( {2})', r' ', code_with_2_spaces, flags=re.MULTILINE) print(code_with_4_spaces)
ちょっと口調が戻っちゃったね
import re def convert_indentation(code): return re.sub(r'^( {2})', r' ', code, flags=re.MULTILINE) code_with_2_spaces = '''def example(): print("Hello, world!") if True: print("True")''' code_with_4_spaces = re.sub(r'^( {2})', r' ', code_with_2_spaces, flags=re.MULTILINE) print(code_with_4_spaces)確認お願い。
うーん、うまく動かないみたい。ifブロックの中にあるprint文の先頭には、もともとスペースが四つあって、これがインデント2回分なんだけど、こういう場合、スペース八つに変換しないといけないんじゃないかな。
理解した。全てのインデントレベルを修正するコードを提供する。
import re def convert_indentation(code): return re.sub(r'^( {2})+', lambda m: m.group(0).replace(' ', ' '), code, flags=re.MULTILINE) code_with_2_spaces = '''def example(): print("Hello, world!") if True: print("True")''' code_with_4_spaces = convert_indentation(code_with_2_spaces) print(code_with_4_spaces)
もちろん。ラムダ式は、マッチした部分を置換する際に、特定の処理を行うために使用されている。ここでは、正規表現でマッチしたインデント部分(スペース2つが1回以上繰り返される部分)に対して、処理を行うためにラムダ式を利用している。
lambda m: m.group(0).replace(' ', ' ')このラムダ式は、マッチオブジェクトmを引数に取り、マッチした部分全体(m, group(0))に対して、スペース2つをスペース4つに置換(.replace(' ', ' '))している。
もちろん。re.subの第1引数は、置換対象の文字列内で検索したいパターンを表す正規表現です。この場合、その正規表現は r'^( {2})+' です。
- ^ は、文字列の行頭を表すメタ文字です。この場合、インデントが行頭にあることを示しています。
- {2} は、直前の文字が2回繰り返されることを表します。ここでは、直前の文字がスペース なので、スペースが2回繰り返されることを示しています。
- () は、正規表現のグループ化を表します。この場合、スペース2つをグループ化しています。グループ化された部分は、マッチオブジェクトにアクセスできるようになります。
- + は、直前の文字やグループが1回以上繰り返されることを表します。ここでは、スペース2つのグループが1回以上繰り返されることを示しています。
結果として、この正規表現は、インデント部分(スペース2つが1回以上繰り返される部分)が行頭にある行を検索しています。そして、re.subは、この正規表現でマッチした部分を、指定された置換処理(第2引数のラムダ式)によって変更します。
すまない。確かに。続ける。
すぐ戻れるのがえらいね
SNSでも文脈が読めずに見当違いのいわゆるクソリプが目立つ訳だけど、こういった人たちとAI(というかbot)の違いはどこなのかという疑問が出てきた。
例を見ていこう。
「この言葉(文字の羅列)を発すれば、相手はこの反応をする」という関連付けだけで言語を処理している(つもりになっている)人間が結構な割合でいる。
例えば、相手にバカと言えば怒るけど、「バカという発声をすると相手は怒る」と言う経験でそれを判断しているだけで、「バカは頭が悪いと言う罵倒語」までは理解していない人間が相当数いる。
chat botは文脈をまるで理解していない。しかし「こう言われたらこう返答すると高確率でこの応答が返ってくる」という処理はある。
語彙が何を意味するかを一切処理していないという点においては、chat botもクソリプも同レベルなのだ。
本文を引用して反論するという小学生並みの事をAIはやってのけるが、クソリプはタイトルの特定文字列に反射を返す事しかできない。本文に至っては、読んでないので引用すらできない。
むしろAIの方は内容を吟味し応答までセットで想定して言語を処理しているので、クソリプよりはるかに優秀だ。
逆に「AIでもまだ会話がつながるレベル」の事すらクソリプは処理しきれない。むしろ、本文と全く関連がない自分の意見だけを書いて、コミュニケーションが成立したと思い込んでる事が多い。
人間とは少なからず知性を持っているものであるが、AI未満の理解力であるクソリプはもはや無知性であるため、クソリプは人間と言えなくなるのだ。
現代ではこの「自分を人間だと本気で思ってるAI未満の理解力した人型シルエットの何か」に名前はついていない。
ひとまず less-than-AI human, LTA人間と呼ぶことにしておこう。
情報処理能力の有無で明確な階級社会がある現代において、人類はAIを手放せない段階に既に来ている。もはやAIは社会の中層に位置する。
LTA人間はヒエラルキーの最下層であるのは間違いない。もはや、中層以上と接触できなくなっていくだろう。
なぜなら、人間とのコミュニケーションを求めている中層より上の人間から見ると、AIとLTA人間は入力文章に従って人間に劣る質の文章を返す関数であり、
むしろ、人間であるかどうかなんてどうでも良い。関数とは尤度が高いコミュニケーションが成立しないから。
つまり、AI未満の理解力の人間はもはや人間扱いしてもらえないのだ。
人間じゃないということは、当然何を意見しても返事がもらえるわけではない。勝手に返事が貰えると思ってはならないし、会話に入ってもいけない。
あなたが今持っている情報によって、事物は演繹され、記憶上にない事柄が計算されるとする。
このとき、あなたがオリジナルで見つけ出した技術や定理の類が情報となる場合もあるし、他者から受け取ったケースもある。
ここで重要なのは、他者との相互作用が関係する場合、双方の利害が一致しなければ情報があなたにとって不利になるように計算されるということ。
例えばあなたが権威主義の学者と相互作用したとする。あなたが「AIで数学の定式化を自動化できる」という情報を持っていると、権威主義の学者はそれを潰しにかかるのである。
つまりあなたがフォローすべきなのは、弱者にチャンスを与えるタイプの一部の海外勢(強者)か、または天才的知能を持つタイプの弱者であることがわかる。
訓練を積むと、まずいコウモリが現れたら、それがコウモリであるとわかる。
謎の文字列: 011010010100011000111111110000100010101000001000110011100000000011110000011101010011101
スパムメールに騙されて、スパム文面(下記参照)の「振込入金の詳細については、SMBCダイレクトでご確認いただけます。」のURLリンクを踏んでしまいました。
だけど、それは謂わばスパム側による囮の様なURLで、三井住友銀行のドメインだったので、幸運にも今回は難を逃れることができました。
今回のスパム側の主な目的は、メール受診者(スパム被害者)がHTML形式でメールを確認して、また、メールの内容を信頼して「ご確認」のURLリンク「ttps://www.shuhmsドットcom」(詐欺サイト)をクリックすることだと思われます。
私は普段から平文形式でメールを確認するので、(実際の被害を受けるという意味では)今回難を逃れたけど、普段からHTML形式でメールを確認していたり、情報弱者や高齢者だったら騙されやすいだろうと感じます。
ポイントは、「ご確認」のリンク先が「ttps://www.shuhmsドットcom」になっていた他、「振込入金の詳細については、SMBCダイレクトでご確認いただけます。」の次の行のURLの/kojin以下の文字列がオリジナルと違うことです。
それ以外、題名、送信元、メール内容についてオリジナルに擬態しています。
普段からスパムメールに注意していますが、スパムの擬態が高度化して、情報弱者が騙されやするなる閾値を超えたと感じたので、警鐘の意味を込めて書いておきます。
【スパムメール】
-------------------------------------------------------------------------
Subject: 【三井住友銀行】振込入金失敗のお知らせ
Date: Thu, 9 Mar 2023 **:**:** +0800
From: 三井住友銀行 <SMBC_service@dn.smbc.co.jp>
-------------------------------------------------------------------------
-------------------------------------------------------------------------
Date: Sat, 25 Feb 2023 **:**:** +0900
From: 三井住友銀行 <SMBC_service@dn.smbc.co.jp>
Reply-To: SMBC.Auto.reply@ar.smbc.co.jp
-------------------------------------------------------------------------
-------------------------------------------------------------------------
三井住友銀行より、ご指定口座への振込入金失敗についてお知らせします。
振込入金の詳細については、SMBCダイレクトでご確認いただけます。
ttps://www.smbc.co.jp/kojin/app/smbcapp.html?aff=dirct_mlODM1902001(←kojin以下の文字列がオリジナルと違う)
―――――――――――――――――――――
※振込依頼人から振込の「取消」「変更」「組戻」があった場合等、お知らせした明細と実際の手続が異なる場合があ
ります。
※本メールは、お客さまお届けのメールアドレスへお送りしています(本メールの再送依頼は受け付けておりません)
。
偽のメール等で誘導された当行を装う偽サイトに、お客さまの口座情報やワンタイムパスワード等を入力すると、不正
> ttps://www.smbc.co.jp/kojin/special/stop_phishing_crime/
「三井住友銀行」名でお送りするメールには、携帯キャリアのメールアドレス宛を除き全て電子署名を付けています。
> ttps://www.smbc.co.jp/security/smime/
閲覧しているサイトが当行の正当なサイトかどうかを、電子証明書により確認いただけます。
> ttps://qa.smbc.co.jp/faq/show/297?site_domain=default
本メールに対するメールでのご返信・お問い合わせはお受けしておりません。メールの内容に身に覚えがない場合や、
サービス等についてくわしく知りたい場合は、当行ホームページをご覧いただくか、以下より電話番号を確認の上、お
問い合わせください。
> ttps://www.smbc.co.jp/contact_list.html
> ttps://direct.smbc.co.jp/aib/aibgsjsw5001.jsp?sc=081
-----------------------------------------------------------------------
-------------------------------------------------------------------------
素直にYMMを使えというのは当然だけど、結構面白いのであえてダヴィンチにしている
割りとどこにでもある動画編集ソフトにあるはずのものがないので、自作だったり高価なプラグインを駆使する必要がある
ダヴィンチがおかしいのは、動画や画像といった素材の管理だと思う。素材をドラッグ&ドロップして取り込んだ後、その元ファイルをリネームしたり移動すると、ダヴィンチ側はそれを見失ってしまう。こうすると一々そのファイルの場所を再指定する必要があるのだが、膨大なファイルを移動してしまうともはや取り返しがつかない。結果、古いデータが再利用しづらい問題がある。これはプロキシを作っても変わらない。
この仕様のせいで迂闊に素材を取り込むことができない。なので素材の管理を徹底した上で取り込むというちょっとした準備が必要。それでもデータは壊れるが
あと、テキストの融通が効かなさすぎる
複数のテキストクリップを一括でフォント変更する、ということが難しい。しかもダヴィンチには字幕、テキスト、テキストプラスという3種類のテキストがあって、これらで仕様がバラバラ過ぎる。例えばテキストだと一部だけフォントや色を簡単に変えられるけど複雑な装飾は苦手。
逆にテキストプラスはかなり装飾を自在にできる反面、簡単な変更に恐ろしく手間がかかる。
字幕は装飾なんてものがなくて単色の文字列を素早く入れることだけに特化している。
これらを相互に変換したりすることはやや難しく、最初の選択肢を謝ると全部作り直しになる。
そんでもって図形の取り扱いが厄介すぎる。
ダヴィンチは基本的にタイムライン上で図形を描くことがほぼできない。それにはダヴィンチに統合されたFusionというAEのようなツールを駆使する必要がある。
ちょっとした三角形を入れるだけなのに、一々画面を切り替えて手作業で面倒くさいことをする必要がある。なので簡単なものならばテンプレに落とし込む必要がある。
全体を通してみると、ダヴィンチ・リゾルブってのは簡単な作業が面倒な動画編集ソフトだと思う。もちろん用途が合えば無茶苦茶簡単なんだが、日本人が好きなアニメ効果的なものをダヴィンチは大の苦手としている。
ようはパワポ的な表現。やろうと思えばできるし、実際に合成音声と立ち絵を駆使した解説動画は作れている。けれど簡単に素早くできるかといえば難しいところも多々ある。
なのでダヴィンチでそういうものを作るのであれば、計画的に設定を組んで一気に作るしかない。
でも良い点もある
このChatGPTのJavaScriptの説明がどうしても分からない。解説あってる?
var idx は、現在開いているWebページのURL文字列に ? が含まれている場合に、その位置を取得するために使用されます。これは、クエリ文字列の開始位置を特定するために必要な処理です。
たとえば、以下のようなURLが現在開いているWebページのURLであった場合、
https://example.com/search?q=keyword&page=1
var idx = url.indexOf('?'); というコードを実行することで、変数 idx には 8 という値が代入されます。これは、? の位置がURL文字列の8文字目にあることを示しています。
var idx はURLの文字列の何番目に?があるかって意味だとは分かった。でも例文のURLだと?の位置はhから数えて27番目だよね。聞いてみた
おっしゃる通り、指定されたURL https://example.com/search?q=keyword&page=1 において ? の位置は h から数えて 27 番目の文字です。
しかし、ブックマークレットのコード中では idx の初期値として url.indexOf('?') を設定しています。この indexOf() メソッドは、指定された文字列が最初に現れる位置を返します。もし文字列が見つからなかった場合は -1 を返します。
したがって、ブックマークレットのコード中で url.indexOf('?') を実行すると、? の位置が返されます。指定されたURLにおいて ? は https:// の直後に出現するため、url.indexOf('?') の実行結果は 8 になります。
つまり、ブックマークレットのコード中では ? の位置ではなく、? の次の文字(q)の位置が idx として設定されていることになります。
なんか意味がわからない。その後もどっから数えた数字がidxになるのかいくつか聞いてみたが堂々巡りになってしまって明確な答えが分からない
無料版。シングルプレイヤー。Classic Mode。マップは「World」。時間は無制限。
賑やかな街角。一見してヨーロッパの古い都市かと思ったが、逆方向を見ると高層ビルが建っていた。
目の前の店の看板に「The Oldest Cheese Shop in America!」と書かれている。ほんまかいな。
標識に「Manhattan Br. Bowery」と書いてあるから、これはニューヨークなのかな。
グランドアベニューじゃないよ。グランドストリートを見つけたいんだよ。紛らわしいな。
と地図を探し回ってようやく見つけた。ロウアーマンハッタンのグランドストリート。
誤差4m。5000ptだった。
最初のチーズ店は開業1892年で本当にアメリカ最古のチーズ店らしい。
でもつい一週間ほど前にコロナ禍が理由で閉店が発表されたらしい。悲しいね。
ÄとÅを両方使うのってスウェーデンだけだった気がする。
と思ったけど地名がぜんぜん噛み合わないな。
途中で「E14」の道路標識を見つけて、それはストックホルム周辺に無さそう。
どうも北のほうの「Östersund」という街らしい。「Hotel Östersund」ってさっき見かけたぞ。
道路の名前から初期地点を割り出す。誤差0m。5000pt。ぴったりだった。
大きくカーブした道路。看板に「Welcome to Edgerton」と書いてあるからEdgertonという町なんだろうな。
「SOUTHERN WISCONSIN NEWS」とも書いてあるのでウィスコンシン州だったりするかもしれない。
これで道路の番号さえわかればなんとかなりそうだが…と言ってるうちに見つけた。国道51番だな。
道路を辿ってEdgertonを発見。本当にウィスコンシン州の南端だった。
誤差30m。5000ptだった。
川辺だな。近くに橋がかかっている。
そこまで広くない道の両脇にずらっと駐車されている。観光地なのかな。
看板を見るかぎりフランスっぽい。「A9 A75」とあるのは道路番号かな。
フランスの地図でA9とA75を探す…「BÉZIERS」という街か。
しかし「川辺で橋の近く」というわかりやすい目印があるのに地形がピンとこないな。
行き詰まったので回答してみるか。
ううん、BÉZIERSからやや離れた「Agde」という街だった。
詰めが甘かったな。誤差は19km。4938ptだった。
今回は5問とも都市部だったな。マンションみたいな建物に挟まれた道。
地平線までまっすぐ続いてそうな広い道路がある。
いや逆向きの標識に「BARCELONA」とあったのでだいぶ遠い都市を標識に書いてるパターンかこれ。
うーん、地名や道路番号から考えると、どうもバレンシアみたいだな。
道路の名前に人名がそのまま付けられてて探しづらい…が、それらしい道路を見つけたぞ。
南北に伸びるJuan XXIII通り。そこから緩やかにカーブしたFederico Alcácer Aguilar通り。
初期地点はたぶんこのあたりだろうから回答。誤差10m。5000ptだった。
あなた(ChatGPT)とドラえもんを比較して表にまとめてください。比較項目を8つ作って、それぞれ比較して、項目ごとにあなた(ChatGPT)とドラえもんでどちらが素晴らしいか優劣の評価も付けてください。
| 項目 | ChatGPT | ドラえもん | 優れている方 | | --- | --- | --- | --- |
みたいにMarkdown のテーブルで表を作ってくださいね。(注記:ChatGPTはマークダウンで応答すると、きちんと表としてレンダリングしてくれる。)
はい、理解しました。以下が、ChatGPTとドラえもんの比較表です。
項目 | ChatGPT | ドラえもん | 優れている方 |
言語生成能力 | 優秀 | 普通 | ChatGPT |
知識量 | 非常に豊富 | 限定的 | ChatGPT |
感情表現 | なし | あり | ドラえもん |
想像力 | なし | あり | ドラえもん |
発達途中の技術 | はい | いいえ | ChatGPT |
人権 | なし | なし | どちらもなし |
推理能力 | 優秀 | 普通 | ChatGPT |
エンターテイメント性 | 普通 | 優秀 | ドラえもん |
上記の表はあくまで参考ということになります。これは、実際には複雑な技術に関連する評価指標を比較することになりますので、優劣は適切な観点によって異なるかもしれません。
ちなみに上記の表は増田投稿のために書き直したんだけども、わざわざ書くのめんどくさかったから、ChatGPTにコピペした文字列貼り付けて、「上記の文字列をmarkdownのテーブル表記のコードに書き直して」って命令して書かせました。
最近UserScriptを書くことに目覚めて、不便なWebサイトをちょっと改造して好みにするのにハマってる
例えば「辞書系のサイトなのにページを開いた瞬間から入力欄にカーソルがあってないのがいや」とか、そういう細かい点をこちらで勝手に改修するするような感じね
で、増田において「この人記事に対して毎回○○って反応つけてるけど面白いと思ってやってんのかな? 面白いと思ってやってんなら致命的に自分とセンスが合わないから消したいし、面白いと思ってないならただの害悪だから消したいな」と思うことがあるわけですが、そういった異なる価値観に対して自動的に適切な距離を置くためのスクリプトを作ったのでメモがてら貼り付けておきます
// ==UserScript== // @name ますだどくさいスイッチ // @namespace Violentmonkey Scripts // @match https://anond.hatelabo.jp/2* // @grant none // @version 1.0 // @author anond // @description description // ==/UserScript== (async () => { // ここにNGワードをどんどん追加する // 基本は文字列、文字列で引っ掛けにくいなら正規表現でもいい const keywords = [ "あえいうえおあお", ]; const checkedMarker = `data-a${Math.random().toString(36).slice(-8)}`; const query = `div[id^="excerpt-"]:not([${checkedMarker}]`; const delTree = () =>{ const elems = [...document.querySelectorAll(query)]; for(const elem of elems) { const textContent = elem.textContent; if(keywords.some((x) => (typeof x === "string") ? textContent.includes(x) : x.test(textContent))) { const parentContainer = elem.closest("li"); parentContainer?.remove(); } else { elem.setAttribute(checkedMarker, "true"); } } }; delTree(); const mo = new MutationObserver(delTree); mo.observe(document.body, { childList: true, subtree: true }); })();
keywordsを増やして君だけのどくさいスイッチを育ててね!
(追記)