Show HN: Misata – synthetic data engine using LLM and Vectorized NumPy

2025/12/16 23:38

Show HN: Misata – synthetic data engine using LLM and Vectorized NumPy

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

要約

Misataは、自然言語で記述された物語を手動でスキーマ設計やトレーニングデータを用意することなく、現実的かつ複数テーブルからなるデータセットへと変換します。自動で整合性制約やビジネスルールを持つリレーショナルスキーマを生成し、効率的に数百万行をストリーミングし、Groq(無料かつ高速)、OpenAI(無料層なし)、またはローカルのOllamaによるLLM駆動生成をサポートします。

クイックスタート

misata generate --story "A fitness app with 50K users" \
  --use-llm --rows 50000 --output ./data

約2.34 秒で「FitnessApp」というスキーマを生成し、5テーブルと4つのリレーションシップを作成します。

Python API

gen = LLMSchemaGenerator(...)
sim = DataSimulator(gen)
for batch in sim.batches(rows=100000):
    # バッチを処理または書き込み

CLIオプション – 出力ディレクトリ、行数、再現性のあるシード、プロバイダー/モデル選択。

制約

Constraint
は時間管理表での日次作業時間上限などのルールを強制できます。

プールとノイズの拡張

  • TextGenerator.extend_pool
    ,
    load_pools_from_file
    ,
    save_pools_to_file
  • add_noise(null_rate=0.01, outlier_rate=0.02, typo_rate=0.03, duplicate_rate=0.04)
  • NoiseInjector.apply_temporal_drift()
    で収益の時間的漂移を適用。

属性カスタマイズ

Customizer
ColumnOverride
を使用して現実的な分布や条件付き値を設定します。

ベンチマーク – 10 K 行: 0.03 秒(333k 行/秒)、1 M 行: 2.6 秒(390k 行/秒)、10 M 行ストリーミング: 26 秒(約390k 行/秒)。

エンタープライズ向けオファリング – カスタムスキーマ、パイプライン統合、業界特有のデータ生成、およびチームトレーニング。お問い合わせは rasinbinabdulla@gmail.com まで。

Misata は、開発者・データサイエンティスト・企業向けに、データベースプロトタイピング、合成テストデータ作成、およびプライバシー保護を行ったデータ生成を加速します。

本文

Misata – ストーリーから合成データベースへワンコマンドで


概要

自然言語だけで実際の多テーブルデータセットを生成。スキーマ作成や学習データは不要です。

機能FakerSDVMisata
自然言語入力
スキーマ自動生成
関係整合性
ビジネス制約
学習データ不要
ストリーミング(10M+ 行)

速攻開始

1. Groq (無料・高速)

export GROQ_API_KEY=your_key   # 無料取得: https://console.groq.com
misata generate --story "A SaaS with 50K users, subscriptions, and payments" --use-llm

2. OpenAI

export OPENAI_API_KEY=your_key
misata generate --story "E-commerce with products and orders" --use-llm --provider openai

3. Ollama (ローカル・無料・プライベート)

ollama run llama3   # まず Ollama を起動
misata generate --story "Fitness app with workouts" --use-llm --provider ollama

出力例

$ misata generate --story "A fitness app with 50K users" --use-llm
🧠 Using Groq (llama-3.3-70b-versatile) for intelligent parsing...
✅ LLM schema generated successfully!

📋 Schema: FitnessApp
   Tables: 5
   Relationships: 4

🔧 Generating 5 table(s)...

   ✓ exercises        (10 rows)
   ✓ plans            (5 rows)
   ✓ users            (50,000 rows)
   ✓ subscriptions    (45,000 rows)
   ✓ workouts         (500,000 rows)

⏱️  Generation time: 2.34 seconds
🚀 Performance: 213 675 rows/second
💾 Data saved to: ./generated_data

Python API

from misata import DataSimulator, SchemaConfig
from misata.llm_parser import LLMSchemaGenerator

# ストーリーからスキーマ生成
llm = LLMSchemaGenerator(provider="groq")  # または "openai", "ollama"
config: SchemaConfig = llm.generate_from_story(
    "A mobile fitness app with 50K users, workout tracking, "
    "premium subscriptions, and January signup spikes"
)

# データ生成
for table_name, batch in DataSimulator(config).generate_all():
    print(f"Generated {len(batch)} rows for {table_name}")

