Migdal

Cover image for 人工言語単語生成ツール – 使い方ガイド
マニー
マニー

投稿

人工言語単語生成ツール – 使い方ガイド

🌐 Word Generation Tool

このツールは、音素の指定や生成規則に基づいて人工言語の単語を自動生成するものです。

ミニマルペアの回避や語彙リスト指定など、高度な設定もサポートしています。

🔗 デモページを見る


📁 目次


⚙️ 基本設定

🌤 音素の選択

  • 子音:「子音」欄にスペース区切りで入力(例:k l m n p s t
  • 母音:「母音」欄にスペース区切りで入力(例:a e i o u音素入力

📚 語彙リスト

  • 「語彙リスト」から選択:
    • なし / スワデシュ・リスト / 坂本式架空言語基礎語彙リスト ver.6.2 / カスタム
  • カスタム以外を選ぶと、カテゴリごとに規則を個別設定可能
  • 語彙リストを使うと、単語・意味・カテゴリがテーブル形式で出力 語彙リスト

🔯 音素数の範囲

  • 「音素数の範囲」で最小値・最大値を半角数字で指定(例:2〜6音素数

🔢 生成する単語数

  • 任意に設定(デフォルト:10)
  • 語彙リストを使うと、その数に合わせて自動決定 単語数

🎲 生成方法(重複・ミニマルペア制御)

  • 「生成方法」から以下を選択(デフォルト:ミニマルペア回避):
    • ミニマルペア回避:音素1つだけ異なる単語の連続出現を防止
    • 重複回避:同一単語の重複を防止
    • 完全ランダム:制限なし 生成方法

🔍 ミニマルペアの回避範囲

  • 「ミニマルペアの回避範囲」で直近N語内の重複を防ぐ(例:100) ※「ミニマルペア回避」が有効な場合のみ有効 ミニマルペア回避範囲

🔧 詳細設定(+をクリックで展開)

🔁 音素の出現制限

  • 連続子音数:「〜重子音」で設定(デフォルト:1)
  • 連続母音数:「〜重母音」で設定(デフォルト:1) 出現制限

⏩ 音素の位置制限

  • 文頭のみ使用可能な音素
    • 子音:「最初にのみ使える子音」
    • 母音:「最初にのみ使える母音」
  • 語尾のみ使用可能な音素
    • 子音:「最後にのみ使える子音」
    • 母音:「最後にのみ使える母音」 位置制限

🚫 禁止文字列

  • 含めない文字:指定された文字列を含む単語は生成されない(例:ti tu
  • 文頭禁止:「最初に含めない文字」(例:a e i o u
  • 語尾禁止:「最後に含めない文字」(例:k l m n p s t禁止文字

📝 カスタム語彙リスト

  • 「カスタム語彙リスト」にて、単語(意味)を改行区切りで入力 カスタム語彙

🛠 操作手順

  1. 各項目を設定(必要に応じて詳細設定を展開)
  2. 生成ボタンをクリック
  3. 出力形式:
    • 単語一覧(語彙リストなし) 単語一覧
    • 単語+意味+カテゴリ(語彙リスト使用時) 単語+意味+カテゴリ
  4. 結果はコピー・編集・削除が可能 編集操作

人気順のコメント(5)

たたむ
 
siklo profile image
シクロ

こういうgit hubのやつってどうやって実行するんですか?

たたむ
 
_6fe906945f63f9c9266bd profile image
マニー

1. GitHubリポジトリを作成

  • GitHubにログインし、右上の「+」→「New repository」をクリック。
  • リポジトリ名を入力(例: my-webpage)。
  • 「Public(公開)」を選択。
  • 「Create repository」をクリック。

2. HTMLファイルをアップロード

  • 作成したリポジトリの画面で「Add file」→「Upload files」。
  • index.html という名前のHTMLファイルをアップロード(トップページになる)。
  • 「Commit changes」でアップロード完了。

3. GitHub Pagesを有効にする

  1. リポジトリの「Settings(設定)」タブに移動。
  2. 左側メニューで「Pages」をクリック(または「Code and automation」→「Pages」)。
  3. 「Source」で「Deploy from a branch」を選択。
  4. 「Branch」で main を選び、「/(root)」を選択して「Save」。

4. 公開されたURLを確認

  • 数秒〜1分ほどで公開され、https://ユーザー名.github.io/リポジトリ名/ でアクセスできます。
  • 例: https://yourusername.github.io/my-webpage/
たたむ
 
siklo profile image
シクロ

ありがとうございます!

たたむ
 
slaimsan profile image
スライムさん

ミニマルペアを避ける仕組みが入ってるのは、なかなか珍しいですね。私も過去に仕組みを作ろうとしたことがあるので、その時のまとめを共有しておきます。

最小対立を発生させない単語生成器の仕組み posfie.com/@slaimsan/p/J4ae3p2

たたむ
 
_6fe906945f63f9c9266bd profile image
マニー • 編集済

レーベンシュタイン距離を測るプログラムを書いてみました。

function levenshteinDistance(s1, s2) {
  const len1 = s1.length;
  const len2 = s2.length;

  const dp = Array.from({ length: len1 + 1 }, () => new Array(len2 + 1).fill(0));

  for (let i = 0; i <= len1; i++) dp[i][0] = i;
  for (let j = 0; j <= len2; j++) dp[0][j] = j;

  for (let i = 1; i <= len1; i++) {
    for (let j = 1; j <= len2; j++) {
      const cost = s1[i - 1] === s2[j - 1] ? 0 : 1;
      dp[i][j] = Math.min(
        dp[i - 1][j] + 1,
        dp[i][j - 1] + 1,
        dp[i - 1][j - 1] + cost
      );
    }
  }

  console.log(dp[len1][len2]);
}
Enter fullscreen mode Exit fullscreen mode

関数で呼び出して、二つの単語の距離を測ることができます。

levenshteinDistance("text", "texts");   // 結果:1
levenshteinDistance("word", "wing");    // 結果:3
levenshteinDistance("apple", "orange"); // 結果:5
Enter fullscreen mode Exit fullscreen mode