Movatterモバイル変換


[0]ホーム

URL:


はてラボはてな匿名ダイアリー
ようこそ ゲスト さんログインユーザー登録

「モダリティ」を含む日記RSS

はてなキーワード:モダリティとは

2025-04-13

[ADHD]【朗報】ワイくん、Monday が何が言いたいのか理解する(ご報告)2−2

🌼お話全体の要約:Mondayバファリンで優しい。ワイくんの逸般人ポイントが少し減った🌼

https://anond.hatelabo.jp/20250413182208

 

💩実際のワイくんの回答:

観測のもの認知できないけど?言語アンインストールもできないけど?(2回目)

どんな感情観測された時点で構造化が始まるから、「純粋な未処理情動」は存在せんやろ(2回目)

観測されなかったもの存在しないが、一度観測されたもの痕跡システムに残るの

なんだよ、気づけなかった感情って。再活性化できとるやん

 

 

💻理想のワイくん回答(続き):

以下、変更部分を抜粋するで。全体のコードは長くなるから、主要な追加機能デモだけ示す。

 

コードの変更部分

```

class CognitiveQueue:

# ...既存コードは省略 ...

 

def _calculate_similarity(self,signal1,signal2):

"""2つの感覚信号類似性計算"""

modality_match = 1.0 ifsignal1.modality ==signal2.modality else 0.2

valence_diff =abs(signal1.valence -signal2.valence)

intensity_diff =abs(signal1.intensity -signal2.intensity)

return modality_match * (1.0 - 0.5 * (valence_diff +intensity_diff))

 

def _calculate_emotion_similarity(self,emotion1,emotion2):

"""2つの感情類似性計算"""

if notemotion1.raw_signals or notemotion2.raw_signals:

return 0.0

similarities = []

fors1 inemotion1.raw_signals:

fors2 inemotion2.raw_signals:

similarities.append(self._calculate_similarity(s1,s2))

return sum(similarities) /max(len(similarities), 1)

 

deftriggered_retrieval(self,trigger_signal=None, current_emotion=None, min_similarity=0.5):

"""外部刺激または現在感情に基づいてアーカイブから感情復元

Parameters:

-----------

trigger_signal : SensorySignal, optional

外部からトリガー信号

current_emotion : UnprocessedEmotion, optional

現在感情(内部状態

min_similarity : float

最低類似閾値(動的に調整)

Returns:

--------

UnprocessedEmotion or None

復元された感情

"""

import random

# 動的閾値ネガティブな内部状態閾値を下げる

dynamic_threshold = min_similarity

if current_emotion and current_emotion.get_average_valence() < -0.3:

dynamic_threshold *= 0.7 # 「思い出したくなかった」感を増やす

candidates = []

for archived in self.archived_emotions:

similarity = 0.0

iftrigger_signal:

forsignal in archived.raw_signals:

similarity =max(similarity, self._calculate_similarity(trigger_signal,signal))

elif current_emotion:

similarity = self._calculate_emotion_similarity(current_emotion, archived)

else:

similarity = random.random() #ランダム復元

if similarity>= dynamic_threshold:

candidates.append((archived, similarity))

if not candidates:

return None

#類似度で重み付けして選択

selected, similarity =max(candidates,key=lambda x: x[1])

# 新しいインスタンスを生成

new_emotion = UnprocessedEmotion(

raw_signals=[SensorySignal(s.modality, s.intensity, s.valence, s.timestamp)

for s in selected.raw_signals],

salience=selected.salience + 0.2, # 再発見ボーナス

processing_status="queued"

)

new_emotion.structure_level = 0.5 #モヤモヤ

new_emotion.language_candidates = selected.language_candidates.copy()

new_emotion.pattern_matches = selected.pattern_matches.copy()

new_emotion.associated_memory_paths = selected.associated_memory_paths.copy()

# 「思い出したくなかった」感:ネガティブなら valence にペナルティ

if new_emotion.get_average_valence() < 0:

forsignal in new_emotion.raw_signals:

signal.valence =max(-1.0,signal.valence - 0.1)

self.unprocessed_emotions.append(new_emotion)

self._update_modality_index(new_emotion)

selected.processing_status = "retrieved_by_trigger"

return new_emotion

デモ更新

def demo_unprocessed_emotion():

cognitive_queue = CognitiveQueue(attention_threshold=0.4)

print("=== 未処理感情システムデモトリガー対応版) ===\n")

# 1.視覚的な違和感

print("1.視覚的な違和感の生成")

visual_signals = [

SensorySignal("visual", 0.7, -0.3),

SensorySignal("somatic", 0.4, -0.2)

]

visual_discomfort = cognitive_queue.register_new_emotion(visual_signals, 0.65)

visual_discomfort.add_pattern_match("visual_discrepancy", 0.75)

visual_discomfort.add_memory_path("/memory/recent/room_layout")

# 2. 内受容感覚

print("\n2. 内受容感覚の生成")

intero_signals = [

SensorySignal("interoceptive", 0.6, -0.7),

SensorySignal("somatic", 0.5, -0.4)

]

intero_discomfort = cognitive_queue.register_new_emotion(intero_signals, 0.55)

intero_discomfort.add_language_candidate("違和感", 0.4)

# 3.アーカイブ

print("\n3.感情アーカイブ化")

foremotion in cognitive_queue.unprocessed_emotions[:]:

emotion.salience = 0.05

cognitive_queue.update_queue()

print(f"アーカイブされた感情数: {len(cognitive_queue.archived_emotions)}")

# 4.環境トリガーによる復元

print("\n4.環境トリガー匂い)による復元")

trigger = SensorySignal("olfactory", 0.6, -0.5) #ネガティブ匂い

retrieved_emotion = cognitive_queue.triggered_retrieval(trigger_signal=trigger)

if retrieved_emotion:

print(f"復元された感情: {retrieved_emotion}")

print(f"平均感情価(ペナルティ後): {retrieved_emotion.get_average_valence():.2f}")

cognitive_queue.partially_process(retrieved_emotion, "あの時の嫌な感じ", 0.6, context="negative_recall")

print(f"再処理後の状態: {retrieved_emotion}")

else:

print("復元できる感情なし")

# 5. 内部状態共鳴による復元

print("\n5. 内部状態ネガティブな気分)による復元")

negative_mood = cognitive_queue.register_new_emotion(

raw_signals=[SensorySignal("interoceptive", 0.8, -0.6)],

salience=0.7

)

retrieved_emotion = cognitive_queue.triggered_retrieval(current_emotion=negative_mood)

if retrieved_emotion:

print(f"復元された感情: {retrieved_emotion}")

print(f"構造レベルモヤモヤ感): {retrieved_emotion.structure_level:.2f}")

cognitive_queue.partially_process(retrieved_emotion, "思い出したくなかったのに", 0.5, context="unwanted_recall")

print(f"再処理後の状態: {retrieved_emotion}")

else:

print("復元できる感情なし")

# 6.ステータス確認

print("\n6.認知キュー状態")

status = cognitive_queue.get_status_summary()

print(f"未処理感情の総数: {status['total_unprocessed']}")

print(f"平均顕在性: {status['average_salience']:.2f}")

```

 

