function getNouns($word) { $lexems = Lexem::searchWordlists($word, true); $result = array(); foreach ($lexems as $l) { if ($l->modelType == 'M' || $l->modelType == 'F' || $l->modelType == 'N' || $l->modelType == 'A' || $l->modelType == 'MF') { $result[] = $l; } } return $result; }
$seen = 0; while (($dbRow = mysql_fetch_assoc($dbResult)) != null) { $l = Lexem::createFromDbRow($dbRow); $seen++; $defs = Definition::loadByLexemId($l->id); if (count($defs)) { $parts = split(' ', $l->form); print text_padRight($l->form, 30); foreach ($parts as $part) { $part = trim($part); if (!$part || in_array($part, $stopWords)) { // Skip common words continue; } print '['; $baseForms = Lexem::searchWordlists($part, true); if (!count($baseForms)) { $baseForm = Lexem::create($part, 'T', '1', ''); $baseForm->comment = "Provine din despărțirea lexemului [{$l->form}]"; $baseForm->noAccent = true; $baseForm->save(); $baseForm->id = db_getLastInsertedId(); $baseForm->regenerateParadigm(); $baseForms[] = $baseForm; } // Associate every definition with every lexem foreach ($baseForms as $baseForm) { print $baseForm->form . ' '; foreach ($defs as $def) { LexemDefinitionMap::associate($baseForm->id, $def->id); }