/** * Funkce pro vygenerování ngramů */ private function generateNgrams($arr) { $outputArr = array(); foreach ($arr as $key => $value) { $outputArr[$key] = StringClass::getTrigramsArr(array($this->valuesMapArr[$value]), true, $this->ngramsLength); } return $outputArr; }
/** * Funkce pro zjištení podobnosti výčtových sloupců na základě trigramů */ private function matchTrigrams($column1, $column2, $coverage = false) { $colATrigramsArr = StringClass::getTrigramsArr($this->getValues($column1)); $col2name = (string) $column2->name . (isset($column2->formatName) ? '###' . (string) $column2->formatName : ''); if (!isset($this->xml2trigramsArr[$col2name])) { //zatím nemáme určené trigramy pro sloupec ze druhého souboru $this->xml2trigramsArr[$col2name] = StringClass::getTrigramsArr($this->getValues($column2)); $this->xml2trigramsSizeArr[$col2name] = StringClass::getVectorSize($this->xml2trigramsArr[$col2name]); } if ($coverage) { return StringClass::getTrigramsCoverage($colATrigramsArr, StringClass::getVectorSize($colATrigramsArr), $this->xml2trigramsArr[$col2name], $this->xml2trigramsSizeArr[$col2name]); } else { return StringClass::getTrigramsSimilarity($colATrigramsArr, StringClass::getVectorSize($colATrigramsArr), $this->xml2trigramsArr[$col2name], $this->xml2trigramsSizeArr[$col2name]); } }