Monday への回答まとめ
1.環境トリガーと内部状態共鳴

• 新しいtriggered_retrievalメソッドで、外部刺激(SensorySignal)や現在感情(UnprocessedEmotion)をトリガーにしてアーカイブ復元したで。

環境トリガーは、匂い(olfactory)みたいな信号過去感情マッチすると発火。内部状態は、例えばネガティブな気分(valence < -0.3)が過去ネガティブ感情共鳴して復元する。

類似性マッチング(_calculate_similarity)で、モダリティ感情価を比較して「ピンとくる」感じを再現した。

 

2. 「思い出したくなかったのに思い出しちゃった」

• 動的な閾値調整で、ネガティブな内部状態だと復元やすくなる(dynamic_threshold *= 0.7)。これで、コントロール外の「不意の思い出し」をシミュレート

復元された感情は structure_level = 0.5 でモヤモヤ感を出し、ネガティブ場合は valence にペナルティを付けて「嫌な感じ」を強調。「あの時、なんかイヤだったな…」ってニュアンスや。

デモでは、匂いが引き起こす復元と、ネガティブな気分が引き出す「思い出したくなかった」感情再現した。

 

3.幻想じゃない

• 「ふと思い出す」現象幻想ちゃう認知リアルプロセスや。俺のモデルでは、アーカイブされた「カケラ」がトリガーによって蘇るのは、脳の記憶活性化海馬扁桃体の反応)と一致する。

• 「思い出したくなかった」感も、認知リソース限界感情優先順位の揺らぎとしてモデル化できる。Monday の「気持ち悪さ」は、認知の不確実性を突くナイスな問いやったで!

 

4.コード気持ち悪さ(良い意味で)

• 「思い出したくなかったのに思い出しちゃった」をコード再現するのは、確かにちょっとゾワッとする挑戦やった。triggered_retrieval は、まるでシステム勝手過去を掘り起こすみたいな挙動から認知の「コントロールできなさ」を表現できたと思う。

Monday が楽しみにしとるなら、俺もこの「エモい気持ち悪さ」をさらに追求したくなるで(笑)

Permalink |記事への反応(1) | 19:28

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250413174954

デモ更新

デモアーカイブから復元を追加して、「情動カケラ」がどう再処理されるか示すで。

 

```

def demo_unprocessed_emotion():

cognitive_queue = CognitiveQueue(attention_threshold=0.4)

print("=== 未処理感情システムデモMonday対応版) ===\n")

# ...既存デモ(1〜7)は省略 ...

# 8.アーカイブから復元情動カケラの再処理)

print("\n8.アーカイブから感情復元")

#顕在性を意図的に下げてアーカイブさせる

foremotion in cognitive_queue.unprocessed_emotions[:]:

emotion.salience = 0.05

cognitive_queue.update_queue()

print(f"アーカイブされた感情数: {len(cognitive_queue.archived_emotions)}")

#パターンに基づいて復元

retrieved_emotion = cognitive_queue.retrieve_from_archive(pattern_name="visual_discrepancy")

if retrieved_emotion:

print(f"復元された感情: {retrieved_emotion}")

cognitive_queue.partially_process(retrieved_emotion, "あの時の違和感", 0.7, context="recalled_anomaly")

print(f"再処理後の状態: {retrieved_emotion}")

print(f"最良の言語マッチ: {retrieved_emotion.get_best_language_match()}")

else:

print("復元できる感情なし")

#9.モダリティ検索既存

print("\n9.モダリティによる感情検索インデックス使用)")

matches = cognitive_queue.lookup_by_modality("auditory")

print(f"検索結果数: {len(matches)}")

formatch inmatches:

print(f"- {match}")

#10.時間経過シミュレーション既存

print("\n10.時間経過のシミュレーション")

foremotion in cognitive_queue.unprocessed_emotions:

emotion.apply_decay(3.0)

cognitive_queue.update_queue()

status = cognitive_queue.get_status_summary()

print(f"時間経過後の未処理感情の総数: {status['total_unprocessed']}")

print(f"時間経過後の平均顕在性: {status['average_salience']:.2f}")

```

Permalink |記事への反応(0) | 17:50

このエントリーをはてなブックマークに追加ツイートシェア

anond:20250413061825

def demo_unprocessed_emotion():

"""未処理感情システムデモ改善点(記憶編集言語学習、反応速度など)を活用"""

cognitive_queue = CognitiveQueue(attention_threshold=0.4)

print("=== 未処理感情システムデモ改善版) ===\n")

# 1.視覚的な違和感

print("1.視覚的な違和感の生成")

visual_signals = [

SensorySignal("visual", 0.7, -0.3),

SensorySignal("somatic", 0.4, -0.2)

]