CLI リファレンス

オプション説明
misata generate --story "..."
ルールベース生成(API キー不要)
--use-llm
スキーマとデータを LLM で生成
`--provider [groqopenai
--model <name>
カスタムモデル指定(例:
llama3
--output-dir <path>
出力ディレクトリ変更
--rows <count>
デフォルト行数を上書き
--seed <int>
再現性のためシード設定

ビジネスルール制約

from misata import Constraint, Table

timesheets = Table(
    name="timesheets",
    row_count=10_000,
    constraints=[
        Constraint(
            name="max_daily_hours",
            type="sum_limit",
            group_by=["employee_id", "date"],
            column="hours",
            value=8.0,
            action="redistribute"
        )
    ]
)

LLM プロバイダー

プロバイダー環境変数無料枠備考
Groq
GROQ_API_KEY
✅ 30 req/min最速、推奨
OpenAI
OPENAI_API_KEY
品質最高
OllamaNone✅ ローカルプライベート・インターネット不要

データプール拡張

from misata import TextGenerator

# カスタム名を追加
TextGenerator.extend_pool("first_names", ["Arjun", "Priya", "Rahul"])

# ファイルから読み込み
TextGenerator.load_pools_from_file("custom_pools.json")

# 再利用のため保存
TextGenerator.save_pools_to_file("expanded_pools.json")

ML トレーニングデータ – ノイズ注入

from misata import add_noise, NoiseInjector

# 簡易ノイズ注入
noisy_df = add_noise(
    df,
    null_rate=0.05,      # 5% 欠損値
    outlier_rate=0.02,   # 2% 統計外れ値
    typo_rate=0.01,      # 1% テキストのタイプミス
    duplicate_rate=0.03, # 3% 重複行
    seed=42
)

# 高度: 時系列分布ドリフト
injector = NoiseInjector(seed=42)
df = injector.apply_temporal_drift(
    df,
    date_column="created_at",
    value_column="revenue",
    drift_rate=0.15,      # 15% 増加
    drift_direction="up"
)

属性カスタマイズ

from misata import Customizer, ColumnOverride
import numpy as np

customizer = Customizer(seed=42)

# 年齢分布を実際に近い正規分布で設定
customizer.add_override(
    "users",
    ColumnOverride(
        name="age",
        generator=lambda n: np.random.normal(35, 12, n).clip(18, 80).astype(int)
    )
)

# 他列に基づく条件付き値
customizer.add_conditional(
    "orders", "shipping_cost",
    {"country": {"US": 5.99, "UK": 9.99, "DE": 7.99}}
)

# 生成データへ適用
df = customizer.apply(df, "users")

パフォーマンスベンチマーク

行数時間スピード (行/秒)
10 K0.03s333 k
100 K0.26s385 k
1 M2.6s390 k
10 M26s390 k (ストリーミング)

今すぐ試す

ブラウザから Misata を直接利用できます。インストール不要です。


エンタープライズ & コンサルティング

  • 大規模データスキーマ(10M+ 行)カスタム構築
  • 既存パイプラインとの統合
  • 業界特化型リアルデータ生成
  • チーム向けトレーニングとオンボーディング

お問い合わせ: rasinbinabdulla@gmail.com


ライセンス

MIT License


作者

Muhammed Rasin によって構築されました。

同じ日のほかのニュース

一覧に戻る →

2025/12/20 7:13

CSS Grid Lanes

## Japanese Translation: > **Safari Technology Preview 234 は CSS Grid Lanes を導入しました**。これは、開発者が JavaScript なしで CSS 内で直接モザイク風グリッドを構築できる新しいレイアウトモードです。 > > 開発者は `display: grid-lanes;` と標準の Grid 構文(`grid-template-columns`、`repeat(auto-fill, …)` など)を組み合わせて柔軟なレーンを作成します。アイテムは自動的に最も近い上部レーンに配置され、無限スクロールとタブフレンドリーなナビゲーションが可能になります。 > > **高度な機能** には、レーンサイズの変更(`minmax(8rem, 1fr) minmax(16rem, 2fr)`)、アイテムの跨ぎ(`grid-column: span N`)、明示的配置(`grid-column: -3 / -1`)および新しい `item-tolerance` プロパティ(デフォルトは `1em`)が含まれます。これは、サイズ差に基づいてアイテムがレーンをどれだけ積極的にシフトするかを制御します。レーンは列方向(「ウォーターフォール」)または行方向(「レンガレイアウト」)で向きを設定でき、デフォルトの流れは通常です。 > > 実装は 2022 年中頃に開始され、Safari TP 234 で利用可能です。ライブデモは <https://webkit.org/demos/grid3>(写真ギャラリー、ニュースレイアウト、博物館サイト、メガメニューフッター)でホストされています。CSS Working Group はまだプロパティ名と向きの構文(`grid-lanes-direction` か `grid-auto-flow` の再利用)を最終化中です。その決定が下り次第、この機能は本番環境で使用できるようになります。 > > 開発者にとって、これは追加の JavaScript を必要とせず、より高速でパフォーマンスの高いレスポンシブレイアウトを実現することを意味し、ブラウザベンダーは同様の機能を採用する可能性があり、将来のウェブデザイン標準に影響を与えるでしょう。

2025/12/19 0:01

Mistral OCR 3

## Japanese Translation: Mistral OCR 3 は、従来のエンタープライズツールと AI ネイティブ競合他社の両方を上回る高精度な OCR モデルです。フォーム、スキャン文書、複雑な表、および手書き文字に対して Mistral OCR 2 と比較し、全体で 74 % の勝率を達成します。このモデルは、1,000 ページあたり $2(50 % Batch‑API 割引適用で 1,000 ページあたり $1)と価格設定されており、シンプルな API または Mistral AI Studio のドラッグ&ドロップ Document AI Playground を通じてアクセスできます。 主な強みは次のとおりです: * **手書き文字サポート** – 連続体文字、混合内容、および印刷フォーム上の手書き文字。 * **フォーム処理** – 請求書、領収書、コンプライアンスフォーム、政府文書におけるボックス、ラベル、手書き入力、および密集レイアウトの検出を改善。 * **頑健性** – 圧縮アーティファクト、傾斜、歪み、低 DPI、背景ノイズ、複雑なレイアウトに対処。 * **表再構築** – ヘッダー、結合セル、多行ブロック、および列階層を完全にサポートし、colspan/rowspan を含む HTML テーブルタグ付きの拡張マークダウンを出力。 初期採用者はすでに Mistral OCR 3 を高ボリュームのエンタープライズパイプラインに統合しています:請求書を構造化フィールドへ変換、会社アーカイブのデジタル化、技術レポートからクリーンテキストを抽出、および企業検索の強化。精度、コスト効果、柔軟な展開の組み合わせにより、大規模文書処理を業界横断で変革できる競争力ある代替手段として位置づけられています。

2025/12/20 8:59

PBS News Hour West to go dark after ASU discontinues contract

## Japanese Translation: ## Summary アリゾナ州立大学(ASU)のウォルター・クロンスキー報道学部は、PBS NewsHour Westとのパートナーシップを更新しないことを決定し、2019 年から ASU のダウンタウンフェニックスキャンパスで運営されていた事務所を実質的に閉鎖しました。この動きは「ASUの優先事項の変更」に起因すると、News Hour Productions の GM 兼 WETA EVP/CCO のマイケル・ランチリオが述べました。PBS およびアリゾナ PBS は追加説明を行わず、ASU に感謝し、地域ニュースへの継続的な取り組みを約束しました。 閉鎖により、西海岸で 20 % 以上の視聴者に到達することを支援していた西部本部としての事務所の役割が終了します。また、ASU のジャーナリズム学生(例:AJ Ceglia 学長)に実地報道経験と就職機会を提供していたインターンシッププログラムも消滅します。現在のインターンは学術クレジットを受け取りますが、卒業要件を満たすために代替配置を探す必要があります。 PBS NewsHour West の最終全国放送は 12 月 19 日に行われます。クロンスキー建物は、事務所閉鎖前に学校のサポートを称える形で夜間放送に登場しました。この報道は *The State Press* のジュニアレポーター、エマ・ブラッドフォード(連絡先:elbradfo@asu.edu; X @emmalbradford)によって取り上げられました。彼女も ASU のジャーナリズム/メディアコミュニケーション学部の学生です。 この決定は、西米国における地域ニュースの報道を減少させ、PBS の視聴者エンゲージメントを低下させ、新進気鋭のジャーナリストのプロフェッショナルパスウェイを制限する可能性があります