code: func Construct(opts ...ConsOpt) (*Corpus, error) {
  	c := new(Corpus)
  
  	// checks
  	if c.words == nil {
  		c.words = make([]string, 0)
  	}
  	if c.frequencies == nil {
  		c.frequencies = make([]int, 0)
  	}
  	if c.ids == nil {
  		c.ids = make(map[string]int)
  	}
  
  	for _, opt := range opts {
  		if err := opt(c); err != nil {
  			return nil, err
  		}
  	}
  
  	return c, nil
  }
docs: // Construct creates a Corpus given the construction options. This allows for more flexibility