SFGPLは"Simple Functional General Purpose Language"の略で,自然言語を形式化するための言語である. この言語は,文の構造や意味を容易に解釈でき,かつコミュニケーションができるようにするために考案した言語である.
また,この言語は私が趣味で作成したものであり,厳密に検証を行っていないため不備等がある可能性がある.
そして,このプロジェクトでは,GitHub:https://github.com/Eruhitsuji/SFGPLにおいて,資料やプログラムを公開している.
多くの自然言語の文法では,多くの例外や存在し,学習者を悩ませることが多い. また,それを解決するために,世界共通語を目的とした人工言語が提案されたが,それらは多くの自然言語と同様に曖昧な意味や複数の解釈ができる場合が存在する. 特に,接続詞や関係代名詞などを含む,長くて複雑な文章は解釈が困難であることが多い. それらを解決するために,形式的,論理的に理解できるような言語を目的として作成した人工言語がSFGPLである.
SFGPLでは,関数型の言語で,また関数のとる引数の型が厳密に定義されている. SFGPLでは,文構造それぞれに関数が割り振られているため,主語,述語,目的語,補語などの文法上の役割が分かりやすくなっている. また,文構造を組み合わせることによって複雑な文章を作成することができる.
- SFGPLには機能語と少しの単語のみが存在し,厳密に定義された意味を持つ.その他の単語は他の言語から借用される.
- 機能語の後にはいくつかの引数が付き,その引数によって意味が決まる.
- 原則として,各引数は1つの単語または1つのオブジェクトに対応するが,原語が複数の単語である場合は,アンダースコアで接続することで1つの単語とみなすことができる.
- 借用語の前後にはシングルクォーテーションを付けることで区別する.
- 文法上の性や数などの区別をすることはなく,また,冠詞も存在しない.
- 文末にはセミコロン(;)を付ける.ただし,単文の場合は省略可能である.
SFGPLの語順はSVOであるが,文頭に文の構造を決定する機能語が付属する. また,SFGPLでは固有語によって,文構造が厳密に定義されている. 以下の表は,SFGPLで表現できる文構造の表である. また使用方法等の詳細は,文型に記述してある.
単語 | 関数 | 引数 | 補足 | ||
---|---|---|---|---|---|
1 | S V | ta | Noun.do | S,V | |
2 | S V C | ma | Noun.eq | S,V,C | Cが名詞 |
2 | S V C | me | Noun.haveP | S,V,C | Cが修飾語 |
3 | S V O | te | Noun.doT | S,V,O | |
4 | S V O1 O2 | ti | Noun.give | S,V,O1,O2 | |
5 | S V O C | tu | Noun.makeN | S,V,O,C | Cが名詞 |
5 | S V O C | to | Noun.makeM | S,V,O,C | Cが修飾語 |
- | A has B | mi | Noun.have | A,V,B | AがBを所有している |
- | A belongs to B | mu | Noun.belong | A,V,B | AがBに所属している |
- | A is more B than C | mo | Noun.gt | A,V,B,C | AがCよりBである |
- | According to C, A V B | moa | Noun.hearSay | A,V,B,C | Bという内容をCという 情報源から,AはFする |
SFGPLの固有単語においては,発音の例外が存在しない. また,以下の表の国際音声記号(IPA)は発音例である.
SFGPLの子音は次の表のようなものがある.
表記 | IPA |
---|---|
p | /p/ |
b | /b/ |
f | /f/ |
m | /m/ |
t | /t/ |
d | /d/ |
s | /s/ |
n | /n/ |
l | /l/ |
k | /k/ |
g | /g/ |
j | /j/ |
w | /w/ |
一方,SFGPLの母音は次の表のようなものがある. SFGPLの固有語は,数少ない単語を除いて二重母音は存在しない.
表記 | IPA |
---|---|
a | /a/ |
e | /e/ |
i | /i/ |
u | /u/ |
o | /o/ |
oa | /oa/ |
また,借用語は借用語固有の発音で読む.
SFGPLの単語は主に,SFGPLの固有の単語と借用語に分かれる.
固有単語は,主に文構造に必要な機能語と,動詞と修飾語の基礎単語が存在する. またそれ以外は,借用語が使用される.
そして,SFGPLの文構造では,品詞の場所が決定されており,それに従った品詞の単語を使わなければならない.
SFGPLの品詞は名詞(Noun),動詞(Verb),修飾詞(Modifier)の三種類がある. また,名詞のサブクラスとして句(Phrase),代名詞(Pronoun),Bool配列型(BoolList),LangList,LangFunc, LangVarとNumberListが存在する.
BoolList,LangList,LangFunc,LangVarは一般的な文以外に論理的な文を作る際に使用される. そして,真偽を表すBool型が存在する.
NumberListは主に数詞として使われる. また,基数詞としてのNumberクラスが存在する. このNumberクラスは通常単体で使われない.
さらに,名詞や動詞を修飾する特殊な語として,名詞限定語(DeterminerN)と動詞限定語(DeterminerV)が存在する.
それぞれの品詞にはそれぞれ特有の関数(機能語)が存在し,それによって品詞の変更や意味の決定などが行われる. その他に,基礎単語を実装する,単語(Word)が存在する. 単語は,品詞別に動詞の単語の"WordV",修飾語の単語の"WordM"が存在する.
名詞は,あらゆる物体,物質,人物,場所などのあらゆる概念を表す語である. 動詞は,あらゆる動作,作用,状態,存在などを表す語である. 修飾語は,他の語を修飾する語である.SFGPLでは形容詞と副詞の区別はつけない.
PythonライブラリSFGPLでは品詞ごとにクラスが存在する. LangObjは単語の基本構造体であり,_BaseListはList用の基本構造が定義されている. また,DeterminerNとDeterminerVは,単語に意味を付加するためだけの単語であり,Python上では,ただの静的な関数として表されている.
機能語により,文の役割や品詞等の決定がされる. 機能語の機能,役割や意味は引数内でのみしか適応されない.
この機能語らは,Pythonの関数と一対一となっている. また,引数の数も決まっていて,引数の場所によって,役割が決まっている.
機能語の一覧と利用方法は,dict.csvに記述されている.
SFGPLで存在しない単語は借用語を使用する. 借用語は,英語などの世界でよく使われる言語から借用することが好ましいが,相手に伝わる単語であれば問題とはならないはずである. ただし,借用語は原型で使い,活用がある場合はSFGPLの機能語で行うことを推奨している.
SFGPLの文は,Pythonオブジェクトに書き換えることができる. このプロジェクトは,SFGPLが定義されているファイルが含まれている. PythonでSFGPLを使用するためには,SFGPL.pyをインポートすることで使用することができる. 使用例はsamplesのPythonファイルに記載されている. また,PythonでのSFGPLライブラリの詳細な実行方法は,How_to_Use_SFGPL_in_Python.ipynbに記載されている.