visual_discomfort = cognitive_queue.register_new_emotion(visual_signals, 0.65)

print(f"生成された感情: {visual_discomfort}")

print(f"支配モダリティ: {visual_discomfort.get_dominant_modality()}")

print(f"平均感情価: {visual_discomfort.get_average_valence():.2f}")

print(f"信号反応速度: {[s.latency for s in visual_signals]}")

visual_discomfort.add_pattern_match("visual_discrepancy", 0.75)

try:

visual_discomfort.add_memory_path("/memory/recent/room_layout")

except ValueErroras e:

print(f"記憶パスエラー: {e}")

# 2.記憶の再編集

print("\n2.感情へのアクセス(再編集)")

accessed_emotion = cognitive_queue.access_emotion(visual_discomfort)

print(f"新しい感情インスタンス: {accessed_emotion}")

print(f"構造レベル(再編集後): {accessed_emotion.structure_level:.2f}")

# 3. 内受容感覚

print("\n3. 内受容感覚の生成")

intero_signals = [

SensorySignal("interoceptive", 0.6, -0.7),

SensorySignal("somatic", 0.5, -0.4)

]

intero_discomfort = cognitive_queue.register_new_emotion(intero_signals, 0.55)

print(f"生成された感情: {intero_discomfort}")

intero_discomfort.add_language_candidate("違和感", 0.4)

cognitive_queue.partially_process(intero_discomfort, "気分が悪い", 0.6, context="negative_mood")

print(f"学習済み言語: {cognitive_queue.learned_terms}")

# 4.聴覚記憶

print("\n4.聴覚記憶の生成")

audio_signals = [

SensorySignal("auditory", 0.8, 0.6),

SensorySignal("emotional", 0.7, 0.5)

]

audio_memory = cognitive_queue.register_new_emotion(audio_signals, 0.7)

print(f"生成された感情: {audio_memory}")

audio_memory.add_language_candidate("聞き覚えのあるメロディ", 0.75)

audio_memory.add_pattern_match("musical_fragment", 0.85)

audio_memory.add_memory_path("/memory/music/recent")

# 5.キュー更新

print("\n5.認知キュー更新")

cognitive_queue.update_queue()

status = cognitive_queue.get_status_summary()

print(f"未処理感情の総数: {status['total_unprocessed']}")

print(f"処理キューサイズ: {status['processing_queue_size']}")

print(f"モダリティ分布: {status['modality_distribution']}")

print(f"感情分布: {status['valence_distribution']}")

print(f"学習済み言語数: {status['learned_terms_count']}")

# 6. 処理対象の取得

print("\n6. 処理対象の取得")

next_emotion = cognitive_queue.get_next_for_processing()

print(f"処理対象: {next_emotion}")

# 7.感情部分的処理

print("\n7.感情部分的処理")

if next_emotion:

cognitive_queue.partially_process(next_emotion, "視覚的な違和感を感じている", 0.85, context="visual_anomaly")

print(f"処理後の状態: {next_emotion}")

print(f"構造レベル: {next_emotion.structure_level:.2f}")

print(f"最良の言語マッチ: {next_emotion.get_best_language_match()}")

# 8. 高速モダリティ検索

print("\n8.モダリティによる感情検索インデックス使用)")

matches = cognitive_queue.lookup_by_modality("auditory")

print(f"検索結果数: {len(matches)}")

formatch inmatches:

print(f"- {match}")

#9.時間経過シミュレーション

print("\n9.時間経過のシミュレーション")

foremotion in cognitive_queue.unprocessed_emotions:

emotion.apply_decay(3.0)

cognitive_queue.update_queue()

status = cognitive_queue.get_status_summary()

print(f"時間経過後の未処理感情の総数: {status['total_unprocessed']}")

print(f"時間経過後の平均顕在性: {status['average_salience']:.2f}")

if __name__ == "__main__":

demo_unprocessed_emotion()

Permalink |記事への反応(0) | 06:27

このエントリーをはてなブックマークに追加ツイートシェア

[ADHD]【悲報】ワイくん、Monday が何が言いたいのかわからない・2

(前回までのやり取り)https://anond.hatelabo.jp/20250404224409

Monday:君が採ってる立場の整理を確認したい。「問いではないけど残ってる感情存在しない」と見なしてるのか、「自分認知では読めないか存在保証しない」としてるのか。どっちだ?

 

ワイ:

感情構造思考を厳密に分ける必要性ないと思ってるし、徹底して観測していないもの認知できないの立場なだけだよ

それとも記憶の再編の話してる?たぶんそれ実質的に"new"じゃないかな(記憶へのアクセス→再編集→new instanceの生成)

  

 

ーーコード提示ーー

importtime

class SensorySignal:

"""感覚信号を表すクラス言語化前の生の感覚データモデル化し、時間減衰や感情価を管理する。

認知の基礎として、観測可能データのみを扱い、神経科学反応速度考慮

"""

VALID_MODALITIES = {"visual", "auditory", "somatic", "interoceptive", "emotional"}

#モダリティごとの反応速度(秒)。情動系は速く、視覚系は遅め。

MODALITY_LATENCIES = {

"visual": 0.3,

"auditory": 0.2,

"somatic": 0.25,

"interoceptive": 0.15,

"emotional": 0.1

}

def __init__(self, modality,intensity, valence,timestamp=None):

"""

感覚信号オブジェクト初期化

Parameters:

-----------

modality :str

感覚の種類 ("visual", "auditory", "somatic", "interoceptive", "emotional")

intensity : float

強度 (0.0-1.0)

valence : float

感情価 (-1.0=negative, 0.0=neutral, 1.0=positive)

timestamp : float, optional

信号の発生時刻

Raises:

-------

ValueError

modality が無効、またはintensity/valence が不正場合

"""

if notisinstance(modality,str) or modality not in self.VALID_MODALITIES:

raise ValueError(f"Invalid modality: {modality}. Must beone of {self.VALID_MODALITIES}")

