PPhraseNacre
AIコーディングワークスペース

LZ78フレーズトークン

最大4096バイトをLZ78の辞書番号と次バイトの組に符号化します。

● ● ●PhraseNacre●
ワークフロー · LZ78フレーズトークン ×
def lz78_tokens(data):
    if type(data) is not bytes or len(data) > 4096:
        raise ValueError("lz78.input")
    dictionary, phrase, output = {b"": 0}, b"", []
    for byte in data:
        extended = phrase + bytes([byte])
        if extended in dictionary:
            phrase = extended
        else:
            output.append((dictionary[phrase], byte))
            dictionary[extended] = len(dictionary)
            phrase = b""
    if phrase:
        output.append((dictionary[phrase], None))
    return output
✳最大4096バイトをLZ78の辞書番号と次バイトの組に符号化します。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
01

適用前に確認

実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。

02

モデル

OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。

03

プロジェクト

空入力と繰り返しを試し、末尾の空バイト標識は辞書に既存のフレーズだけに使います。

ワークフロー

LZ78フレーズトークン

ワークフロー ↗
ワークフロー
def lz78_tokens(data):
    if type(data) is not bytes or len(data) > 4096:
        raise ValueError("lz78.input")
    dictionary, phrase, output = {b"": 0}, b"", []
    for byte in data:
        extended = phrase + bytes([byte])
        if extended in dictionary:
            phrase = extended
        else:
            output.append((dictionary[phrase], byte))
            dictionary[extended] = len(dictionary)
            phrase = b""
    if phrase:
        output.append((dictionary[phrase], None))
    return output
AIコーディングワークスペース

エンコードした出力を、他のコードが読むインターフェースとして扱う

PhraseNacreは、バイト列を他で利用する表現へ変換するコードを開発するためのWindows向けプロジェクト環境です。ソースフォルダーと、生成側・読み取り側の取り決めから始めてください。小さく見える出力でも利用側での意味が変わる場合があるため、エンコーダーの変更を提案する前に、モデルにそのインターフェースを調べてもらいます。

具体的な作業として、lz78.pyで末尾の既知のフレーズをどう表現するか検討できます。繰り返しを含む短いバイト列のテスト例と、読み取り側が期待するトークン列を示してください。どのエンコーダーとデコーダーも同じ形式を共有すると仮定せず、修正案が終端の規約を保持するかに議論を絞れます。

変更した生成側と一緒に読み取り側も確認し、自分のプロジェクトの検証を実行します。空の入力、反復フレーズ、異なるバイトを含め、可能なら独立した期待出力を使ってください。往復変換の成功は有用な証拠ですが、変更した二つの部品が互換性のない新形式で一致しても見逃さないよう、既存のテスト例とも比較します。

必要に応じて認証情報を設定し、対応するOpenAI互換またはAnthropicのエンドポイントから支援モデルを選びます。拒否応答を抑える処理を施したAIモデル(abliteratedモデル)はエンドポイントが提供する場合に限り利用でき、プロバイダーの制限は引き続き適用されます。ツールへのアクセスとコンテキスト上限はモデルとサーバーに依存します。形式の互換性は明示的なプロジェクト要件として扱います。

エンコーダー変更時の質問

エンコーダーの修正時に読み取り側も調べるのはなぜですか?

末尾のフレーズを表すマーカーも含め、出力はインターフェースです。生成側が内部的には整合するトークンを出しても、既存の読み取り側が別の意味に解釈する場合があります。両側をレビューし、過去のテスト例を残して、小さな変更で形式が暗黙に変わらないようにします。

往復変換が成功すれば十分ですか?

有用ですが、一緒に変更した二つの部品が同じ誤りを共有することがあります。独立に定めたトークン例と既存のエンコード済みデータも比較してください。現行の読み取り側が過去のデータを引き続き受け付ける必要があるなど、互換性の方向を明記します。

この処理内でテキストをバイト列に変換すべきですか?

明示的な文字エンコードの取り決めがある場合に限ります。例はバイト列を受け付けるため、テキスト変換を移すとインターフェースが変わります。現在どこで文字エンコードを選ぶか調べ、依頼された機能が意図的に移動を求めるのでなければ境界を保ってください。

コードを短くすれば圧縮率が上がったと言えますか?

いいえ。ソースの長さは出力サイズや実際の負荷での性能を示しません。依頼された動作にレビューを絞り、圧縮特性が重要なら適切な測定を別途行ってください。実際にテストしたデータと実装の結果だけを報告します。

Windows版をダウンロード ↗

PhraseNacre · 更新日 2026-10-25