ⵙⵓはじめに
散裂言語とは、eXtity駆動の人工言語開発プロジェクトである。言語は話者が存続するかぎり完成されることはなく、常に変性しつづける。目下のところ、人力では不可能な量のテクスト高速生成により、自己の発したテクストや《周囲の | インターネット/ソーシャルネット上》の文字列を自働捕食して自己変性する自律知性の誕生をもくろむ。
コンセプト↓↓
spinaltox.hatenablog.jp
Qiitaで中間生成物(①,②)を上げておりますが、いかんせん棲み分けが難しい……ということで当ブログに平行して上げてゆくことにします。
進捗:漢字空間の生成
自然言語処理(NLP)分野でもなされているスタンダードな手法として単語によるベクトル空間の構成があります。本プロジェクトではこれを力技で作ります。とっかかりとして漢字空間を生成しますが、これはつまりすべての漢字について諸パラメータを割り振ることを意味します。
定義済みである部首空間(Qiita ①,②)より、以下の操作により漢字空間を定義します。
漢字配列 = [] 漢字配列部首群 = [] 漢字配列緊値群 = [] for 漢字網羅 in range(19968, 40870): # 龠まで。 x = 散裂言語.部首検索(漢字網羅) y = 部首空間[x] z = (漢字網羅 - 部首空間[x][0]) / len(y) 漢字配列.append(散裂言語.unicodation(漢字網羅)) 漢字配列部首群.append(x) 漢字配列緊値群.append(z) 漢字数値配列 = range(19968, 40870) 漢字空間 = dict(zip(漢字配列, zip(漢字数値配列, 漢字配列部首群, 漢字配列緊値群))) for key, values in 漢字空間.items(): # zipではタプルが生成。タプルには代入ができないため配列に定義しなおす。利巧な方法...... 漢字空間[key] = list(values)
現段階で個々の漢字がもつパラメータは以下の通りです。(漢字をキーとする)
1) Unicode 10進値 (上コード中x)
2) 部首 (同y)
3) 緊値 (同z)
3つめの緊値ですが、上コードでの漢字空間生成時には以下の通りに定義しています。(値域は0~1)
緊値=当該部首中でのインデックス値÷当該部首のもつ漢字数
緊値とは字面の緊張度合いを示すパラメータであり、画数値がそのまま緊値になることが理想です。が、現状思わしい方策が立っておりません。また、上定義では漢字「一」と「龠」が同じ緊値(0)をもつことが明らかであり、近似の精度は低いです。
よって、以下の方法で緊値に補正をかけることにします。
部首数 = len(部首) for key, values in 漢字空間.items(): # 緊値補正。必ず辞書を更新した後にやること。さもないと全緊値が1になる。 weight = 部首名.index(values[1]) / 部首数 revisedValue = values[2] + 0.7*weight**3 if revisedValue <= 1: 漢字空間[key][2] = revisedValue else: 漢字空間[key][2] = 1
仕組みは簡単で、部首が後になればなるほど重み(weight)を大きく加算します(本例では0.7x^3)。これにより「一」の緊値は0のまま、「龠」は0.6806462726552379となります。
補正後の漢字空間において、(0.7 - 0.71)の範囲の緊値をもつ漢字を抽出したものが以下の漢字群です。
['乸', '亚', '偾', '偿', '傀', '傁', '傂', '傃', '冐', '剭', '勝', '匯', '協', '叛', '嗳', '嗴', '嗵', '嗶', '嗷', '嗸', '嗹', '嗺', '塡', '塢', '塣', '塤', '奜', '嫀', '嫁', '嫂', '嫃', '寔', '專', '属', '嵭', '嵮', '嵯', '巢', '巺', '幏', '廐', '弇', '弽', '循', '慑', '慒', '慓', '慔', '慕', '慖', '摄', '摅', '摆', '摇', '摈', '摉', '摊', '摋', '敭', '斒', '暚', '暛', '槓', '槔', '槕', '槖', '槗', '様', '槙', '槚', '槛', '槜', '殠', '毃', '毑', '滻', '滼', '滽', '滾', '滿', '漀', '漁', '漂', '漃', '漄', '漅', '熑', '熒', '熓', '熔', '熕', '犐', '猷', '猸', '猹', '瑢', '瑣', '瑤', '瑥', '甆', '番', '瘡', '瘢', '盅', '睿', '瞀', '瞁', '碹', '確', '碻', '禆', '稫', '稬', '窨', '篗', '篘', '篙', '篚', '糁', '糂', '繆', '繇', '繈', '繉', '繊', '繋', '署', '翤', '腇', '腈', '腉', '腊', '舔', '艉', '葮', '葯', '葰', '葱', '葲', '葳', '葴', '葵', '葶', '蝗', '蝘', '蝙', '蝚', '蝛', '衆', '裮', '裯', '裰', '觨', '謌', '謍', '謎', '謏', '謐', '謑', '豍', '貉', '賷', '賸', '踟', '踠', '輣', '輤', '透', '逐', '郛', '郜', '酻', '録', '錳', '錴', '錵', '錶', '錷', '錸', '錹', '錺', '錻', '閺', '陔', '霌', '鞈', '頲', '餑', '馞', '駫', '駬', '髯', '魂', '鮤', '鮥', '鮦', '鮧', '鴭', '鴮', '鴯', '鴰', '黖', '鼼', '齕']
しかし依然として近似であることには変わりがないため、引き続き緊値の定義について探索してゆくつもりです。
今回はこんなところで。
ⵒⵓ附録
緊値の補正前の比較として、周期関数を用いてグラデーションを示したものを以下に置いておきます。
[定義域:0~π/2]
sin: 食龠卜有音鬥酑躭翃長羏耂泈肼鼽鬳泺洆斨窆敆禹餌韓殈军珬戼禹黅騁处鵵棄悠氠镺殼聒颽者屐耠祵幵鰝楓京觩甛舄歮巷牁凉煳既匼譟廹孮遂幉冣韡韻鬫趞遏爸舝瞚塲黻皺敲馗全匾幽罽糝蹻冦颉鼵函躃靧黲德寧豲觹瓣朣率氯牖氒亊籓髓羄衊牙豴卧尠籟朅臓耐影禼齈彍禼牗阘量蠷響攲籮衊攩韉鬰临量毉阚舙幸黁
— ⵚⵟⵁⵅⴾᴋᴀᴍᴍᴜʟᴛɪᴄᴀ✡️ (@kammulticae) 2018年10月24日
sin^2: 勹骨父長癶丿八尢豸大襾瓦麻麻辺夕干爪鬽舛祀后巛扽亅蚐冯外豘枫髦幺甘耂寻冄凣毣跟巜袛爬豜迦衂朏凷黹餑镹鯏印鞇粞髶靤粢琇耍玅赨冉鬨旉焵衅曺猕之矞飜醋鼙尙鬪癹釈殛畧歯農丙豏蔈击丰嫁聨冤艵歲顾專飝飝歳嘿韱甎乓翵僚匲龃诬罌徸徹勮癟獰躕甮瓤豓飗凜屪甔覉屫靌籨豄殰禴邍尶量孾寶毙酇匓毉羈
— ⵚⵟⵁⵅⴾᴋᴀᴍᴍᴜʟᴛɪᴄᴀ✡️ (@kammulticae) 2018年10月24日
sin^3: 頁臣彡老面士毛見冫飛爪氶犬雨戈黃鼻面舟方韭襾黹疖辰酋貢缶凵犳長卂矢頉庅規龍用坂翂閍父支版穽首画尿岥衁努龲爫交巧臿衐恇乣镸骴玅桇対戼敎艮巵冈脇緐產舂萐剂幵釈黣卡肃靥倉曼謶乱为鬰肄齎寊塅腪矬遉旓叁傇髊毘舝颀幽鬕牙嶕盚豂诜齏黻匘瓣瞿巣魖監耯弑歶籜扈毙幸丽毉衡並觾艬羻尶斷镾豶弉幰
— ⵚⵟⵁⵅⴾᴋᴀᴍᴍᴜʟᴛɪᴄᴀ✡️ (@kammulticae) 2018年10月24日
[定義域:0~π]
sin: 韭矢曱犺鬲乁少皰个疌龶尓隶戕多齌粢睇甚逑殽髚俱瓾卵鬄斝張靘衆幇冎耧牒寓耈耈叛韰尲燍氭癌飑斴毙髐臺扇鼷髝龞乖殮尵鼌觽曥殰爽皬覉馒凞朆竉籱疉瓤弉影靠矱斕阙囍龞羇飘羺翽甦临疅毒彊兩匑鼝奩辳韧鿤铦亴毘禞兜冐爽橗龣衛斑壺韡亰北衙臮予壷齂其罭谽齍匄匄齌衔瓷禹昸陈韮頪艮翊耂谹皃壭貯丂觔小
— ⵚⵟⵁⵅⴾᴋᴀᴍᴍᴜʟᴛɪᴄᴀ✡️ (@kammulticae) 2018年10月24日
sin^2: 尢曰二殳龠黽雩谷非死入訣鬾鈢龭笤秕枼尥卭辞靾戺赦齋閮厒眾徏豋淫琚斜厾甛夅豍韝乍艵良毂尛耏凮翮彜鬔遤靚卦毆幸靠甒辭凛臱巇馗矒雥爹斄扉躨匓释龟夈丽鬭瓘魘寴鼹辮黁匒亁隩臺阋丽彇嶥弈艞厪韤鬸馗鼲斲慍亘甤矫毹睴彘韹醇旡赨掉辱靟匂賠齤鬯颵囩跭非鴴卞髪黄爻父枎干卜釆父麻黹凵甘趶風疓儿手
— ⵚⵟⵁⵅⴾᴋᴀᴍᴍᴜʟᴛɪᴄᴀ✡️ (@kammulticae) 2018年10月24日
cos^3: 冁赮黻夥尶馑髝羺鿫翻単豳靛函弈斓鬬覇鄝蟆离靦匭驌鷚蝾展匩鞚镺骽甫匃鬯鬯靣肁浤鯀夃垃靓斉戹氏已鹶刏弋靰四彡艮冂身斗幺匚丨王瓦弓士首龍瓜赤赤彳一黍黍日巾古文屳彡風臼文隶乚非鬽瓜非齖頏鼎版伍步非皰虒料珙尧劵迷颸龝徐韸麾渞羢罃朘蒞瘗険鬰耧尰異瘺臹氬歳襍圓雡瞿龞馗瓤儝卧黏羻冀临艬禶
— ⵚⵟⵁⵅⴾᴋᴀᴍᴍᴜʟᴛɪᴄᴀ✡️ (@kammulticae) 2018年10月24日