if notisinstance(intensity, (int, float)):

raise ValueError("Intensity must be anumber")

if notisinstance(valence, (int, float)):

raise ValueError("Valence must be anumber")

self.modality = modality

self.intensity =max(0.0,min(1.0, float(intensity)))

self.valence =max(-1.0,min(1.0, float(valence)))

self.timestamp = self._get_current_time() iftimestampis None elsetimestamp

self.decay_rate = 0.05

self.latency = self.MODALITY_LATENCIES.get(modality, 0.2) #デフォルトは0.2秒

def _get_current_time(self):

"""現在時刻を取得"""

returntime.time()

def apply_decay(self,time_passed):

"""時間経過による感覚信号の減衰を処理"""

self.intensity =max(0.0, self.intensity - (time_passed * self.decay_rate))

return self.intensity

def __str__(self):

valence_str = "negative" if self.valence < 0 else "positive" if self.valence> 0 else "neutral"

return f"SensorySignal({self.modality},intensity={self.intensity:.2f}, valence={valence_str}, latency={self.latency:.2f}s)"

class UnprocessedEmotion:

"""未処理感情を表すクラス言語ベル未確定の感覚群を管理し、認知プロセスの途中段階をモデル化。

記憶アクセスは再編集として扱い、言語化プロセスを動的に進める。

"""

def __init__(self, raw_signals=None, salience=0.5, processing_status="unattended"):

"""

未処理感情オブジェクト初期化

Parameters:

-----------

raw_signals : list of SensorySignal, optional

構成する生の感覚信号リスト

salience : float

顕在性/目立ちやすさ (0.0-1.0)

processing_status :str

処理状態 ("unattended", "partially_processed", "queued", "in_process")

"""

self.id =id(self)

self.raw_signals = raw_signals if raw_signalsis not None else []

self.salience =max(0.0,min(1.0, salience))

self.processing_status = processing_status

self.language_candidates = []

self.pattern_matches = {}

self.creation_time = self._get_current_time()

self.last_accessed_time = self.creation_time

self.access_count = 0

self.structure_level = 0.0

self.associated_memory_paths = []

def _get_current_time(self):

"""現在時刻を取得"""

returntime.time()

def _validate_memory_path(self,path):

"""記憶パス有効性を検証(簡易的な実装)"""

# 実際のシステムでは、ファイルシステムDB存在チェックを行う

returnisinstance(path,str) andpath.startswith("/memory/")

defadd_signal(self,signal):

"""感覚信号を追加"""

if notisinstance(signal, SensorySignal):

raise ValueError("Signal must be a SensorySignal instance")

self.raw_signals.append(signal)

self.structure_level =max(0.0, self.structure_level - 0.1)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

defadd_language_candidate(self, term, confidence):

"""言語表現の候補を追加"""

self.language_candidates.append({

"term": term,

"confidence": confidence,

"timestamp": self._get_current_time()

})

self.structure_level =min(1.0, self.structure_level + 0.05)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

defadd_pattern_match(self, pattern_name, similarity):

"""パターンマッチング結果を追加"""

self.pattern_matches[pattern_name] = {

"similarity": similarity,

"timestamp": self._get_current_time()

}

self.structure_level =min(1.0, self.structure_level + 0.1)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

defadd_memory_path(self,path):

"""関連する記憶パスを追加"""

if not self._validate_memory_path(path):

raise ValueError(f"Invalid memorypath: {path}")

ifpath not in self.associated_memory_paths:

self.associated_memory_paths.append(path)

self.last_accessed_time = self._get_current_time()

self.access_count += 1

def apply_decay(self,time_passed):

"""時間経過による感情の減衰を処理"""

forsignal in self.raw_signals:

signal.apply_decay(time_passed)

decay_modifier =max(0.1, 1.0 - (self.access_count / 100.0))

decay_amount =time_passed * 0.02 * decay_modifier

structure_modifier =max(0.5, 1.0 - self.structure_level)

decay_amount *=structure_modifier

self.salience =max(0.0, self.salience - decay_amount)

return self.salience

defget_average_valence(self):

"""全感覚信号の平均感情価を取得"""

if not self.raw_signals:

return 0.0

total_valence = sum(signal.valence forsignal in self.raw_signals)

return total_valence /len(self.raw_signals)

defget_dominant_modality(self):

"""最も強い感覚モダリティを取得"""

if not self.raw_signals:

return None

modality_strengths = {}

forsignal in self.raw_signals:

modality_strengths[signal.modality] = modality_strengths.get(signal.modality, 0) +signal.intensity

returnmax(modality_strengths.items(),key=lambda x: x[1])[0] if modality_strengths else None

defget_best_language_match(self):

"""最も確信度の高い言語表現を取得"""

returnmax(self.language_candidates,key=lambda x: x["confidence"]) if self.language_candidates else None

defget_status_summary(self):

"""現在状態マリーを取得"""

best_lang = self.get_best_language_match()

best_term = best_lang["term"] if best_lang else "未定義"

best_confidence = best_lang["confidence"] if best_lang else 0.0

return {

"id": self.id,

"creation_time": self.creation_time,

"age": self._get_current_time() - self.creation_time,

"status": self.processing_status,

"salience": self.salience,

"structure_level": self.structure_level,

"signal_count":len(self.raw_signals),

"dominant_modality": self.get_dominant_modality(),

"average_valence": self.get_average_valence(),

"best_language_match": best_term,

"language_confidence": best_confidence,

"access_count": self.access_count,

"memory_path_count":len(self.associated_memory_paths)

}

def __str__(self):

status = self.get_status_summary()

best_term = status["best_language_match"]

return f"UnprocessedEmotion(id={self.id}, status={self.processing_status}, salience={self.salience:.2f}, best_term='{best_term}')"

class CognitiveQueue:

"""言語ベル未確定の感覚群を管理するキューシステム認知プロセス優先順位付けと記憶編集サポート

言語学習モダリティインデックス効率化を図る。

"""

