Estructura del Repositorio
La organización interna del proyecto Lemmatizer se distribuye de la siguiente manera:
lemmatizer/
├── lib/
│ ├── dict/
│ │ ├── index.adj
│ │ ├── index.adv
│ │ ├── index.noun
│ │ └── index.verb
│ └── lemmatizer.rb
├── spec/
│ └── lemmatizer_spec.rb
├── .gitignore
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
└── lemmatizer.gemspec
Los elementos clave de esta arquitectura incluyen:
- lib/: Alberga el código fuente principle.
lemmatizer.rbcontiene la lógica central, mientras quedict/guarda los índices léxicos necesarios para la lematización (adjetivos, adverbios, sustantivos y verbos). - spec/: Directorio de pruebas unitarias para validar el comportamiento de la gema.
- lemmatizer.gemspec y Gemfile: Archivos destinados a la gestión de dependencias y empaquetado del proyecto.
- Rakefile: Definición de tareas de automatización para construcción y pruebas.
Punto de Entrada y Ejecución
El núcleo funcional reside en lib/lemmatizer.rb, donde se define la clase encargada de procesar las palabras y reducirlas a sus lemas utilizando los archivos del directorio dict/.
require 'yaml'
class Lemmatizer
# Implementación de la clase
# Lógica de búsqueda en diccionarios y reducción morfológica
end
Para utilizar esta herramienta en tu aplicación, primero debes instanciar la clase y luego invocar el método de lematización especificando la categoría gramatical:
require 'lemmatizer'
text_analyzer = Lemmatizer.new
puts text_analyzer.lemma("running", :verb) # Salida: "run"
puts text_analyzer.lemma("mice", :noun) # Salida: "mouse"
Configuración de Dependencias
El comportamiento del proyecto y sus dependencias se controlan a través de lemmatizer.gemspec y Gemfile.
El archivo .gemspec define los metadatos necesarios para distribuir la gema, estableciendo su versión y los archivos a incluir:
Gem::Specification.new do |spec|
spec.name = 'lemmatizer'
spec.version = '0.2.0'
spec.summary = "Herramienta de lematización para texto en inglés"
spec.description = "Adaptación en Ruby del lector de corpus WordNet morphy de NLTK (Python)"
spec.files = Dir['lib/**/*']
spec.license = 'MIT'
end
Por su parte, el Gemfile facilita la instalación de la biblioteca en entornos de desarrrollo vinculando la fuente de RubyGems:
source 'https://rubygems.org'
gem 'lemmatizer', '0.2.0'