odin 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +19 -0
- data/.rvmrc +1 -0
- data/.travis.yml +2 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +26 -0
- data/HISTORY.md +102 -0
- data/LICENSE.md +10 -0
- data/README.md +46 -0
- data/Rakefile +69 -0
- data/app/controllers/grammar_checker.rb +51 -0
- data/check_grammar.rb +24 -0
- data/configure +9 -0
- data/images/atn_diagram.graffle +0 -0
- data/images/atn_diagram.pdf +0 -0
- data/images/odin-ff6.gif +0 -0
- data/lang/en/adjectives.rb +388 -0
- data/lang/en/atn.rb +102 -0
- data/lang/en/closed_class_words.rb +206 -0
- data/lang/en/data.rb +1086 -0
- data/lang/en/noun_inflections.rb +76 -0
- data/lang/en/noun_inflector_test_cases.rb +235 -0
- data/lang/en/pronoun_inflector_test_cases.rb +14 -0
- data/lang/en/verbs.rb +648 -0
- data/lang/iso639.rb +405 -0
- data/lib/array.rb +15 -0
- data/lib/atn.rb +82 -0
- data/lib/augmented_transition_network.rb +146 -0
- data/lib/dumper.rb +44 -0
- data/lib/noun_inflector.rb +283 -0
- data/lib/odin.rb +3 -0
- data/lib/odin/version.rb +3 -0
- data/lib/parts_of_speech.rb +402 -0
- data/lib/star.rb +23 -0
- data/lib/string.rb +99 -0
- data/lib/string_bracketing.rb +100 -0
- data/lib/word.rb +69 -0
- data/lib/word_net.rb +265 -0
- data/odin.gemspec +27 -0
- data/simple_atn/README.md +45 -0
- data/simple_atn/Rakefile +9 -0
- data/simple_atn/array.rb +15 -0
- data/simple_atn/augmented_transition_network.rb +146 -0
- data/simple_atn/augmented_transition_network_test.rb +113 -0
- data/simple_atn/english.rb +161 -0
- data/simple_atn/string.rb +63 -0
- data/test/fixtures/alice.txt +3594 -0
- data/test/fixtures/art.txt +7 -0
- data/test/fixtures/both.txt +1 -0
- data/test/fixtures/existing.txt +0 -0
- data/test/fixtures/existing.txt.checked.html +0 -0
- data/test/fixtures/grammar_checker.css +4 -0
- data/test/fixtures/grammatical.txt +1 -0
- data/test/fixtures/ungrammatical.txt +1 -0
- data/test/functional/grammar_checker_test.rb +64 -0
- data/test/integration/en/word_and_noun_inflector_test.rb +29 -0
- data/test/test_helper.rb +82 -0
- data/test/unit/atn_test.rb +240 -0
- data/test/unit/noun_inflector_test.rb +249 -0
- data/test/unit/pronoun_inflector_test.rb +17 -0
- data/test/unit/star_test.rb +24 -0
- data/test/unit/string_bracketing_test_module.rb +70 -0
- data/test/unit/string_test.rb +92 -0
- data/test/unit/word_test.rb +15 -0
- metadata +223 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.8.7@odin --create
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
odin (0.0.1)
|
5
|
+
activesupport (~> 2.0.1)
|
6
|
+
english (~> 0.1)
|
7
|
+
facets (~> 2.2.1)
|
8
|
+
linguistics (~> 1.0.8)
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
activesupport (2.0.5)
|
14
|
+
english (0.6.3)
|
15
|
+
language
|
16
|
+
facets (2.2.1)
|
17
|
+
language (0.6.0)
|
18
|
+
linguistics (1.0.9)
|
19
|
+
rake (0.8.7)
|
20
|
+
|
21
|
+
PLATFORMS
|
22
|
+
ruby
|
23
|
+
|
24
|
+
DEPENDENCIES
|
25
|
+
odin!
|
26
|
+
rake (~> 0.8.7)
|
data/HISTORY.md
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
Just for historical perspective, these are the original modification times (GitHub seems to be eating them :( ).
|
2
|
+
|
3
|
+
-rw-r--r-- 1 ben staff 3579 Jan 9 2008 LICENSE
|
4
|
+
-rw-r--r-- 1 ben staff 283 Dec 20 2007 README
|
5
|
+
-rw-r--r-- 1 ben staff 702 Oct 4 20:41 README.md
|
6
|
+
-rw-r--r-- 1 ben staff 1841 Dec 11 2007 Rakefile
|
7
|
+
-rw-r--r--@ 1 ben staff 834 Jan 11 2008 check_grammar.rb
|
8
|
+
|
9
|
+
app:
|
10
|
+
total 0
|
11
|
+
drwxr-xr-x 3 ben staff 102 Oct 4 20:42 controllers/
|
12
|
+
|
13
|
+
app/controllers:
|
14
|
+
total 8
|
15
|
+
-rw-r--r--@ 1 ben staff 1375 Dec 11 2007 grammar_checker.rb
|
16
|
+
|
17
|
+
images:
|
18
|
+
total 376
|
19
|
+
-rw-r--r--@ 1 ben staff 3683 Dec 28 2007 atn_diagram.graffle
|
20
|
+
-rw-r--r--@ 1 ben staff 73395 Jan 9 2008 atn_diagram.pdf
|
21
|
+
-rw-r--r-- 1 ben staff 1498 Oct 4 20:41 odin-ff6.gif
|
22
|
+
|
23
|
+
lang:
|
24
|
+
total 24
|
25
|
+
drwxr-xr-x 11 ben staff 374 Oct 4 20:42 en/
|
26
|
+
-rw-r--r--@ 1 ben staff 11141 Dec 11 2007 iso639.rb
|
27
|
+
|
28
|
+
lang/en:
|
29
|
+
total 184
|
30
|
+
-rw-r--r-- 1 ben staff 4585 Dec 11 2007 adjectives.rb
|
31
|
+
-rw-r--r--@ 1 ben staff 1931 Dec 11 2007 atn.rb
|
32
|
+
-rw-r--r-- 1 ben staff 5272 Dec 14 2007 closed_class_words.rb
|
33
|
+
-rw-r--r--@ 1 ben staff 47385 Dec 11 2007 data.rb
|
34
|
+
-rw-r--r--@ 1 ben staff 3110 Dec 11 2007 noun_inflections.rb
|
35
|
+
-rw-r--r--@ 1 ben staff 6078 Dec 11 2007 noun_inflector_test_cases.rb
|
36
|
+
-rw-r--r--@ 1 ben staff 377 Dec 14 2007 pronoun_inflector_test_cases.rb
|
37
|
+
-rw-r--r--@ 1 ben staff 6724 Dec 11 2007 verbs.rb
|
38
|
+
|
39
|
+
lib:
|
40
|
+
total 152
|
41
|
+
-rw-r--r--@ 1 ben staff 329 Jan 8 2008 array.rb
|
42
|
+
-rw-r--r--@ 1 ben staff 2032 Jan 9 2008 atn.rb
|
43
|
+
-rw-r--r--@ 1 ben staff 4209 Dec 28 2007 augmented_transition_network.rb
|
44
|
+
-rw-r--r--@ 1 ben staff 845 Dec 10 2007 dumper.rb
|
45
|
+
-rw-r--r-- 1 ben staff 10250 Dec 14 2007 noun_inflector.rb
|
46
|
+
-rw-r--r--@ 1 ben staff 13565 Dec 14 2007 parts_of_speech.rb
|
47
|
+
-rw-r--r--@ 1 ben staff 361 Dec 10 2007 star.rb
|
48
|
+
-rw-r--r--@ 1 ben staff 2412 Dec 11 2007 string.rb
|
49
|
+
-rw-r--r--@ 1 ben staff 2166 Dec 11 2007 string_bracketing.rb
|
50
|
+
-rw-r--r-- 1 ben staff 1813 Dec 11 2007 word.rb
|
51
|
+
-rw-r--r-- 1 ben staff 11074 Dec 11 2007 word_net.rb
|
52
|
+
|
53
|
+
simple_atn:
|
54
|
+
total 80
|
55
|
+
-rw-r--r-- 1 ben staff 2198 Oct 4 20:52 README.md
|
56
|
+
-rw-r--r-- 1 ben staff 158 Dec 15 2007 Rakefile
|
57
|
+
-rw-r--r-- 1 ben staff 329 Jan 8 2008 array.rb
|
58
|
+
-rw-r--r--@ 1 ben staff 4209 Dec 28 2007 augmented_transition_network.rb
|
59
|
+
-rw-r--r--@ 1 ben staff 4432 Jan 11 2008 augmented_transition_network_test.rb
|
60
|
+
-rw-r--r--@ 1 ben staff 5986 Jan 9 2008 english.rb
|
61
|
+
-rw-r--r-- 1 ben staff 847 Dec 15 2007 string.rb
|
62
|
+
|
63
|
+
test:
|
64
|
+
total 8
|
65
|
+
drwxr-xr-x 11 ben staff 374 Oct 4 20:43 fixtures/
|
66
|
+
drwxr-xr-x 4 ben staff 136 Oct 4 20:43 functional/
|
67
|
+
drwxr-xr-x 4 ben staff 136 Oct 4 20:44 integration/
|
68
|
+
-rw-r--r-- 1 ben staff 3029 Dec 10 2007 test_helper.rb
|
69
|
+
drwxr-xr-x 10 ben staff 340 Oct 4 20:44 unit/
|
70
|
+
|
71
|
+
test/fixtures:
|
72
|
+
total 336
|
73
|
+
-rwxrwxrwx 1 ben staff 148490 Dec 11 2007 alice.txt
|
74
|
+
-rw-r--r-- 1 ben staff 1546 Dec 11 2007 art.txt
|
75
|
+
-rw-r--r-- 1 ben staff 1809 Dec 10 2007 both.txt
|
76
|
+
-rw-r--r-- 1 ben staff 0 Dec 10 2007 existing.txt
|
77
|
+
-rw-r--r-- 1 ben staff 0 Dec 10 2007 existing.txt.checked.html
|
78
|
+
-rw-r--r-- 1 ben staff 53 Dec 10 2007 grammar_checker.css
|
79
|
+
-rw-r--r-- 1 ben staff 1311 Dec 10 2007 grammatical.txt
|
80
|
+
-rw-r--r-- 1 ben staff 496 Dec 10 2007 ungrammatical.txt
|
81
|
+
|
82
|
+
test/functional:
|
83
|
+
total 8
|
84
|
+
-rw-r--r-- 1 ben staff 1772 Dec 11 2007 grammar_checker_test.rb
|
85
|
+
|
86
|
+
test/integration:
|
87
|
+
total 0
|
88
|
+
drwxr-xr-x 3 ben staff 102 Oct 4 20:44 en/
|
89
|
+
|
90
|
+
test/integration/en:
|
91
|
+
total 8
|
92
|
+
-rw-r--r-- 1 ben staff 782 Dec 11 2007 word_and_noun_inflector_test.rb
|
93
|
+
|
94
|
+
test/unit:
|
95
|
+
total 88
|
96
|
+
-rw-r--r-- 1 ben staff 11996 Jan 9 2008 atn_test.rb
|
97
|
+
-rw-r--r-- 1 ben staff 8799 Dec 14 2007 noun_inflector_test.rb
|
98
|
+
-rw-r--r-- 1 ben staff 483 Dec 14 2007 pronoun_inflector_test.rb
|
99
|
+
-rw-r--r-- 1 ben staff 513 Dec 10 2007 star_test.rb
|
100
|
+
-rw-r--r-- 1 ben staff 1603 Dec 11 2007 string_bracketing_test_module.rb
|
101
|
+
-rw-r--r-- 1 ben staff 3566 Dec 11 2007 string_test.rb
|
102
|
+
-rw-r--r-- 1 ben staff 344 Dec 14 2007 word_test.rb
|
data/LICENSE.md
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
The MIT License
|
2
|
+
===============
|
3
|
+
|
4
|
+
Copyright (c) 2007-2011 Benjamin Oakes
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
7
|
+
|
8
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
9
|
+
|
10
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
Odin
|
2
|
+
====
|
3
|
+
|
4
|
+
![Odin Esper from Final Fantasy VI](https://github.com/benjaminoakes/odin/raw/master/images/odin-ff6.gif)
|
5
|
+
|
6
|
+
![Still Maintained?](http://stillmaintained.com/benjaminoakes/odin.png)
|
7
|
+
![Build Status](http://travis-ci.org/benjaminoakes/odin.png)
|
8
|
+
|
9
|
+
Odin is an **ATN** (Augmented Transition Network) based parser for natural languages with basic part of speech tagging and word-sense disambiguation. Currently, the only supported language is English, but other languages can be added.
|
10
|
+
|
11
|
+
If interested, please become a watcher.
|
12
|
+
|
13
|
+
Usage
|
14
|
+
-----
|
15
|
+
|
16
|
+
ruby check_grammar.rb file_name
|
17
|
+
|
18
|
+
Output is saved to `file_name.checked.html`. There are some test files in "test/fixtures/".
|
19
|
+
|
20
|
+
History
|
21
|
+
-------
|
22
|
+
|
23
|
+
This is based on a project I made for a Computational Linguistics course at the University of Iowa (taught by now-retired [Professor Oden][oden], hence the name) back in 2007. It's not the earliest "serious" Ruby code I've written, but it's pretty close.
|
24
|
+
|
25
|
+
[oden]: http://cs.uiowa.edu/~oden
|
26
|
+
|
27
|
+
Contributing
|
28
|
+
------------
|
29
|
+
|
30
|
+
I'm not actively developing Odin right now, but if you have a use for it and you'd like to be a maintainer, please let me know.
|
31
|
+
|
32
|
+
You can run unit and functional tests with `rake test`.
|
33
|
+
|
34
|
+
Resources
|
35
|
+
---------
|
36
|
+
|
37
|
+
The design of the `AugmentedTransitionNetwork` class was inspired by Paul Graham's implementation in Lisp. For details on his implementation, please see the full text of his book [_On Lisp_][onlisp] (pages 309 - 320).
|
38
|
+
|
39
|
+
Also, there's a diagram of the ATN being used in `images/atn_diagram.pdf`.
|
40
|
+
|
41
|
+
[onlisp]: http://www.paulgraham.com/onlisptext.html
|
42
|
+
|
43
|
+
License
|
44
|
+
-------
|
45
|
+
|
46
|
+
Please see the `LICENSE.md` file.
|
data/Rakefile
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
require 'find'
|
4
|
+
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
|
7
|
+
# TODO switch to using "import"
|
8
|
+
def require_files(directory)
|
9
|
+
Find.find(directory) do |file_name|
|
10
|
+
if file_name.match(/.*\.rb$/)
|
11
|
+
require file_name
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# The names of the tasks here are modeled after those in Rails
|
17
|
+
|
18
|
+
# TODO add the descriptions back in. (Removed because they make it so that I have to choose a
|
19
|
+
# task when running the Rakefile via TextMate.)
|
20
|
+
|
21
|
+
task :default => :pre_commit
|
22
|
+
# desc "The task performed by the pre-commit hook in the Subversion repository."
|
23
|
+
task :pre_commit => "test" #[:validate_syntax, :unit_test]
|
24
|
+
task :test => ["test:units", "test:integration", "test:functionals"] # TODO a better way?
|
25
|
+
|
26
|
+
namespace "test" do
|
27
|
+
# desc "Run the unit tests in 'test/unit/*_test.rb'"
|
28
|
+
task :units do
|
29
|
+
require 'rake/runtest'
|
30
|
+
# Add all the dependencies
|
31
|
+
require_files("lib")
|
32
|
+
Rake.run_tests "test/unit/*_test.rb"
|
33
|
+
end
|
34
|
+
|
35
|
+
# desc "Run the integration tests in 'test/integration/*_test.rb'"
|
36
|
+
task :integration do
|
37
|
+
require 'rake/runtest'
|
38
|
+
# Add all the dependencies
|
39
|
+
require_files("lib")
|
40
|
+
Rake.run_tests "test/integration/*_test.rb"
|
41
|
+
Rake.run_tests "test/integration/*/*_test.rb"
|
42
|
+
end
|
43
|
+
|
44
|
+
# desc "Run the unit tests in 'test/functional/*_test.rb'"
|
45
|
+
task :functionals do
|
46
|
+
require 'rake/runtest'
|
47
|
+
# Add all the dependencies
|
48
|
+
require_files("lib")
|
49
|
+
require_files("app")
|
50
|
+
Rake.run_tests "test/functional/*_test.rb"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# TODO
|
55
|
+
# desc "Validate the syntax of all files."
|
56
|
+
# task :validate_syntax do
|
57
|
+
# puts '--------------------------------------------'
|
58
|
+
# puts 'Syntax Errors:'
|
59
|
+
# # TODO use "ruby -wc" recursively on all Ruby files
|
60
|
+
# puts '--------------------------------------------'
|
61
|
+
# end
|
62
|
+
#
|
63
|
+
# namespace "doc" do
|
64
|
+
# TODO
|
65
|
+
# desc "Generate documentation via rdoc"
|
66
|
+
# task :odin do
|
67
|
+
# # TODO generate documentation with rdoc
|
68
|
+
# end
|
69
|
+
# end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# word.rb MUST be required before string.rb
|
2
|
+
require File.dirname(__FILE__) + '/../../lib/word.rb'
|
3
|
+
require File.dirname(__FILE__) + '/../../lib/string.rb'
|
4
|
+
require File.dirname(__FILE__)/'..'/'..'/'lib'/'star.rb'
|
5
|
+
require File.dirname(__FILE__)/'..'/'..'/'lib'/'atn.rb'
|
6
|
+
|
7
|
+
class GrammarChecker
|
8
|
+
@@suffix = "checked.html"
|
9
|
+
|
10
|
+
def self.suffix
|
11
|
+
@@suffix
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.check(file_name)
|
15
|
+
@in_file_name = file_name
|
16
|
+
@out_file_name = "#{@in_file_name}.#{@@suffix}"
|
17
|
+
|
18
|
+
check_file_name
|
19
|
+
|
20
|
+
File.open(@in_file_name, "r") do |in_file|
|
21
|
+
File.open(@out_file_name, "w") do |out_file|
|
22
|
+
|
23
|
+
out_file.puts '<link rel="stylesheet" href="grammar_checker.css" type="text/css" media="screen" />'
|
24
|
+
|
25
|
+
while (line = in_file.gets)
|
26
|
+
checked = line.check_grammar do |sentence|
|
27
|
+
"<span class=\"ungrammatical\">#{sentence}</span>"
|
28
|
+
# "<ungrammatical message=\"\" suggestion=\"\">#{sentence}</ungrammatical>"
|
29
|
+
end
|
30
|
+
|
31
|
+
out_file.puts(checked)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
def self.check_file_name
|
39
|
+
if @in_file_name.nil?
|
40
|
+
raise ArgumentError.new("Nil file name supplied")
|
41
|
+
end
|
42
|
+
|
43
|
+
if File.exists?(@out_file_name)
|
44
|
+
raise Errno::EEXIST
|
45
|
+
end
|
46
|
+
|
47
|
+
if File.directory?(@in_file_name)
|
48
|
+
raise Errno::EISDIR
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
data/check_grammar.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'app/controllers/grammar_checker.rb'
|
2
|
+
|
3
|
+
begin
|
4
|
+
GrammarChecker.check(ARGV[0])
|
5
|
+
puts "Output saved to '#{ARGV[0]}.#{GrammarChecker.suffix}'"
|
6
|
+
rescue ArgumentError => e
|
7
|
+
puts "Usage: ruby check_grammar.rb file_name"
|
8
|
+
puts "Output saved to file_name.#{GrammarChecker.suffix}"
|
9
|
+
# TODO find a way to avoid using Errno::* because of readability issues
|
10
|
+
rescue Errno::EEXIST => e # Output file exists
|
11
|
+
print "There is already output saved for the file you're checking. Overwrite? (y/n) "
|
12
|
+
response = $stdin.gets.chomp # without $stdin, Ruby will read the file supplied to to the script
|
13
|
+
|
14
|
+
if "y" != response
|
15
|
+
exit!
|
16
|
+
else
|
17
|
+
File.delete("#{ARGV[0]}.#{GrammarChecker.suffix}")
|
18
|
+
retry
|
19
|
+
end
|
20
|
+
rescue Errno::ENOENT => e # No such file or directory
|
21
|
+
puts e.message
|
22
|
+
rescue Errno::EISDIR => e # Is a directory
|
23
|
+
puts e.message
|
24
|
+
end
|
data/configure
ADDED
Binary file
|
Binary file
|
data/images/odin-ff6.gif
ADDED
Binary file
|
@@ -0,0 +1,388 @@
|
|
1
|
+
# A basic list.
|
2
|
+
# From http://www.paulnoll.com/Books/Clear-English/English-adjectives-1.html
|
3
|
+
# and http://www.keepandshare.com/doc/view.php?u=12894
|
4
|
+
# and some others Ben included
|
5
|
+
|
6
|
+
module CachedAdjectives
|
7
|
+
@@Adjectives = %w{
|
8
|
+
abundant
|
9
|
+
adorable
|
10
|
+
adventurous
|
11
|
+
afraid
|
12
|
+
aggressive
|
13
|
+
agreeable
|
14
|
+
alert
|
15
|
+
alive
|
16
|
+
amused
|
17
|
+
ancient
|
18
|
+
angry
|
19
|
+
annoyed
|
20
|
+
annoying
|
21
|
+
anxious
|
22
|
+
arrogant
|
23
|
+
ashamed
|
24
|
+
attractive
|
25
|
+
average
|
26
|
+
awful
|
27
|
+
bad
|
28
|
+
beautiful
|
29
|
+
better
|
30
|
+
bewildered
|
31
|
+
big
|
32
|
+
bitter
|
33
|
+
black
|
34
|
+
blonde
|
35
|
+
bloody
|
36
|
+
blue
|
37
|
+
blue-eyed
|
38
|
+
blushing
|
39
|
+
boiling
|
40
|
+
bored
|
41
|
+
brainy
|
42
|
+
brave
|
43
|
+
breakable
|
44
|
+
breezy
|
45
|
+
brief
|
46
|
+
bright
|
47
|
+
broad
|
48
|
+
broken
|
49
|
+
bumpy
|
50
|
+
busy
|
51
|
+
calm
|
52
|
+
careful
|
53
|
+
cautious
|
54
|
+
charming
|
55
|
+
cheerful
|
56
|
+
chilly
|
57
|
+
chubby
|
58
|
+
clean
|
59
|
+
clear
|
60
|
+
clever
|
61
|
+
cloudy
|
62
|
+
clumsy
|
63
|
+
cold
|
64
|
+
colorful
|
65
|
+
colossal
|
66
|
+
combative
|
67
|
+
comfortable
|
68
|
+
concerned
|
69
|
+
condemned
|
70
|
+
confused
|
71
|
+
cooing
|
72
|
+
cool
|
73
|
+
cooperative
|
74
|
+
courageous
|
75
|
+
crazy
|
76
|
+
crazy,
|
77
|
+
creepy
|
78
|
+
crooked
|
79
|
+
crowded
|
80
|
+
cruel
|
81
|
+
cuddly
|
82
|
+
curious
|
83
|
+
curly
|
84
|
+
curved
|
85
|
+
cute
|
86
|
+
damaged
|
87
|
+
damp
|
88
|
+
dangerous
|
89
|
+
dark
|
90
|
+
dead
|
91
|
+
deafening
|
92
|
+
deep
|
93
|
+
defeated
|
94
|
+
defiant
|
95
|
+
delicious
|
96
|
+
delightful
|
97
|
+
depressed
|
98
|
+
determined
|
99
|
+
different
|
100
|
+
difficult
|
101
|
+
dirty
|
102
|
+
disgusted
|
103
|
+
distinct
|
104
|
+
disturbed
|
105
|
+
dizzy
|
106
|
+
doubtful
|
107
|
+
drab
|
108
|
+
dry
|
109
|
+
dull
|
110
|
+
dusty
|
111
|
+
eager
|
112
|
+
early
|
113
|
+
easy
|
114
|
+
elated
|
115
|
+
elegant
|
116
|
+
embarrassed
|
117
|
+
empty
|
118
|
+
enchanting
|
119
|
+
encouraging
|
120
|
+
energetic
|
121
|
+
enthusiastic
|
122
|
+
envious
|
123
|
+
evil
|
124
|
+
excited
|
125
|
+
expensive
|
126
|
+
exuberant
|
127
|
+
faint
|
128
|
+
fair
|
129
|
+
faithful
|
130
|
+
famous
|
131
|
+
fancy
|
132
|
+
fantastic
|
133
|
+
fast
|
134
|
+
fat
|
135
|
+
few
|
136
|
+
fierce
|
137
|
+
filthy
|
138
|
+
fine
|
139
|
+
flaky
|
140
|
+
flat
|
141
|
+
flipped-out
|
142
|
+
fluffy
|
143
|
+
fluttering
|
144
|
+
foolish
|
145
|
+
fragile
|
146
|
+
frail
|
147
|
+
frantic
|
148
|
+
freezing
|
149
|
+
fresh
|
150
|
+
friendly
|
151
|
+
frightened
|
152
|
+
funny
|
153
|
+
fuzzy
|
154
|
+
gentle
|
155
|
+
giant
|
156
|
+
gifted
|
157
|
+
gigantic
|
158
|
+
glamorous
|
159
|
+
gleaming
|
160
|
+
glorious
|
161
|
+
good
|
162
|
+
gorgeous
|
163
|
+
graceful
|
164
|
+
greasy
|
165
|
+
great
|
166
|
+
grieving
|
167
|
+
grotesque
|
168
|
+
grubby
|
169
|
+
grumpy
|
170
|
+
handsome
|
171
|
+
happy
|
172
|
+
hard
|
173
|
+
harsh
|
174
|
+
healthy
|
175
|
+
heavy
|
176
|
+
helpful
|
177
|
+
helpless
|
178
|
+
high
|
179
|
+
high-pitched
|
180
|
+
hilarious
|
181
|
+
hissing
|
182
|
+
hollow
|
183
|
+
homeless
|
184
|
+
homely
|
185
|
+
horrible
|
186
|
+
hot
|
187
|
+
huge
|
188
|
+
hungry
|
189
|
+
hurt
|
190
|
+
hushed
|
191
|
+
husky
|
192
|
+
icy
|
193
|
+
ill
|
194
|
+
immense
|
195
|
+
important
|
196
|
+
impossible
|
197
|
+
inexpensive
|
198
|
+
innocent
|
199
|
+
inquisitive
|
200
|
+
itchy
|
201
|
+
jealous
|
202
|
+
jittery
|
203
|
+
jolly
|
204
|
+
joyous
|
205
|
+
juicy
|
206
|
+
kind
|
207
|
+
large
|
208
|
+
late
|
209
|
+
lazy
|
210
|
+
light
|
211
|
+
little
|
212
|
+
lively
|
213
|
+
lonely
|
214
|
+
long
|
215
|
+
loose
|
216
|
+
loud
|
217
|
+
lovely
|
218
|
+
low
|
219
|
+
lucky
|
220
|
+
magnificent
|
221
|
+
mammoth
|
222
|
+
many
|
223
|
+
massive
|
224
|
+
melodic
|
225
|
+
melted
|
226
|
+
miniature
|
227
|
+
misty
|
228
|
+
moaning
|
229
|
+
modern
|
230
|
+
motionless
|
231
|
+
muddy
|
232
|
+
mushy
|
233
|
+
mute
|
234
|
+
mysterious
|
235
|
+
narrow
|
236
|
+
nasty
|
237
|
+
naughty
|
238
|
+
nervous
|
239
|
+
nice
|
240
|
+
noisy
|
241
|
+
numerous
|
242
|
+
nutritious
|
243
|
+
nutty
|
244
|
+
obedient
|
245
|
+
obnoxious
|
246
|
+
odd
|
247
|
+
old
|
248
|
+
old-fashioned
|
249
|
+
open
|
250
|
+
outrageous
|
251
|
+
outstanding
|
252
|
+
panicky
|
253
|
+
perfect
|
254
|
+
petite
|
255
|
+
plain
|
256
|
+
plastic
|
257
|
+
pleasant
|
258
|
+
poised
|
259
|
+
poor
|
260
|
+
powerful
|
261
|
+
precious
|
262
|
+
pretty
|
263
|
+
prickly
|
264
|
+
proud
|
265
|
+
puny
|
266
|
+
purring
|
267
|
+
puzzled
|
268
|
+
quaint
|
269
|
+
quick
|
270
|
+
quiet
|
271
|
+
rainy
|
272
|
+
rapid
|
273
|
+
raspy
|
274
|
+
real
|
275
|
+
relieved
|
276
|
+
repulsive
|
277
|
+
resonant
|
278
|
+
rich
|
279
|
+
ripe
|
280
|
+
rotten
|
281
|
+
rough
|
282
|
+
round
|
283
|
+
salty
|
284
|
+
scary
|
285
|
+
scattered
|
286
|
+
scrawny
|
287
|
+
screeching
|
288
|
+
selfish
|
289
|
+
shaggy
|
290
|
+
shaky
|
291
|
+
shallow
|
292
|
+
sharp
|
293
|
+
shiny
|
294
|
+
shivering
|
295
|
+
short
|
296
|
+
shrill
|
297
|
+
shy
|
298
|
+
silent
|
299
|
+
silky
|
300
|
+
silly
|
301
|
+
skinny
|
302
|
+
sleepy
|
303
|
+
slimy
|
304
|
+
slippery
|
305
|
+
slow
|
306
|
+
small
|
307
|
+
smiling
|
308
|
+
smoggy
|
309
|
+
smooth
|
310
|
+
soft
|
311
|
+
solid
|
312
|
+
sore
|
313
|
+
sour
|
314
|
+
sparkling
|
315
|
+
spicy
|
316
|
+
splendid
|
317
|
+
spotless
|
318
|
+
square
|
319
|
+
squealing
|
320
|
+
stale
|
321
|
+
steady
|
322
|
+
steep
|
323
|
+
sticky
|
324
|
+
stormy
|
325
|
+
straight
|
326
|
+
strange
|
327
|
+
strong
|
328
|
+
stupid
|
329
|
+
substantial
|
330
|
+
successful
|
331
|
+
super
|
332
|
+
sweet
|
333
|
+
swift
|
334
|
+
talented
|
335
|
+
tall
|
336
|
+
tame
|
337
|
+
tart
|
338
|
+
tasteless
|
339
|
+
tasty
|
340
|
+
teeny
|
341
|
+
teeny-tiny
|
342
|
+
tender
|
343
|
+
tense
|
344
|
+
terrible
|
345
|
+
testy
|
346
|
+
thankful
|
347
|
+
thirsty
|
348
|
+
thoughtful
|
349
|
+
thoughtless
|
350
|
+
thundering
|
351
|
+
tight
|
352
|
+
tiny
|
353
|
+
tired
|
354
|
+
tough
|
355
|
+
troubled
|
356
|
+
ugliest
|
357
|
+
ugly
|
358
|
+
uneven
|
359
|
+
uninterested
|
360
|
+
unsightly
|
361
|
+
unusual
|
362
|
+
upset
|
363
|
+
uptight
|
364
|
+
vast
|
365
|
+
victorious
|
366
|
+
vivacious
|
367
|
+
voiceless
|
368
|
+
wandering
|
369
|
+
warm
|
370
|
+
weak
|
371
|
+
weary
|
372
|
+
wet
|
373
|
+
whispering
|
374
|
+
wicked
|
375
|
+
wide
|
376
|
+
wide-eyed
|
377
|
+
wild
|
378
|
+
witty
|
379
|
+
wonderful
|
380
|
+
wooden
|
381
|
+
worried
|
382
|
+
wrong
|
383
|
+
young
|
384
|
+
yummy
|
385
|
+
zany
|
386
|
+
zealous
|
387
|
+
}
|
388
|
+
end
|