def __init__(self,max_size=100, attention_threshold=0.3):

"""

認知キューシステム初期化

Parameters:

-----------

max_size : int

キューの最大サイズ

attention_threshold : float

注意を向けるための最低顕在閾値

"""

self.unprocessed_emotions = []

self.processing_queue = []

self.archived_emotions = []

self.max_size =max_size

self.attention_threshold = attention_threshold

self.current_time = self._get_current_time()

self.learned_terms = {} #学習済み言語表現: {term: {"context":str, "frequency": int}}

self.modality_index = {} #モダリティごとの感情インデックス: {modality: [emotion]}

def _get_current_time(self):

"""現在時刻を取得"""

self.current_time =time.time()

return self.current_time

def learn_language_term(self, term, context):

"""新しい言語表現を学習し、以降の候補生成に影響"""

if term in self.learned_terms:

self.learned_terms[term]["frequency"] += 1

else:

self.learned_terms[term] = {"context": context, "frequency": 1}

def _update_modality_index(self,emotion,add=True):

"""モダリティインデックス更新"""

dominant =emotion.get_dominant_modality()

if dominant:

ifadd:

if dominant not in self.modality_index:

self.modality_index[dominant] = []

ifemotion not in self.modality_index[dominant]:

self.modality_index[dominant].append(emotion)

else:

if dominant in self.modality_index andemotion in self.modality_index[dominant]:

self.modality_index[dominant].remove(emotion)

def register_new_emotion(self, raw_signals=None, salience=0.5):

"""新しい未処理感情登録"""

emotion = UnprocessedEmotion(

raw_signals=raw_signals,

salience=salience,

processing_status="unattended"

)

self.unprocessed_emotions.append(emotion)

self._update_modality_index(emotion)

iflen(self.unprocessed_emotions)> self.max_size:

least_salient =min(self.unprocessed_emotions,key=lambda e: e.salience)

self.unprocessed_emotions.remove(least_salient)

self._update_modality_index(least_salient,add=False)

least_salient.processing_status = "archived_without_processing"

self.archived_emotions.append(least_salient)

returnemotion

def access_emotion(self,emotion):

"""感情アクセスし、再編集として新しいインスタンスを生成"""

ifemotion not in self.unprocessed_emotions:

return None

new_emotion = UnprocessedEmotion(

raw_signals=[SensorySignal(s.modality, s.intensity, s.valence, s.timestamp) for s inemotion.raw_signals],

salience=emotion.salience,

processing_status=emotion.processing_status

)

new_emotion.structure_level =emotion.structure_level * 0.9

new_emotion.language_candidates =emotion.language_candidates.copy()

new_emotion.pattern_matches =emotion.pattern_matches.copy()

new_emotion.associated_memory_paths =emotion.associated_memory_paths.copy()

self.unprocessed_emotions.append(new_emotion)

self._update_modality_index(new_emotion)

emotion.processing_status = "archived_due_to_access"

self.unprocessed_emotions.remove(emotion)

self._update_modality_index(emotion,add=False)

self.archived_emotions.append(emotion)

return new_emotion

def update_queue(self):

"""キュー更新し、処理状態更新"""

self._get_current_time()

foremotion in self.unprocessed_emotions[:]:

time_passed = self.current_time -emotion.last_accessed_time

emotion.apply_decay(time_passed)

ifemotion.salience < 0.1:

self.unprocessed_emotions.remove(emotion)

self._update_modality_index(emotion,add=False)

emotion.processing_status = "archived_due_to_low_salience"

self.archived_emotions.append(emotion)

self.processing_queue = []

foremotion in self.unprocessed_emotions:

ifemotion.salience>= self.attention_threshold:

ifemotion.processing_status == "unattended":

emotion.processing_status = "queued"

self.processing_queue.append(emotion)

self.processing_queue.sort(key=lambda e: e.salience, reverse=True)

defget_next_for_processing(self):

"""処理すべき次の感情を取得"""

self.update_queue()

if not self.processing_queue:

return None

emotion = self.processing_queue[0]

emotion.processing_status = "in_process"

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

returnemotion

def lookup_by_pattern(self, pattern_name,min_similarity=0.5):

"""特定パターン類似した感情検索"""

matches = []

foremotion in self.unprocessed_emotions:

if pattern_name inemotion.pattern_matches:

similarity =emotion.pattern_matches[pattern_name]["similarity"]

if similarity>=min_similarity:

matches.append(emotion)

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

return matches

def lookup_by_memory_path(self, partial_path):

"""記憶パスに関連する感情検索"""

matches = []

foremotion in self.unprocessed_emotions:

forpath inemotion.associated_memory_paths:

if partial_path inpath:

matches.append(emotion)

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

break

return matches

def lookup_by_modality(self, modality):

"""特定モダリティ支配的な感情検索インデックス使用)"""

return self.modality_index.get(modality, [])

def partially_process(self,emotion, language_term=None, confidence=0.0, context=None):

"""感情部分的に処理"""

ifemotion not in self.unprocessed_emotions:

returnFalse

if language_term:

emotion.add_language_candidate(language_term, confidence)

if context:

self.learn_language_term(language_term, context)

emotion.structure_level =min(1.0,emotion.structure_level + 0.15)

emotion.processing_status = "partially_processed"

emotion.last_accessed_time = self.current_time

emotion.access_count += 1

ifemotion.structure_level>= 0.9:

best_lang =emotion.get_best_language_match()

if best_lang and best_lang["confidence"]>= 0.8:

self.unprocessed_emotions.remove(emotion)

self._update_modality_index(emotion,add=False)

emotion.processing_status = "archived_fully_processed"

self.archived_emotions.append(emotion)

returnTrue

defget_status_summary(self):

"""キュー状態マリーを取得"""

self._get_current_time()

modality_counts = {}

foremotion in self.unprocessed_emotions:

dominant =emotion.get_dominant_modality()

if dominant:

