odin 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/.gitignore +19 -0
  2. data/.rvmrc +1 -0
  3. data/.travis.yml +2 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +26 -0
  6. data/HISTORY.md +102 -0
  7. data/LICENSE.md +10 -0
  8. data/README.md +46 -0
  9. data/Rakefile +69 -0
  10. data/app/controllers/grammar_checker.rb +51 -0
  11. data/check_grammar.rb +24 -0
  12. data/configure +9 -0
  13. data/images/atn_diagram.graffle +0 -0
  14. data/images/atn_diagram.pdf +0 -0
  15. data/images/odin-ff6.gif +0 -0
  16. data/lang/en/adjectives.rb +388 -0
  17. data/lang/en/atn.rb +102 -0
  18. data/lang/en/closed_class_words.rb +206 -0
  19. data/lang/en/data.rb +1086 -0
  20. data/lang/en/noun_inflections.rb +76 -0
  21. data/lang/en/noun_inflector_test_cases.rb +235 -0
  22. data/lang/en/pronoun_inflector_test_cases.rb +14 -0
  23. data/lang/en/verbs.rb +648 -0
  24. data/lang/iso639.rb +405 -0
  25. data/lib/array.rb +15 -0
  26. data/lib/atn.rb +82 -0
  27. data/lib/augmented_transition_network.rb +146 -0
  28. data/lib/dumper.rb +44 -0
  29. data/lib/noun_inflector.rb +283 -0
  30. data/lib/odin.rb +3 -0
  31. data/lib/odin/version.rb +3 -0
  32. data/lib/parts_of_speech.rb +402 -0
  33. data/lib/star.rb +23 -0
  34. data/lib/string.rb +99 -0
  35. data/lib/string_bracketing.rb +100 -0
  36. data/lib/word.rb +69 -0
  37. data/lib/word_net.rb +265 -0
  38. data/odin.gemspec +27 -0
  39. data/simple_atn/README.md +45 -0
  40. data/simple_atn/Rakefile +9 -0
  41. data/simple_atn/array.rb +15 -0
  42. data/simple_atn/augmented_transition_network.rb +146 -0
  43. data/simple_atn/augmented_transition_network_test.rb +113 -0
  44. data/simple_atn/english.rb +161 -0
  45. data/simple_atn/string.rb +63 -0
  46. data/test/fixtures/alice.txt +3594 -0
  47. data/test/fixtures/art.txt +7 -0
  48. data/test/fixtures/both.txt +1 -0
  49. data/test/fixtures/existing.txt +0 -0
  50. data/test/fixtures/existing.txt.checked.html +0 -0
  51. data/test/fixtures/grammar_checker.css +4 -0
  52. data/test/fixtures/grammatical.txt +1 -0
  53. data/test/fixtures/ungrammatical.txt +1 -0
  54. data/test/functional/grammar_checker_test.rb +64 -0
  55. data/test/integration/en/word_and_noun_inflector_test.rb +29 -0
  56. data/test/test_helper.rb +82 -0
  57. data/test/unit/atn_test.rb +240 -0
  58. data/test/unit/noun_inflector_test.rb +249 -0
  59. data/test/unit/pronoun_inflector_test.rb +17 -0
  60. data/test/unit/star_test.rb +24 -0
  61. data/test/unit/string_bracketing_test_module.rb +70 -0
  62. data/test/unit/string_test.rb +92 -0
  63. data/test/unit/word_test.rb +15 -0
  64. metadata +223 -0
@@ -0,0 +1,19 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT
17
+ doc/*
18
+ *.gem
19
+ .bundle
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.8.7@odin --create
@@ -0,0 +1,2 @@
1
+ rvm:
2
+ - 1.8.7
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in odin.gemspec
4
+ gemspec
@@ -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)
@@ -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
@@ -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.
@@ -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.
@@ -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
@@ -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
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+ # Configure build environment.
3
+ #
4
+ # @author Benjamin Oakes <hello@benjaminoakes.com>
5
+
6
+ echo "[$0] starting"
7
+ # gem install bundler --version '~> 1.0.21' --no-rdoc --no-ri
8
+ bundle install
9
+ echo "[$0] finished"
Binary file
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