Module: JLPT::Grammar
- Defined in:
- lib/jlpt/analyzers/grammar.rb
Overview
JLPT Grammar Pattern Detection Engine.
Recognizes Japanese grammar constructions across levels N5 to N1.
Constant Summary collapse
- PATTERNS =
[ { pattern: /てはいけない|てはならない/, level: :n5, name: '〜てはいけない' }, { pattern: /てください|てくださいませんか/, level: :n5, name: '〜てください' }, { pattern: /なければならない|なければいけない/, level: :n5, name: '〜なければならない' }, { pattern: /ことができる|ことができない/, level: :n4, name: '〜ことができる' }, { pattern: /ようになっている/, level: :n4, name: '〜ようになっている' }, { pattern: /わけがない|わけではない/, level: :n3, name: '〜わけがない' }, { pattern: /に違いない/, level: :n2, name: '〜に違いない' }, { pattern: /ざるを得ない/, level: :n1, name: '〜ざるを得ない' } ].freeze
Class Method Summary collapse
-
.breakdown(text) ⇒ Hash{Symbol => Array<String>}
Breakdown of detected grammar patterns by JLPT level.
-
.extract(text) ⇒ Array<Hash>
Detect grammar patterns in text.
Class Method Details
.breakdown(text) ⇒ Hash{Symbol => Array<String>}
Breakdown of detected grammar patterns by JLPT level
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/jlpt/analyzers/grammar.rb', line 38 def breakdown(text) extracted = extract(text) res = { n5: [], n4: [], n3: [], n2: [], n1: [] } extracted.each do |g| lvl = g[:level] res[lvl] << g[:name] if res.key?(lvl) end res end |
.extract(text) ⇒ Array<Hash>
Detect grammar patterns in text
25 26 27 28 29 30 31 32 |
# File 'lib/jlpt/analyzers/grammar.rb', line 25 def extract(text) cleaned = Preprocessor.clean(text) return [] if cleaned.empty? PATTERNS.filter_map do |rule| { name: rule[:name], level: rule[:level], pattern: rule[:pattern] } if cleaned.match?(rule[:pattern]) end end |