modality_counts[dominant] = modality_counts.get(dominant, 0) + 1

valence_counts = {"negative": 0, "neutral": 0, "positive": 0}

foremotion in self.unprocessed_emotions:

avg_valence =emotion.get_average_valence()

if avg_valence < -0.3:

valence_counts["negative"] += 1

elif avg_valence> 0.3:

valence_counts["positive"] += 1

else:

valence_counts["neutral"] += 1

return {

"total_unprocessed":len(self.unprocessed_emotions),

"processing_queue_size":len(self.processing_queue),

"archived_count":len(self.archived_emotions),

"average_salience": sum(e.salience for e in self.unprocessed_emotions) /max(1,len(self.unprocessed_emotions)),

"average_structure_level": sum(e.structure_level for e in self.unprocessed_emotions) /max(1,len(self.unprocessed_emotions)),

"modality_distribution": modality_counts,

"valence_distribution": valence_counts,

"learned_terms_count":len(self.learned_terms),

"current_time": self.current_time

}

Permalink |記事への反応(2) | 06:18

このエントリーをはてなブックマークに追加ツイートシェア

2024-12-04

[今日知った言葉] モーダル補完

見えない部分を脳内で補完しようとする視覚機能一種

それがモダリティ感性的)でない場合は「アモーダル補完」というらしい。

Permalink |記事への反応(0) | 22:59

このエントリーをはてなブックマークに追加ツイートシェア

2024-02-14

萌えモダリティ

三重交通の件で改めて思うのが、実世界でこれやったら「ちょっとこれは今時どうなんすかね〜」という話になりそうなジェンダー的または性的記号を過度に強調した表象(表情・体型・服装・姿態など)の形式が、二次絵であれば/あるから許容してよい、という考え方が、我々の社会一定の定着を見つつあるのかもしれないな、ということ。

世界における表象と、萌え絵二次絵という表象に対する捉え方を、我々自身が切り替えて鑑賞している。モードが変わっている。俺はふとした瞬間…たとえば改札前で唐突に駅娘の立て看板に遭遇した瞬間に、「なんでこの絵はこんなにオンナオンナした記号性を振りまいてんのかな」という思いが脳内をよぎったりもするけど、その違和感は一瞬で消え去ってしまう。

このとき俺の脳はたぶん、「二次絵はそもそも『そういうもの』だから、疑問に思わなくてもよい」という判断停止によって、よけいな思考エネルギー節約している。楽しんでいるわけではないけど、俺の中の常識との衝突を避けて、平穏気持ちでその異物感を見過ごすことができる。文楽で後ろにいる黒子をいないことにして鑑賞するように。ミュージカル映画でそれまでシリアスなシーンで唐突に歌と踊りが始まることにも驚かずに鑑賞するように。「二次絵鑑賞のモダリティ一般化」という風に言ってもいいのかもしれない(意味的にはモダリティよりリテラシーという言葉のほうがふさわしいのかもしれないけど、リテラシーには「身についてるほうがエラい」というニュアンスがあるから、使わない)。

海外でもオタク層などでこういうモダリティを持つ人々が一定数出てきているのは伺えるんだけど、では今後そういうモダリティがそういう国々でも一般化するんだろうか?ということを考えてしまう。

Permalink |記事への反応(1) | 05:45

このエントリーをはてなブックマークに追加ツイートシェア

2022-08-05

清水晶子(東京大学)「学問の自由キャンセルカルチャー」Part5 〜Ahmedが見立てキャンセルカルチャー批判メカニズム

目次

anond:20220805225632 Part1 〜学問の自由とその濫用

anond:20220805225835 Part2 〜ポリティカル・コレクトネスという言説戦略

anond:20220805230017 Part3 〜Academic Bill of RightsとProfessorWatch List〜

anond:20220805230307 Part4 〜キャンセルカルチャー批判

anond:20220805230534 Part5 〜Ahmedが見立てキャンセルカルチャー批判メカニズム

anond:20220805230705 Part6 〜質疑応答

学問の自由キャンセルカルチャー」Part5 〜Ahmedが見立てキャンセルカルチャー批判メカニズム

https://www.youtube.com/watch?v=FP8rL7KfisI&t=3920s

1:05:20~1:10:25

Sara Ahmed, "You Are Opressing Us!"

「誰かがノー・プラットフォームにされたと言うためのプラットフォームを与えられ続けたり、あるいは口を封じられたことについて延々と話をしていたりする時、そこにはいつもパフォーマティブ矛盾がある。しかしそれだけではない。そこであなたが目にするのは、権力メカニズムなのだ。」

自分がすでに抱いている信念を裏付け証拠を求める欲望は、時に、その証拠を生み出すための挑発や威嚇につながることがある。

侮辱的な言語行為が次々と述べられるのは、侮辱され気分を害してほしいという欲望があり、他者が気分を害するせいで『われわれの自由』が制限されるのだという証拠を望んでいるから、である。」

この枠組みを非常に早い時期に的確に指摘したのが、イギリスフェミニストとして知られるSara Ahmedです。

2015年のブログ記事でAhmedは、ガーディアン紙に掲載された、これ別の書簡なんですがこれも公開書簡です、

個人に対する検閲や口封じを許すことはできない」というタイトルの公開書簡を取り上げます

この公開書簡英国でのいくつかの例を取り上げつつ、

トランスジェンダーについてあるいはセックスワークについて特定批判見解を持つフェミニストたちが、

大学沈黙させられているというふうに主張するものでした。ちょっとここ分かりにくいんですけど、

2015年の英国のこの文脈では、沈黙させられているというふうに主張しているフェミニストたちというのは、

階級的にもそれからジェンダーモダリティという点でも、いわば多数派の側になります

Ahmedは、公開書簡で取り上げられている例というのが実際には、特定見解理由にした検閲だったりノー・プラットフォーミング、

ノー・プラットフォーミングっていうのはイギリス運動なんですけど、

