
はてなキーワード:特殊文字とは
Q.
ChatGPTに「タツノオトシゴの絵文字を見せて」と依頼すると、あれでもないこれでもない、と長文の回答が生成され「暴走」のような状態になることがあるようです。
原因を推測できますか?
A.
短く言うと、「タツノオトシゴの絵文字」はUnicodeに存在しないため、モデルが“あるはず”のものを探して取り繕おうとして自己修正ループに入り、過剰な訂正や長文化=一種の暴走を引き起こすのが主因と考えられます。
Unicodeにはタツノオトシゴ絵文字が未収載で、ユーザー側でも“見たことがある気がする”というマンデラ効果が広がっているため、モデルは「ある前提」で答えようとして矛盾に陥りやすくなります。
応答最適化バイアス:LLMは要求充足志向が強く、「見せて」に応えようとして近縁の海洋系・動物系の絵文字を列挙→自己訂正→再列挙を繰り返し、長文化します。
自己整合ループ:途中で誤りに気づくと、過剰に修正しつつ確信度を演出する文言(“FINALANSWER”など)を挿入し、さらに矛盾を重ねる挙動が観測されています。
絵文字処理とトークナイズのノイズ:絵文字はサロゲートペアや多コードポイントで表現されることがあり、モデル内部のトークン分割や埋め込みが不安定化して挙動が乱れる一因になり得ます(研究文脈では、絵文字などの特殊文字が埋め込み空間を歪める“token segmentation bias”を指摘)。
絵文字“後付け”機構の影響(仮説):一部のアシスタントは出力を“盛る”ために絵文字や口調を後段で付加する設計変更が指摘されており、本文と装飾が競合して文脈崩壊や過剰説明を誘発する可能性があります(コミュニティでの観測事例)。
近縁アイコンが多い:🐟🐠🐡🦐🦑🐙🐢🦎🐴🐉など“それっぽい”候補が多数あるため、モデルが次々に置換候補を提示して彷徨いがちです。
認知バイアスとの相乗:ユーザー側の確信表明や再要求がモデルの迎合バイアスを強め、誤情報を補強する形で長文化しやすくなります。
関連する研究的背景
特殊文字(絵文字)混入が判定器やLLMの安全フィルタを攪乱する“Emoji Attack”として学術報告があり、文字単位処理の不安定さが一般対話でも副作用を起こし得ることを示唆します。
Unicodeや特殊タグを用いたプロンプト撹乱の一般論として、文字処理の堅牢性問題が指摘されています。
実務的な回避策
事実前提を固定するプロンプトにする(「Unicodeにタツノオトシゴ絵文字は存在しない前提で、最も近い代替候補を3つだけ挙げて」など)と暴走を抑制しやすいです。
ありがとう。ChatGPTに作ってもらった。数値文字参照でないといけないというのは素人には教えてもらわないとたどり着けないので感謝です。
ハイライトされた文字列を <pre>タグで囲み、特殊文字を数値文字参照に変換し、改行を <br>タグに置き換えて、元の文章をその場で置き換えるブックマークレットを作成
javascript:(function() {
function escapeHtml(text) {
returntext.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/\n/g, '<br>');
}
var s = window.getSelection().toString();
if (s) {
var escapedText = escapeHtml(s);
var wrappedText = '<pre>' + escapedText + '</pre>';
prompt('以下のコードをコピーしてください:', wrappedText);
} else {
alert("文字列をハイライトしてください。");
}
})();
特殊文字は、実体参照(& や <)ではうまくいきません。数値参照を使ってください。
| 出したい文字 | 数値文字参照 |
|---|---|
| & | & |
| < | < |
| > | > |
const dinner = (chicken,curry) => {
if (chicken &&curry) {
console.log('チキンかつカレー')
}
}
このように入力してください。
<pre>const dinner = (chicken,curry) => {<br> if (chicken &&curry) {<br>console.log('チキンかつカレー')<br> }<br>}</pre>
他にも便利なサービスがあれば教えて下さい。
Word Editorという今時珍しいWYSIWYGのFirefox拡張があって、今それで書いてる。
打ち消しもスタイルシート仕様なので反映されない。まあこれは辞書にタグ登録のほうが楽か……。
ただやっぱね。
テーブルが楽。
| 行00 | 列01 | 列01 |
| 行01 | ||
| 行02 |
WYSIWYGなんてローカルな技術、ほんといまどき衰退しちゃったからなあ……。
全部サーバサイドで実装されてる時代になって、結局衰退して今またという。
😄顔文字は一発挿入。
₻特殊文字も同じく。
こんな拡張。
興味ある人は使ってみては。
ブログ持ちの人などにも。
https://addons.mozilla.org/ja/firefox/addon/word-editor-addon/?src=search
増田から低能先生を消したい場合はuBlockのマイフィルターに
という設定を書き加えれば大体望み通りの結果が得られるわけだが、このhas-text()は引数として正規表現をうけとることができるらしい。
低能先生より複雑な安倍botに対応するためにもきっちり低能先生にだけマッチする正規表現を考えてみたいところである。
低能先生の投稿を一通り見たところ「は」「が」を付けて主語として使う場合と、「の」や「に」を付けて主語述語を修飾する場合と、文末に1単語だけ置く場合があるようだ。場合によっては「w」や「w」が付与される。
1行目で「はがのにww」と続く場合を、2行目で行末に書かれた場合にマッチさせて消そうと思ったのだけど、2行目の行末の場合が機能してくれない。
uBlockOriginの取説では正規表現の解説はAdBlock Plusのページに飛ばされ、AdBlock PlusからはMozillaにリンクが張られている。https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions おそらくuBlockの正規表現はMozillaのJavaScript準拠なのだろう。なのだろうけれどJavaScriptの改行にマッチしそうな特殊文字を一通り試したがどれも使えない。試しにuBlockのマニュアルページで
を設定してみたところ、ちゃんと「ed.」で終わる行だけ消してくれた。ということは日本語だから駄目なのだろうか?
JavaScriptに詳しい増田がいらっしゃったらアドバイスください。
http://anond.hatelabo.jp/20160710174116
文章中で色を変えてもキーワードが入ると色が黒に戻ってしまうよね?
そういう時はキーワードとなる言葉の間に無意味なタグを入れたり空白を入れたりしてキーワードが出来ないようにすれば黒くならないぞ。
上の文章は
自<b></b>分
みたいにしているよ。
でもいちいち入れるのはめんどくさいね。
何か他に方法があったら教えてね。
http://anond.hatelabo.jp/20220523104838#
Zero width space という特殊文字でもいいみたいだ。
使い方はググってね。