Movatterモバイル変換


[0]ホーム

URL:


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

2025-04-13

[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 &lt; 0 else "positive" if self.valence&gt; 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)&gt; 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 &lt; 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&gt;= 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&gt;=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&gt;= 0.9:

best_lang =emotion.get_best_language_match()

if best_lang and best_lang["confidence"]&gt;= 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 &lt; -0.3:

valence_counts["negative"] += 1

elif avg_valence&gt; 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

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

記事への反応 -

記事への反応(ブックマークコメント)

全てのコメントを見る

人気エントリ

注目エントリ

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

[8]ページ先頭

©2009-2025 Movatter.jp