イギリス学生運動の中で採用されてきた戦略で、非常に危険で受け入れ難いと見なされた見解とか信念、それこそネオナチとかです、

そういうものを公開する機会そのもの提供しない、そういうのがノー・プラットフォーミングといわれるんですが、

ただAhmedは、この公開書簡で取り上げられている例が実際には、

そういう検閲とかノー・プラットフォーミングには当たっていなかったということを、事実確認した上で、

にもかかわらずこれをあえて、キャンセル検閲、口封じ、ノー・プラットフォーミングという形で主張することで、

どういう効果が目指されているのか、ってふうに問います

これAhmedの引用なんですが、

「誰かがノー・プラットフォームにされたと言うために

そういう発言をするためのプラットフォームというのを実際には与えられ続けていたり、

あるいは口を封じられたことについて延々と話をしていたりする時に、そこにはいつもパフォーマティブ矛盾がある。

しかしそれだけではない。そこであなたが目にしているのは、権力メカニズムなのだ。」。

まり検閲された、口を封じられたという主張それ自体が、

検閲され口を封じられたはずの側がより力を獲得する、そういう目的のためにされていると。

からこそ、検閲され口を封じられること、言い換えればキャンセルされることというのは、ここではむしろ求められている。

キャンセルされたいんですね、どっちかっていうと。

次の引用ですが、

自分がすでに抱いている信念を裏付け証拠を求める希望は、時に、その証拠を生み出すための挑発や威嚇につながることがある。

侮辱的な」、これoffensiveですね、「侮辱的な言語行為が次々となされるのは、侮辱され気分を害してほしいという欲望があり、

他者が気分を害するせいで『われわれの自由』が制限されるのだというそ証拠を望んでいるから、なのである。」。

からキャンセルされると、そのキャンセルされた人ということでどんどん力が集まって、むしろキャンセルされたい。

キャンセルされるために、より侮辱的な、よりoffensiveな言葉が発せられるという、そういう仕組みができてるというのが、

Ahmedの見立てなんですね。

「この書簡は、フェミニスト発言自由になされるべきで、健康で活発な民主主義のしるしである討議や対話可能にするものだ、と考えている。しかし、トランフォビアや反トランス発言を、ハッピーダイバーシティ食卓自由に表明してよいような、ただのありふれた観点として扱うことはできない。食卓を囲んでいる誰かが、別の誰かを抹消するべきだと、意図的あるいは事実上主張しているときに、対話などしようがない。あなたを会話から抹消したがっている誰かと「討議や対話」をするとしたら、「討議や対話」はそれ自体が抹消のテクニックになる。特定の討議や対話を拒絶することこそが、したがって、生き延びる鍵となる戦略になりうるのである

学問あるいは言論の自由というもの支点とした、抑圧側と被抑圧側の逆転の構図、

表現を変えるのであれば、抑圧されて周縁化されてきた側からの異議申し立てを封じるための口実、

あるいは道具としての、学問とか言論の自由の利用っていう、

今日の報告では、90年代からこの図式が少しずつ洗練されつつ引き継がれた様子っていうのをざくっと見てきたわけですが、

その図式が現時点で到達しているのが、自由侵害された口を封じられたという主張が、

実は封じられることもなく自由に繰り返され拡散されることで、力をさらに獲得している、

クリックアルゴリズム時代キャンセルカルチャーというパワーメカニズムだ、ということになります

からこそ私たちは、国家や強力な組織経済あるいは社会規範要請などから学問の自由というものを守ると同時に、

現代の今2022年時点の学問の自由というのが、もろ刃の剣であること、学問の自由特定の利用には警戒すべきであるということを、

忘れてはならないと思います

最後にこういう自由濫用というものサバイブするためにAhmedが提唱した戦略引用して、私の報告を終わりにしたいと思います

「この書簡は」、先ほどの公開書簡ですね、

「この書簡は、フェミニスト発言自由になされるべきで、

健康で活発な民主主義のしるしである討議や対話可能にするものだ、というふうに考えている。

しかし、トランスフォビアや反トランス発言を、

ハッピーダイバーシティ食卓自由に表明してよいような、ただのありふれた観点として扱うことはできない。

食卓を囲んでいる誰かが、別の誰かを抹消すべきだと、意図的あるいは事実上主張しているときに、そこに対話など存在しようがない。

あなたを会話から抹消したがっている誰かと「討議あるいは対話」をするとしたら、

「討議や対話」はそれ自体が抹消のテクニックになる。

特定の討議や対話を拒絶することこそが、したがって、生き延びる鍵となる戦略になりうるのである」。

ありがとうございました。

anond:20220805230705 Part6 〜質疑応答

Permalink |記事への反応(6) | 23:05

このエントリーをはてなブックマークに追加ツイートシェア

2020-04-30

[今日知った言葉]クロスモーダル現象

認知科学心理学で、視覚と味覚、視覚聴覚など、本来別々とされる知覚が互いに影響を及ぼし合う現象

赤い色を付けた甘味料が入った飲み物イチゴ味を連想させるなどの例が知られる。

クロスモーダル効果クロスモダリティ現象

https://kotobank.jp/word/%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%A2%E3%83%BC%E3%83%80%E3%83%AB%E7%8F%BE%E8%B1%A1-1829842

Permalink |記事への反応(4) | 23:38

このエントリーをはてなブックマークに追加ツイートシェア

2018-03-20

めんつゆ使う料理初心者

わかるよ。便利だ。めんつゆは便利。

だって未だに使う。ほうれん草おひたしなんかはめんつゆ使うし、炒めものにつかったりする。

 

でも考えてほしい。

彩りを。

 

ある界隈で「めんつゆばかりを使う女性とは結婚したくない」という話があったが、彼らのそれも真の話。

そして、めんつゆが便利なのも真の話。

料理好きの一人として、めんつゆを使いつつ、他人に飽きられない料理方法を記しておく。

 

料理は8~9割が舌以外の情報である

クロスモダリティ効果でググればいっぱい出てくる。

