HeritageNoMetairo 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +35 -0
- data/Rakefile +4 -0
- data/lib/HeritageNoMetairo/version.rb +5 -0
- data/lib/HeritageNoMetairo.rb +590 -0
- data/sig/HeritageNoMetairo.rbs +4 -0
- metadata +91 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 6fb12158a200e917a5d99035bdf31235e76aa340eafea2572ad6915bc870c8fe
|
|
4
|
+
data.tar.gz: 1cd137aa574507ddeb9d96065f4ad6827dd981b26f2310b6a46c92ee755b4d3e
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 2c98559324bff2be73a5bfe180e6d0128e53074510b25f451082e7acf705fee4be5c86745797a972b2d37002647c8431d5cc1fe8f15a212cbd0cd8dba6aed799
|
|
7
|
+
data.tar.gz: 61b08b5875436b87596aa8898dbf2102ae724bd5221600ab41a487a446119aab09b44563627fa9f7926fd3e1894afeebbadc455c2370622d5a5de49d45ec6911
|
data/README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# HeritageNoMetairo
|
|
2
|
+
|
|
3
|
+
TODO: Delete this and the text below, and describe your gem
|
|
4
|
+
|
|
5
|
+
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/HeritageNoMetairo`. To experiment with that code, run `bin/console` for an interactive prompt.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org.
|
|
10
|
+
|
|
11
|
+
Install the gem and add to the application's Gemfile by executing:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
bundle add UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
If bundler is not being used to manage dependencies, install the gem by executing:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
gem install UPDATE_WITH_YOUR_GEM_NAME_IMMEDIATELY_AFTER_RELEASE_TO_RUBYGEMS_ORG
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
TODO: Write usage instructions here
|
|
26
|
+
|
|
27
|
+
## Development
|
|
28
|
+
|
|
29
|
+
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
30
|
+
|
|
31
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
32
|
+
|
|
33
|
+
## Contributing
|
|
34
|
+
|
|
35
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/HeritageNoMetairo.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "HeritageNoMetairo/version"
|
|
4
|
+
|
|
5
|
+
module HeritageNoMetairo
|
|
6
|
+
class Error < StandardError; end # HeritageNoMetairo
|
|
7
|
+
|
|
8
|
+
class Analyze
|
|
9
|
+
###############################################################################################
|
|
10
|
+
# Colors In Context #
|
|
11
|
+
###############################################################################################
|
|
12
|
+
# This enables the framework to generate new contexts for when a color might be referenced or #
|
|
13
|
+
# said in conversation, such as discovering an untranslated phrase about a color in an #
|
|
14
|
+
# ancient language. #
|
|
15
|
+
###############################################################################################
|
|
16
|
+
def self.colors_in_context
|
|
17
|
+
## Choosing an random Word Class
|
|
18
|
+
word_classes = [
|
|
19
|
+
[["Le", "Le"], ["Le", "La"], ["Le", "Les"]],
|
|
20
|
+
[["La", "Le"], ["La", "La"], ["La", "Les"]],
|
|
21
|
+
[["Les", "Le"], ["Les", "La"], ["Les", "Les"]],
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
row_options = [0, 1, 2]
|
|
25
|
+
col_options = [0, 1, 2]
|
|
26
|
+
arr_options = [0, 1]
|
|
27
|
+
|
|
28
|
+
cur_row = row_options.sample
|
|
29
|
+
cur_col = col_options.sample
|
|
30
|
+
cur_arr = arr_options.sample
|
|
31
|
+
|
|
32
|
+
chosen_word_class = word_classes[cur_row][cur_col][cur_arr]
|
|
33
|
+
|
|
34
|
+
## Choosing a random noun
|
|
35
|
+
nouns = [
|
|
36
|
+
[["chien", "chien"], ["chien", "chatte"], ["chien", "furet"]],
|
|
37
|
+
[["chatte", "chien"], ["chatte", "chatte"], ["chatte", "furet"]],
|
|
38
|
+
[["furet", "chien"], ["furet", "chatte"], ["furet", "furet"]],
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
row_options = [0, 1, 2]
|
|
42
|
+
col_options = [0, 1, 2]
|
|
43
|
+
arr_options = [0, 1]
|
|
44
|
+
|
|
45
|
+
cur_row = row_options.sample
|
|
46
|
+
cur_col = col_options.sample
|
|
47
|
+
cur_arr = arr_options.sample
|
|
48
|
+
|
|
49
|
+
chosen_noun = nouns[cur_row][cur_col][cur_arr]
|
|
50
|
+
|
|
51
|
+
## Choosing a random adjectives
|
|
52
|
+
r = "rouge"
|
|
53
|
+
o = "orange"
|
|
54
|
+
y = "jaune"
|
|
55
|
+
g = "vert"
|
|
56
|
+
b = "bleu"
|
|
57
|
+
p = "violet"
|
|
58
|
+
|
|
59
|
+
adjectives = [
|
|
60
|
+
[[r, r], [r, o], [r, y], [r, g], [r, b], [r, p]],
|
|
61
|
+
[[o, r], [o, o], [o, y], [o, g], [o, b], [o, p]],
|
|
62
|
+
[[y, r], [y, o], [y, y], [y, g], [y, b], [y, p]],
|
|
63
|
+
[[g, r], [g, o], [g, y], [g, g], [g, b], [g, p]],
|
|
64
|
+
[[b, r], [b, o], [b, y], [b, g], [b, b], [b, p]],
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
row_options = [0, 1, 2, 3, 4]
|
|
68
|
+
col_options = [0, 1, 2, 3, 4]
|
|
69
|
+
arr_options = [0, 1]
|
|
70
|
+
|
|
71
|
+
cur_row = row_options.sample
|
|
72
|
+
cur_col = col_options.sample
|
|
73
|
+
cur_arr = arr_options.sample
|
|
74
|
+
|
|
75
|
+
chosen_adjective = adjectives[cur_row][cur_col][cur_arr]
|
|
76
|
+
|
|
77
|
+
## Choosing a random subject
|
|
78
|
+
j = "Je"
|
|
79
|
+
t = "Tu"
|
|
80
|
+
v = "Vous"
|
|
81
|
+
n1 = "Nous"
|
|
82
|
+
i1 = "Il"
|
|
83
|
+
i2 = "Ils"
|
|
84
|
+
e1 = "Elle"
|
|
85
|
+
e2 = "Elles"
|
|
86
|
+
n2 = "Nousil"
|
|
87
|
+
n3 = "Nousils"
|
|
88
|
+
n4 = "Nouselle"
|
|
89
|
+
n5 = "Nouselles"
|
|
90
|
+
n6 = "Noustu"
|
|
91
|
+
|
|
92
|
+
subjects = [
|
|
93
|
+
[[j, j], [j, t], [j, v], [j, n1], [j, i1], [j, i2], [j, e1], [j, e2], [j, n2], [j, n3], [j, n4], [j, n5], [j, n6]],
|
|
94
|
+
[[t, j], [t, t], [t, v], [t, n1], [t, i1], [t, i2], [t, e1], [t, e2], [t, n2], [t, n3], [t, n4], [t, n5], [t, n6]],
|
|
95
|
+
[[v, j], [v, t], [v, v], [v, n1], [v, i1], [v, i2], [v, e1], [v, e2], [v, n2], [v, n3], [v, n4], [v, n5], [v, n6]],
|
|
96
|
+
[[n1, j], [n1, t], [n1, v], [n1, n1], [n1, i1], [n1, i2], [n1, e1], [n1, e2], [n1, n2], [n1, n3], [n1, n4], [n1, n5], [n1, n6]],
|
|
97
|
+
[[i1, j], [i1, t], [i1, v], [i1, n1], [i1, i1], [i1, i2], [i1, e1], [i1, e2], [i1, n2], [i1, n3], [i1, n4], [i1, n5], [i1, n6]],
|
|
98
|
+
[[i2, j], [i2, t], [i2, v], [i2, n1], [i2, i1], [i2, i2], [i2, e1], [i2, e2], [i2, n2], [i2, n3], [i2, n4], [i2, n5], [i2, n6]],
|
|
99
|
+
[[e1, j], [e1, t], [e1, v], [e1, n1], [e1, e1], [e1, e2], [e1, e1], [e1, e2], [e1, n2], [e1, n3], [e1, n4], [e1, n5], [e1, n6]],
|
|
100
|
+
[[e2, j], [e2, t], [e2, v], [e2, n1], [e2, e1], [e2, e2], [e2, e1], [e2, e2], [e2, n2], [e2, n3], [e2, n4], [e2, n5], [e2, n6]],
|
|
101
|
+
[[n1, j], [n1, t], [n1, v], [n1, n1], [n1, i1], [n1, i2], [n1, e1], [n1, e2], [n1, n2], [n1, n3], [n1, n4], [n1, n5], [n1, n6]],
|
|
102
|
+
[[n2, j], [n2, t], [n2, v], [n2, n1], [n2, i1], [n2, i2], [n2, e1], [n2, e2], [n2, n2], [n2, n3], [n2, n4], [n2, n5], [n2, n6]],
|
|
103
|
+
[[n3, j], [n3, t], [n3, v], [n3, n1], [n3, i1], [n3, i2], [n3, e1], [n3, e2], [n3, n2], [n3, n3], [n3, n4], [n3, n5], [n3, n6]],
|
|
104
|
+
[[n4, j], [n4, t], [n4, v], [n4, n1], [n4, i1], [n4, i2], [n4, e1], [n4, e2], [n4, n2], [n4, n3], [n4, n4], [n4, n5], [n4, n6]],
|
|
105
|
+
[[n5, j], [n5, t], [n5, v], [n5, n1], [n5, i1], [n5, i2], [n5, e1], [n5, e2], [n5, n2], [n5, n3], [n5, n5], [n5, n5], [n5, n6]],
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
row_options = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
|
109
|
+
col_options = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
|
110
|
+
arr_options = [0, 1]
|
|
111
|
+
|
|
112
|
+
cur_row = row_options.sample
|
|
113
|
+
cur_col = col_options.sample
|
|
114
|
+
cur_arr = arr_options.sample
|
|
115
|
+
|
|
116
|
+
chosen_subject = subjects[cur_row][cur_col][cur_arr]
|
|
117
|
+
|
|
118
|
+
## Choosing a random verb
|
|
119
|
+
p = "petto"
|
|
120
|
+
f = "fido"
|
|
121
|
+
w = "warutzu"
|
|
122
|
+
|
|
123
|
+
verbs = [
|
|
124
|
+
[[p, p], [p, f], [p, w]],
|
|
125
|
+
[[f, p], [f, f], [f, w]],
|
|
126
|
+
[[w, p], [w, f], [w, w]],
|
|
127
|
+
]
|
|
128
|
+
|
|
129
|
+
row_options = [0, 1, 2]
|
|
130
|
+
col_options = [0, 1, 2]
|
|
131
|
+
arr_options = [0, 1]
|
|
132
|
+
|
|
133
|
+
cur_row = row_options.sample
|
|
134
|
+
cur_col = col_options.sample
|
|
135
|
+
cur_arr = arr_options.sample
|
|
136
|
+
|
|
137
|
+
chosen_verb = verbs[cur_row][cur_col][cur_arr]
|
|
138
|
+
|
|
139
|
+
## Choosing a random adverb
|
|
140
|
+
q = "quicely"
|
|
141
|
+
s = "lentement"
|
|
142
|
+
|
|
143
|
+
adverbs = [
|
|
144
|
+
[[q, q], [q, s]],
|
|
145
|
+
[[s, q], [s, s]],
|
|
146
|
+
]
|
|
147
|
+
|
|
148
|
+
row_options = [0, 1]
|
|
149
|
+
col_options = [0, 1]
|
|
150
|
+
arr_options = [0, 1]
|
|
151
|
+
|
|
152
|
+
cur_row = row_options.sample
|
|
153
|
+
cur_col = col_options.sample
|
|
154
|
+
cur_arr = arr_options.sample
|
|
155
|
+
|
|
156
|
+
chosen_adverb = adverbs[cur_row][cur_col][cur_arr]
|
|
157
|
+
|
|
158
|
+
created_phrase = "#{chosen_word_class} #{chosen_noun} #{chosen_adjective} #{chosen_subject} #{chosen_verb} #{chosen_adverb}."
|
|
159
|
+
|
|
160
|
+
print "#{created_phrase} : "
|
|
161
|
+
|
|
162
|
+
File.open("data/colors/new_colors.txt", "a") { |f|
|
|
163
|
+
f.puts created_phrase
|
|
164
|
+
}
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
###############################################################################################
|
|
168
|
+
# Assign Color Data #
|
|
169
|
+
###############################################################################################
|
|
170
|
+
# This allows the system to assign identifiers, English names, hex codes, and invented lang #
|
|
171
|
+
# names for colors into a format the naive bayes and decision tree algorithm for recommending #
|
|
172
|
+
# new information can use. #
|
|
173
|
+
###############################################################################################
|
|
174
|
+
def self.color_data
|
|
175
|
+
color_ph = [
|
|
176
|
+
[:PH4DR1, "Salmon", "#FC746B", "Samon"], # 0
|
|
177
|
+
[:PH4DR2, "Copper", "#D27D48", "Cuivre"], # 1
|
|
178
|
+
[:PH4DR3, "Salmon Pink", "#F26E6E", "Samonrose"], # 2
|
|
179
|
+
[:PH5DR1, "Pale Salmon", "#EEA38F", "Samonblanc"], # 3
|
|
180
|
+
[:PH5DR2, "Khaki", "#B9B369", "Khaki"], # 4
|
|
181
|
+
[:PH5DR3, "Light Mauve", "#C7A2B1", "Mauveraito"], # 5
|
|
182
|
+
[:PH6DR1, "Maize", "#F9CF55", "Meizu"], # 6
|
|
183
|
+
[:PH6DR2, "Pale Lime", "#B1F468", "Remonblanc"], # 7
|
|
184
|
+
[:PH6DR3, "Bland", "#CBC4AA", "Burando"], # 8
|
|
185
|
+
[:PH7DR1, "Vibrant Green", "#0AD322", "Gurinvieil"], # 9
|
|
186
|
+
[:PH7DR2, "Medium Green", "#50CE6C", "Chadeuxgris"], # 10
|
|
187
|
+
[:PH7DR3, "Grey Blue", "#84A9CA", "Burugris"], # 11
|
|
188
|
+
[:PH8DR1, "Japanese Bistre", "#65482C", "Nihongobistre"], # 12
|
|
189
|
+
[:PH8DR2, "Kelly Green", "#0DA52B", "Kerivert"], # 13
|
|
190
|
+
[:PH8DR2, "Sapphire 1", "#0D36A3", "Saphirune"], # 14
|
|
191
|
+
[:PH9DR1, "Dull Purple", "#7D567A", "Gris De Violet"], # 15
|
|
192
|
+
[:PH9DR2, "Viridian", "#0B916B", "Viridian"], # 16
|
|
193
|
+
[:PH9DR3, "Sapphire 2", "#0A47B8", "Saphirdeux"], # 17
|
|
194
|
+
]
|
|
195
|
+
|
|
196
|
+
## Salmon
|
|
197
|
+
@salmon_ident = color_ph[0][0]
|
|
198
|
+
@salmon_name = color_ph[0][1]
|
|
199
|
+
@salmon_hex = color_ph[0][2]
|
|
200
|
+
@salmon_invent = color_ph[0][3]
|
|
201
|
+
|
|
202
|
+
## Copper
|
|
203
|
+
@copper_ident = color_ph[1][0]
|
|
204
|
+
@copper_name = color_ph[1][1]
|
|
205
|
+
@copper_hex = color_ph[1][2]
|
|
206
|
+
@copper_invent = color_ph[1][3]
|
|
207
|
+
|
|
208
|
+
## Salmon Pink
|
|
209
|
+
@salmonpink_ident = color_ph[2][0]
|
|
210
|
+
@salmonpink_name = color_ph[2][1]
|
|
211
|
+
@salmonink_hex = color_ph[2][2]
|
|
212
|
+
@salmonink_invent = color_ph[2][4]
|
|
213
|
+
|
|
214
|
+
## Pale Salmon
|
|
215
|
+
@salmonpale_ident = color_ph[3][0]
|
|
216
|
+
@salmonpale_name = color_ph[3][1]
|
|
217
|
+
@salmonpale_hex = color_ph[3][2]
|
|
218
|
+
@salmonpale_invent = color_ph[3][3]
|
|
219
|
+
|
|
220
|
+
## Maize
|
|
221
|
+
@maize_ident = color_ph[4][0]
|
|
222
|
+
@maize_name = color_ph[4][1]
|
|
223
|
+
@maize_hex = color_ph[4][2]
|
|
224
|
+
@maize_invent = color_ph[4][3]
|
|
225
|
+
|
|
226
|
+
## Pale Lime
|
|
227
|
+
@plime_ident = color_ph[5][0]
|
|
228
|
+
@plime_name = color_ph[5][1]
|
|
229
|
+
@plime_hex = color_ph[5][2]
|
|
230
|
+
@plime_invent = color_ph[5][3]
|
|
231
|
+
|
|
232
|
+
## Khaki
|
|
233
|
+
@khaki_ident = color_ph[6][0]
|
|
234
|
+
@khaki_name = color_ph[6][1]
|
|
235
|
+
@khaki_hex = color_ph[6][2]
|
|
236
|
+
@khaki_invent = color_ph[6][4]
|
|
237
|
+
|
|
238
|
+
## Light Mauve
|
|
239
|
+
@lmauve_ident = color_ph[7][0]
|
|
240
|
+
@lmauve_name = color_ph[7][1]
|
|
241
|
+
@lmauve_hex = color_ph[7][2]
|
|
242
|
+
@lmauve_invent = color_ph[7][4]
|
|
243
|
+
|
|
244
|
+
## Bland
|
|
245
|
+
@bland_ident = color_ph[8][0]
|
|
246
|
+
@bland_name = color_ph[8][1]
|
|
247
|
+
@bland_hex = color_ph[8][2]
|
|
248
|
+
@bland_invent = color_ph[8][4]
|
|
249
|
+
|
|
250
|
+
## Vibrant Green
|
|
251
|
+
@vgreen_ident = color_ph[9][0]
|
|
252
|
+
@vgreen_name = color_ph[9][1]
|
|
253
|
+
@vgreen_hex = color_ph[9][2]
|
|
254
|
+
@vgreen_invent = color_ph[9][4]
|
|
255
|
+
|
|
256
|
+
## Medium Green
|
|
257
|
+
@mgreen_ident = color_ph[10][0]
|
|
258
|
+
@mgreen_name = color_ph[10][1]
|
|
259
|
+
@mgreen_hex = color_ph[10][2]
|
|
260
|
+
@mgreen_invent = color_ph[10][4]
|
|
261
|
+
|
|
262
|
+
## Grey Blue
|
|
263
|
+
@gblue_ident = color_ph[11][0]
|
|
264
|
+
@gblue_name = color_ph[11][1]
|
|
265
|
+
@gblue_hex = color_ph[11][2]
|
|
266
|
+
@gblue_invent = color_ph[11][4]
|
|
267
|
+
|
|
268
|
+
## Japanese Bistre
|
|
269
|
+
@jbistre_ident = color_ph[12][0]
|
|
270
|
+
@jbistre_name = color_ph[12][1]
|
|
271
|
+
@jbistre_hex = color_ph[12][2]
|
|
272
|
+
@jbistre_invent = color_ph[12][4]
|
|
273
|
+
|
|
274
|
+
## Kelly Green
|
|
275
|
+
@kgreen_ident = color_ph[13][0]
|
|
276
|
+
@kgreen_name = color_ph[13][1]
|
|
277
|
+
@kgreen_hex = color_ph[13][2]
|
|
278
|
+
@kgreen_invent = color_ph[13][4]
|
|
279
|
+
|
|
280
|
+
## Sapphire 1
|
|
281
|
+
@saph1_ident = color_ph[14][0]
|
|
282
|
+
@saph1_name = color_ph[14][1]
|
|
283
|
+
@saph1_hex = color_ph[14][2]
|
|
284
|
+
@saph1_invent = color_ph[14][4]
|
|
285
|
+
|
|
286
|
+
## Dull Purple
|
|
287
|
+
@dpurp_ident = color_ph[15][0]
|
|
288
|
+
@dpurp_name = color_ph[15][1]
|
|
289
|
+
@dpurp_hex = color_ph[15][2]
|
|
290
|
+
@dpurp_invent = color_ph[15][4]
|
|
291
|
+
|
|
292
|
+
## Viridian
|
|
293
|
+
@viri_ident = color_ph[16][0]
|
|
294
|
+
@viri_name = color_ph[16][1]
|
|
295
|
+
@viri_hex = color_ph[16][2]
|
|
296
|
+
@viri_invent = color_ph[16][4]
|
|
297
|
+
|
|
298
|
+
## Sapphire 2
|
|
299
|
+
@saph2_ident = color_ph[17][0]
|
|
300
|
+
@saph2_name = color_ph[17][1]
|
|
301
|
+
@saph2_hex = color_ph[17][2]
|
|
302
|
+
@saph2_invent = color_ph[17][4]
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
###############################################################################################
|
|
306
|
+
# Predict Colors #
|
|
307
|
+
###############################################################################################
|
|
308
|
+
# Predict new color probabilities based on the assigned information provided, and convert #
|
|
309
|
+
# that into a probability that the decision tree can use. #
|
|
310
|
+
###############################################################################################
|
|
311
|
+
def self.predict_colors
|
|
312
|
+
require "naive_bayes"
|
|
313
|
+
|
|
314
|
+
color_science = NaiveBayes.new(:identifier, :name, :hex_code, :invented_language_name, :cryptographic_hash)
|
|
315
|
+
|
|
316
|
+
## Identifiers
|
|
317
|
+
color_science.train(:identifier, @salmon_ident, "Salmon")
|
|
318
|
+
color_science.train(:identifier, @copper_ident, "Copper")
|
|
319
|
+
color_science.train(:identifier, @salmonpink_ident, "Salmon Pink")
|
|
320
|
+
color_science.train(:identifier, @salmonpale_ident, "Salmon Pale")
|
|
321
|
+
color_science.train(:identifier, @maize_ident, "Maize")
|
|
322
|
+
color_science.train(:identifier, @plime_ident, "Pale Lime")
|
|
323
|
+
color_science.train(:identifier, @khaki_ident, "Khaki")
|
|
324
|
+
color_science.train(:identifier, @lmauve_ident, "Light Mauve")
|
|
325
|
+
color_science.train(:identifier, @bland_ident, "Bland")
|
|
326
|
+
color_science.train(:identifier, @vgreen_ident, "Vibrant Green")
|
|
327
|
+
color_science.train(:identifier, @gblue_ident, "Grey Blue")
|
|
328
|
+
color_science.train(:identifier, @jbistre_ident, "Japanese Bistre")
|
|
329
|
+
color_science.train(:identifier, @kgreen_ident, "Kelly Green")
|
|
330
|
+
color_science.train(:identifier, @saph1_ident, "Sapphire 1")
|
|
331
|
+
color_science.train(:identifier, @dpurp_ident, "Dull Purple")
|
|
332
|
+
color_science.train(:identifier, @viri_ident, "Dull Purple")
|
|
333
|
+
color_science.train(:identifier, @saph2_ident, "Sapphire 2")
|
|
334
|
+
|
|
335
|
+
## Name
|
|
336
|
+
color_science.train(:name, @salmon_name, "Salmon")
|
|
337
|
+
color_science.train(:name, @copper_name, "Copper")
|
|
338
|
+
color_science.train(:name, @salmonpink_name, "Salmon Pink")
|
|
339
|
+
color_science.train(:name, @salmonpale_name, "Salmon Pale")
|
|
340
|
+
color_science.train(:name, @maize_name, "Maize")
|
|
341
|
+
color_science.train(:name, @plime_name, "Pale Lime")
|
|
342
|
+
color_science.train(:name, @khaki_name, "Khaki")
|
|
343
|
+
color_science.train(:name, @lmauve_name, "Light Mauve")
|
|
344
|
+
color_science.train(:name, @bland_name, "Bland")
|
|
345
|
+
color_science.train(:name, @vgreen_name, "Vibrant Green")
|
|
346
|
+
color_science.train(:name, @gblue_name, "Grey Blue")
|
|
347
|
+
color_science.train(:name, @jbistre_name, "Japanese Bistre")
|
|
348
|
+
color_science.train(:name, @kgreen_name, "Kelly Green")
|
|
349
|
+
color_science.train(:name, @saph1_name, "Sapphire 1")
|
|
350
|
+
color_science.train(:name, @dpurp_name, "Dull Purple")
|
|
351
|
+
color_science.train(:name, @viri_name, "Dull Purple")
|
|
352
|
+
color_science.train(:name, @saph2_name, "Sapphire 2")
|
|
353
|
+
|
|
354
|
+
## Hex Code
|
|
355
|
+
color_science.train(:hex_code, @salmon_hex, "Salmon")
|
|
356
|
+
color_science.train(:hex_code, @copper_hex, "Copper")
|
|
357
|
+
color_science.train(:hex_code, @salmonpink_hex, "Salmon Pink")
|
|
358
|
+
color_science.train(:hex_code, @salmonpale_hex, "Salmon Pale")
|
|
359
|
+
color_science.train(:hex_code, @maize_hex, "Maize")
|
|
360
|
+
color_science.train(:hex_code, @plime_hex, "Pale Lime")
|
|
361
|
+
color_science.train(:hex_code, @khaki_hex, "Khaki")
|
|
362
|
+
color_science.train(:hex_code, @lmauve_hex, "Light Mauve")
|
|
363
|
+
color_science.train(:hex_code, @bland_hex, "Bland")
|
|
364
|
+
color_science.train(:hex_code, @vgreen_hex, "Vibrant Green")
|
|
365
|
+
color_science.train(:hex_code, @gblue_hex, "Grey Blue")
|
|
366
|
+
color_science.train(:hex_code, @jbistre_hex, "Japanese Bistre")
|
|
367
|
+
color_science.train(:hex_code, @kgreen_hex, "Kelly Green")
|
|
368
|
+
color_science.train(:hex_code, @saph1_hex, "Sapphire 1")
|
|
369
|
+
color_science.train(:hex_code, @dpurp_hex, "Dull Purple")
|
|
370
|
+
color_science.train(:hex_code, @viri_hex, "Dull Purple")
|
|
371
|
+
color_science.train(:hex_code, @saph2_hex, "Sapphire 2")
|
|
372
|
+
|
|
373
|
+
## invent Code
|
|
374
|
+
color_science.train(:invented_language_name, @salmon_invent, "Salmon")
|
|
375
|
+
color_science.train(:invented_language_name, @copper_invent, "Copper")
|
|
376
|
+
color_science.train(:invented_language_name, @salmonpink_invent, "Salmon Pink")
|
|
377
|
+
color_science.train(:invented_language_name, @salmonpale_invent, "Salmon Pale")
|
|
378
|
+
color_science.train(:invented_language_name, @maize_invent, "Maize")
|
|
379
|
+
color_science.train(:invented_language_name, @plime_invent, "Pale Lime")
|
|
380
|
+
color_science.train(:invented_language_name, @khaki_invent, "Khaki")
|
|
381
|
+
color_science.train(:invented_language_name, @lmauve_invent, "Light Mauve")
|
|
382
|
+
color_science.train(:invented_language_name, @bland_invent, "Bland")
|
|
383
|
+
color_science.train(:invented_language_name, @vgreen_invent, "Vibrant Green")
|
|
384
|
+
color_science.train(:invented_language_name, @gblue_invent, "Grey Blue")
|
|
385
|
+
color_science.train(:invented_language_name, @jbistre_invent, "Japanese Bistre")
|
|
386
|
+
color_science.train(:invented_language_name, @kgreen_invent, "Kelly Green")
|
|
387
|
+
color_science.train(:invented_language_name, @saph1_invent, "Sapphire 1")
|
|
388
|
+
color_science.train(:invented_language_name, @dpurp_invent, "Dull Purple")
|
|
389
|
+
color_science.train(:invented_language_name, @viri_invent, "Dull Purple")
|
|
390
|
+
color_science.train(:invented_language_name, @saph2_invent, "Sapphire 2")
|
|
391
|
+
|
|
392
|
+
## Recognize Unusual Hashes
|
|
393
|
+
color_science.train(:cryptographic_hash, '18b07b3750e769ac646902d4ab9b8da4', "cryptographic hash")
|
|
394
|
+
color_science.train(:cryptographic_hash, '37c854f0133347f815ea4a694f2d04bd', "cryptographic hash")
|
|
395
|
+
color_science.train(:cryptographic_hash, '40b089a385a3862b118fd38a743e967c', "cryptographic hash")
|
|
396
|
+
|
|
397
|
+
new_colors = File.readlines("data/colors/new_colors.txt")
|
|
398
|
+
size_limit = new_colors.size.to_i
|
|
399
|
+
index = 0
|
|
400
|
+
|
|
401
|
+
size_limit.times do
|
|
402
|
+
ColorScience::Analyze.colors_in_context
|
|
403
|
+
|
|
404
|
+
classification = color_science.classify(*new_colors[index])
|
|
405
|
+
|
|
406
|
+
## Classification Datapoints
|
|
407
|
+
@label = classification[0] # .tr " ", ""
|
|
408
|
+
@probability_no = classification[1]
|
|
409
|
+
@probability_yes = 1 - @probability_no
|
|
410
|
+
|
|
411
|
+
random_color_probability = [0.058823529, 0.470588236, 0.977941177].sample
|
|
412
|
+
|
|
413
|
+
@new_calculation = @probability_no + random_color_probability / 2
|
|
414
|
+
|
|
415
|
+
print "Is '#{new_colors[index].strip}' #{@label}? #{@probability_yes} / #{@probability_no} "
|
|
416
|
+
|
|
417
|
+
ColorScience::Analyze.suggest_next_color
|
|
418
|
+
|
|
419
|
+
#@new_calculation = @new_calculation + @probability_no
|
|
420
|
+
end
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
###############################################################################################
|
|
424
|
+
# Suggest New Color #
|
|
425
|
+
###############################################################################################
|
|
426
|
+
# Suggest a new color to the player that can go into their color palette, rather than #
|
|
427
|
+
# chasing a random color name or hex code at random. #
|
|
428
|
+
###############################################################################################
|
|
429
|
+
def self.suggest_next_color
|
|
430
|
+
require "decisiontree"
|
|
431
|
+
require "digest"
|
|
432
|
+
|
|
433
|
+
attributes = ["Identifier"],
|
|
434
|
+
["Name"],
|
|
435
|
+
["Hex Code"],
|
|
436
|
+
["Invented Name"]
|
|
437
|
+
|
|
438
|
+
training = [
|
|
439
|
+
[0.058823529, "PH4DR1"], [0.088235296, "PH4DR2"], [0.147058825, "PH4DR3"],
|
|
440
|
+
[0.205882354, "PH5DR1"], [0.264705883, "PH5DR2"], [0.323529412, "PH5DR3"],
|
|
441
|
+
[0.397058824, "PH6DR1"], [0.470588236, "PH6DR2"], [0.529411765, "PH6DR3"],
|
|
442
|
+
[0.764705883, "PH7DR1"], [0.794117648, "PH7DR2"], [0.823529412, "PH7DR3"],
|
|
443
|
+
[0.852941177, "PH8DR1"], [0.882352941, "PH8DR2"], [0.897058824, "PH8DR2"],
|
|
444
|
+
[0.911764706, "PH9DR1"], [0.955882353, "PH9DR2"], [0.977941177, "PH9DR3"],
|
|
445
|
+
], [
|
|
446
|
+
[0.058823529, "Salmon"], [0.088235296, "Copper"], [0.147058825, "Salmon Pink"],
|
|
447
|
+
[0.205882354, "Pale Salmon"], [0.264705883, "Khaki"], [0.323529412, "Light Mauve"],
|
|
448
|
+
[0.397058824, "Maize"], [0.470588236, "Pale Lime"], [0.529411765, "Bland"],
|
|
449
|
+
[0.764705883, "Vibrant Green"], [0.794117648, "Medium Green"], [0.823529412, "Grey Blue"],
|
|
450
|
+
[0.852941177, "Japanese Bistre"], [0.882352941, "Kelly Green"], [0.897058824, "Sapphire 1"],
|
|
451
|
+
[0.911764706, "Dull Purple"], [0.955882353, "Viidian"], [0.977941177, "Sapphire 2"],
|
|
452
|
+
], [
|
|
453
|
+
[0.058823529, "#FC746B"], [0.088235296, "#D27D48"], [0.147058825, "#F26E6E"],
|
|
454
|
+
[0.205882354, "#EEA38F"], [0.264705883, "#B9B369"], [0.323529412, "#C7A2B1"],
|
|
455
|
+
[0.397058824, "#F9CF55"], [0.470588236, "#B1F468"], [0.529411765, "#CBC4AA"],
|
|
456
|
+
[0.764705883, "#0AD322"], [0.794117648, "#50CE6C"], [0.823529412, "#84A9CA"],
|
|
457
|
+
[0.852941177, "#65482C"], [0.882352941, "#0DA52B"], [0.897058824, "#0D36A3"],
|
|
458
|
+
[0.911764706, "#7D567A"], [0.955882353, "#0B916B"], [0.977941177, "#0A47B8"],
|
|
459
|
+
], [
|
|
460
|
+
[0.058823529, "Samon"], [0.088235296, "Cuivre"], [0.147058825, "Samonrose"],
|
|
461
|
+
[0.205882354, "Samonblanc"], [0.264705883, "Khaki"], [0.323529412, "Mauveraito"],
|
|
462
|
+
[0.397058824, "Meizu"], [0.470588236, "Remonblanc"], [0.529411765, "Burando"],
|
|
463
|
+
[0.764705883, "Gurinviell"], [0.794117648, "Chadeuxgris"], [0.823529412, "Burugris"],
|
|
464
|
+
[0.852941177, "Nihongobistre"], [0.882352941, "Kerivert"], [0.897058824, "Saphirune"],
|
|
465
|
+
[0.911764706, "Gris De Violet"], [0.955882353, "Viridian"], [0.977941177, "Saphirdeux"],
|
|
466
|
+
]
|
|
467
|
+
|
|
468
|
+
dec_tree = DecisionTree::ID3Tree.new(attributes[0], training[0], 1, :continuous),
|
|
469
|
+
DecisionTree::ID3Tree.new(attributes[1], training[1], 1, :continuous),
|
|
470
|
+
DecisionTree::ID3Tree.new(attributes[2], training[2], 1, :continuous),
|
|
471
|
+
DecisionTree::ID3Tree.new(attributes[3], training[3], 1, :continuous),
|
|
472
|
+
DecisionTree::ID3Tree.new(attributes[4], training[4], 1, :continuous)
|
|
473
|
+
|
|
474
|
+
current_dectree1 = dec_tree[0]
|
|
475
|
+
current_dectree1.train
|
|
476
|
+
|
|
477
|
+
current_dectree2 = dec_tree[1]
|
|
478
|
+
current_dectree2.train
|
|
479
|
+
|
|
480
|
+
current_dectree3 = dec_tree[2]
|
|
481
|
+
current_dectree3.train
|
|
482
|
+
|
|
483
|
+
current_dectree4 = dec_tree[3]
|
|
484
|
+
current_dectree4.train
|
|
485
|
+
|
|
486
|
+
identifier = [@new_calculation, "PH6DR2"]
|
|
487
|
+
name = [@new_calculation, "Pale Lime"]
|
|
488
|
+
hex_code = [@new_calculation, "#B1F468"]
|
|
489
|
+
invent_name = [@new_calculation, "Remonblanc"]
|
|
490
|
+
|
|
491
|
+
decision1 = current_dectree1.predict(identifier)
|
|
492
|
+
decision2 = current_dectree2.predict(name)
|
|
493
|
+
decision3 = current_dectree3.predict(hex_code)
|
|
494
|
+
decision4 = current_dectree4.predict(invent_name)
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
md5 = Digest::MD5.new
|
|
498
|
+
new_mixture = md5.update "['#{decision1}', '#{decision2}', '#{decision3}', '#{decision4}']"
|
|
499
|
+
|
|
500
|
+
puts " > ['#{decision1}', '#{decision2}', '#{decision3}', '#{decision4}']"
|
|
501
|
+
|
|
502
|
+
File.open("data/colors/suggestions/suggest_colors.txt", "a") { |f|
|
|
503
|
+
f.puts "[:#{decision1}, '#{decision2}', '#{decision3}', '#{decision4}'] #{new_mixture}"
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
File.open("data/atomspace/colors.metta", "a") { |f|
|
|
507
|
+
f.puts "!((#{decision1}) (#{decision2}) (#{decision3}) (#{decision4}));"
|
|
508
|
+
}
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
# def self.authenticate_datapoints
|
|
512
|
+
# require "digest"
|
|
513
|
+
#
|
|
514
|
+
# authentication_pairs = [
|
|
515
|
+
# ["[:PH4DR1, 'Salmon', '#FC746B', 'Samon']", "37c854f0133347f815ea4a694f2d04bd"]],
|
|
516
|
+
# ["[:PH5DR2, 'Khaki', '#B9B369', 'Khaki']", "40b089a385a3862b118fd38a743e967c"]],
|
|
517
|
+
# ["[:PH6DR2, 'Pale Lime', '#B1F468', 'Remonblanc']", "18b07b3750e769ac646902d4ab9b8da4"]],
|
|
518
|
+
# ]
|
|
519
|
+
#
|
|
520
|
+
# ## Genuine tables
|
|
521
|
+
# salmon_list = authentication_pairs[0][0]
|
|
522
|
+
# khaki_list = authentication_pairs[1][0]
|
|
523
|
+
# pale_lime_list = authentication_pairs[2][0]
|
|
524
|
+
#
|
|
525
|
+
# ## Hashed Tables
|
|
526
|
+
# md5 = Digest::MD5.new
|
|
527
|
+
#
|
|
528
|
+
# salmon_new_hash = md5.update salmon_list
|
|
529
|
+
# khaki_new_hash = md5.update khaki_list
|
|
530
|
+
# pale_lime_new_hash = md5.update pale_list_list
|
|
531
|
+
#
|
|
532
|
+
# ## Comparative Hashes
|
|
533
|
+
# salmon_hash = authentication_pairs[0][1]
|
|
534
|
+
# khaki_hash = authentication_pairs[1][1]
|
|
535
|
+
# pale_lime_hash = authentication_pairs[2][1]
|
|
536
|
+
#
|
|
537
|
+
# if salmon_new_hash == salmon_hash
|
|
538
|
+
# puts "This is a valid Salmon datapoint."
|
|
539
|
+
# else
|
|
540
|
+
# puts "This is a invalid Salmon datapoint."
|
|
541
|
+
# end
|
|
542
|
+
#
|
|
543
|
+
# if khaki_new_hash == khaki_hash
|
|
544
|
+
# puts "This is a valid Khaki datapoint."
|
|
545
|
+
# else
|
|
546
|
+
# puts "This is a invalid Khaki datapoint."
|
|
547
|
+
# end
|
|
548
|
+
#
|
|
549
|
+
# if pale_lime_new_hash == pale_lime_hash
|
|
550
|
+
# puts "This is a valid Pale Lime datapoint."
|
|
551
|
+
# else
|
|
552
|
+
# puts "This is a invalid Pale Lime datapoint."
|
|
553
|
+
# end
|
|
554
|
+
# end
|
|
555
|
+
|
|
556
|
+
def self.atomspace
|
|
557
|
+
system("metta-py data/atomspace/colors.metta")
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
def self.gabble_colors
|
|
561
|
+
require "gabbler"
|
|
562
|
+
|
|
563
|
+
gabbler = Gabbler.new
|
|
564
|
+
color_set = File.read("data/colors/suggestions/suggest_colors.txt")
|
|
565
|
+
color_set_size = File.readlines("data/colors/suggestions/suggest_colors.txt").size.to_i
|
|
566
|
+
|
|
567
|
+
gabbler.learn(color_set) # Make Gabbler learn about Color Set
|
|
568
|
+
|
|
569
|
+
#color_set_size.times do
|
|
570
|
+
puts gabbler.sentence
|
|
571
|
+
#end
|
|
572
|
+
|
|
573
|
+
#gabbler.unlearn!
|
|
574
|
+
|
|
575
|
+
#gabbler.learn(story.reverse) # Teach Gabbler about semloH kcolrehS.
|
|
576
|
+
|
|
577
|
+
#puts gabbler.sentence
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
###############################################################################################
|
|
581
|
+
# Chat With Color Scientist #
|
|
582
|
+
###############################################################################################
|
|
583
|
+
# Using AIML to chat with the color scientist by making color requests in natural language, #
|
|
584
|
+
# by having them translate documents in the invented language. #
|
|
585
|
+
###############################################################################################
|
|
586
|
+
def self.chat_color_science
|
|
587
|
+
require "programr"
|
|
588
|
+
end
|
|
589
|
+
end
|
|
590
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: HeritageNoMetairo
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- LWFlouisa
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2025-08-05 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: naive_bayes
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 0.0.3
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 0.0.3
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: decisiontree
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: 0.5.0
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: 0.5.0
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: programr
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 0.0.2
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: 0.0.2
|
|
55
|
+
description: This incorporates the use of Metta language rather than Gabbler in order
|
|
56
|
+
to more properly represent learned data.
|
|
57
|
+
email:
|
|
58
|
+
- lwflouisa@gmail.com
|
|
59
|
+
executables: []
|
|
60
|
+
extensions: []
|
|
61
|
+
extra_rdoc_files: []
|
|
62
|
+
files:
|
|
63
|
+
- README.md
|
|
64
|
+
- Rakefile
|
|
65
|
+
- lib/HeritageNoMetairo.rb
|
|
66
|
+
- lib/HeritageNoMetairo/version.rb
|
|
67
|
+
- sig/HeritageNoMetairo.rbs
|
|
68
|
+
homepage: https://bequestdecendresstudios.github.io/BequestDeCendresWiki/
|
|
69
|
+
licenses: []
|
|
70
|
+
metadata: {}
|
|
71
|
+
post_install_message:
|
|
72
|
+
rdoc_options: []
|
|
73
|
+
require_paths:
|
|
74
|
+
- lib
|
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: 3.0.0
|
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '0'
|
|
85
|
+
requirements: []
|
|
86
|
+
rubygems_version: 3.3.5
|
|
87
|
+
signing_key:
|
|
88
|
+
specification_version: 4
|
|
89
|
+
summary: Takes color identification, standard names, hex codes, and invented language
|
|
90
|
+
names, and takes them further.
|
|
91
|
+
test_files: []
|