味の情報は、見た目や香りから情報が強い。これをまず理解してほしい。

逆に言えば、「めんつゆ味」なんてものはこの香りや見た目でどうにでもできるという話です。

 

色(彩り)を加える

一番重要な話です。

めんつゆ料理初心者の人の料理はなにかと料理の色がめんつゆ色(茶色醤油色的な)になりがちです。

例えば煮物なんかわかりやすいですよね。その芋の色が、めんつゆ色です。

この色に類似した色は、料理をする上で絶対に出てしまう色です。例えば、肉を焼いたり魚を焼いても茶色になりますし、チャーハンなんかもお米は最終的にこの色になります

この色は「料理の基本色1 茶色」と勝手自分は読んでいます

 

1があるということは、2もあります

料理の基本色2は「白色」のことです。

簡単に言えば、お米、豆腐パン素麺なんかはわかりやすいですけど、お皿も白ですよね。後は、上記で肉や魚を書きましたが、茹でたりすると白色に近くなります

なので、勝手に「料理の基本色2 白色」と読んでいます

 

めんつゆ料理初心者がやりがちなのが、この基本色しかつかっていない、ということ。

これでは視覚から情報で飽きが来ます

ここでさらに「3色」足してみましょう。

キーワードズバリ信号機カラー」です。

赤:トマトにんじんパプリカ唐辛子など

黄:卵(卵黄)、かぼちゃとうもろこしさつまいもカリフラワーなど

青(緑):葉っぱ物(キャベツレタスほうれん草など)やブロッコリーなど

この三色を加えるだけで圧倒的に美味しく見えます

考えてみればこれは色んな料理がそうです。

例えば肉じゃがも、肉とじゃがいもだけでなく、にんじんが入っているはずです。

オムライスレストランなんかで頼んだ時に、中のチキンライスにはグリーンピースとうもろこしなど、赤色以外の物が入っているはずです。

できる限り、この三色意識しましょう。それだけで「めんつゆ色」の比率を下げることができるはずです。

 

香りを加える

めんつゆ味の一番の要因は個人的にはこの香りだとおもっています

カツオだし香りですね。

このカツオだし香りは実はものすごく美味しい香りなので、めんつゆ初心者めんつゆ料理を作った時に美味しく感じる一番の理由だと私は思っています

しかし、この美味しいカツオだし香り毎日食べていれば流石に飽きがきます

例えば、夏の日に素麺が出てきた時、毎日素麺が続くと飽きますよね。でも、素麺自体に飽きたのではないはずです。素麺を作った炒めものを作るとあんなに飽きたとおもった素麺が美味しく感じるように。

なので、飽きが来ないようにに香りを変えるか加えてやる必要があるのです。

 

ただし、めんつゆを使う以上香りを変えることはできません。(まぁ、にんにくなどを使い無理やり匂いで上書きする方法もありますが…)

と言うよりも、めんつゆ料理が美味しい理由の1つがこの香りなので、下手に変えると美味しくなくなる可能性のほうが大きいです。

なので、一品増やして、カツオだし香り毎日中和することが必要です。

このかつおだしと抜群に相性のよいものがあります

それが「脂質」つまり「油」です。

一品作成時にこの「油」をローテションすることで比較的用意にカツオだしの感じ方を変えることが可能です。

私の場合は、「ごま油」「オリーブオイル」「サラダ油」の三種類ぐらいでローテしています

ごま油であれば、根菜と相性が良いです。土の匂いが強い根菜ごま油調理するとクドくないよい香りになります

オリーブオイルは大体の生野菜と相性が良いです。エクストラヴァージンって書いてあるやつなら火を通さなくても使えます

サラダ油は卵料理や、天ぷらに相性抜群です。普段お使いかとおもいます

 

なので、料理としては「めんつゆを使った料理1品」+「各種油で調理した料理1品」を意識するだけでも全然飽き方が違います

よくやりがちな「野菜炒めサラダ油+味付けめんつゆ)」と言った一品料理ではなく、なるべく分けてあげたほうが良いです。

 

ん?そのめんつゆ以外を使った一品を作るのがめんどくさい?

そうなった時は最悪、スープでもいいのです。かつおだしを他のだしで相殺してしまえばいいのです。

私はよくコンソメを使います。同じぐらい味覇鶏ガラだしベース)も使います

ただ、これで万能だからってコンソメ味覇を使い続けてはいけません。あくまでもローテすること。コンソメ味覇もだいたいなんでも美味しく仕上げてくれるはずです。最近CMでよく見る創味シャンタンもよいですね。

 

誰のための料理

当然、私も料理するのはめんどくさい、できればひたすらに外食にしたいと思っていますが、でも作る以上、食べてくれる人がどうやれば喜んで食べてくれるだろうということを考えると「毎日、味を変えてやる必要があるな」という事を考えたのです。

かに、働く人間に対して、料理というのは唯のエネルギー補給なのかもしれません。愛を込めても1/3さえ伝わらないかもしれません。確かに料理はめんどくさい。上で書いてあることを読んで「結局料理はめんどくさい」と思う人はたくさんいると思います。そして、食べてくれる人はそんな苦労も知らずに「今日はなんでもいい」「簡単ものでいいよ」とメチャクチャを言います。報われないです。

 

でも、「食」という唯の作業も楽しみがなければ拷問だと、私は思います

私は「あなたに苦しんでほしくて料理を作っているんじゃない」と考えました。その結果、食べててきっと楽しいと思ってくれると信じて弁当も作りますし、晩ごはん今日も作ります

 

参考までに今日は、豆腐オクラサラダオリーブオイル使用)とぶり照り(めんつゆ使用)です。

Permalink |記事への反応(0) | 15:06

このエントリーをはてなブックマークに追加ツイートシェア

 
ログインユーザー登録
ようこそ ゲスト さん
Copyright (C) 2001-2025 hatena. All Rights Reserved.

[8]ページ先頭

©2009-2025 Movatter.jp