public function createLM( $text, $maxNgrams ) {
		$ngram = [];
		foreach ( preg_split( "/[{$this->wordSeparator}]+/u", $text ) as $word ) {
			if ( empty( $word ) ) {
				continue;
			}
			$word = "_" . $word . "_";
			$len = mb_strlen( $word, "UTF-8" );
			for ( $i = 0; $i < $len; $i++ ) {
				$rlen = $len - $i;
				if ( $rlen > 4 ) {
					@$ngram[mb_substr( $word, $i, 5, "UTF-8" )]++;
				}
				if ( $rlen > 3 ) {
					@$ngram[mb_substr( $word, $i, 4, "UTF-8" )]++;
				}
				if ( $rlen > 2 ) {
					@$ngram[mb_substr( $word, $i, 3, "UTF-8" )]++;
				}
				if ( $rlen > 1 ) {
					@$ngram[mb_substr( $word, $i, 2, "UTF-8" )]++;
				}
				@$ngram[mb_substr( $word, $i, 1, "UTF-8" )]++;
			}
		}
		if ( $this->minFreq ) {
			$min = $this->minFreq;
			$ngram = array_filter( $ngram, function ( $v ) use ( $min ) {
				return $v > $min;
			} );
		}
		uksort( $ngram, function ( $k1, $k2 ) use ( $ngram ) {
				if ( $ngram[$k1] == $ngram[$k2] ) {
					return strcmp( $k1, $k2 );
				}
				return $ngram[$k2] - $ngram[$k1];
		} );
		if ( count( $ngram ) > $maxNgrams ) {
			array_splice( $ngram, $maxNgrams );
		}
		return $ngram;
	}
public function createLM( $text, $maxNgrams ) {
		$ngram = [];
		foreach ( preg_split( "/[{$this->wordSeparator}]+/u", $text ) as $word ) {
			if ( empty( $word ) ) {
				continue;
			}
			$word = "_" . $word . "_";
			$len = mb_strlen( $word, "UTF-8" );
			for ( $i = 0; $i < $len; $i++ ) {
				$rlen = $len - $i;
				if ( $rlen > 4 ) {
					@$ngram[mb_substr( $word, $i, 5, "UTF-8" )]++;
				}
				if ( $rlen > 3 ) {
					@$ngram[mb_substr( $word, $i, 4, "UTF-8" )]++;
				}
				if ( $rlen > 2 ) {
					@$ngram[mb_substr( $word, $i, 3, "UTF-8" )]++;
				}
				if ( $rlen > 1 ) {
					@$ngram[mb_substr( $word, $i, 2, "UTF-8" )]++;
				}
				@$ngram[mb_substr( $word, $i, 1, "UTF-8" )]++;
			}
		}
		if ( $this->minFreq ) {
			$min = $this->minFreq;
			$ngram = array_filter( $ngram, function ( $v ) use ( $min ) {
				return $v > $min;
			} );
		}
		uksort( $ngram, function ( $k1, $k2 ) use ( $ngram ) {
				if ( $ngram[$k1] == $ngram[$k2] ) {
					return strcmp( $k1, $k2 );
				}
				return $ngram[$k2] - $ngram[$k1];
		} );
		if ( count( $ngram ) > $maxNgrams ) {
			array_splice( $ngram, $maxNgrams );
		}
		return $ngram;
	}
public function createLM ( $ text , $ maxNgrams ) { $ ngram = [ ] ; foreach ( preg_split ( "/[{$this->wordSeparator}]+/u" , $ text ) as $ word ) { if ( empty ( $ word ) ) { continue ; } $ word = "_" . $ word . "_" ; $ len = mb_strlen ( $ word , "UTF-8" ) ; for ( $ i = 0 ; $ i < $ len ; $ i ++ ) { $ rlen = $ len - $ i ; if ( $ rlen > 4 ) { @ $ ngram [ mb_substr ( $ word , $ i , 5 , "UTF-8" ) ] ++ ; } if ( $ rlen > 3 ) { @ $ ngram [ mb_substr ( $ word , $ i , 4 , "UTF-8" ) ] ++ ; } if ( $ rlen > 2 ) { @ $ ngram [ mb_substr ( $ word , $ i , 3 , "UTF-8" ) ] ++ ; } if ( $ rlen > 1 ) { @ $ ngram [ mb_substr ( $ word , $ i , 2 , "UTF-8" ) ] ++ ; } @ $ ngram [ mb_substr ( $ word , $ i , 1 , "UTF-8" ) ] ++ ; } } if ( $ this -> minFreq ) { $ min = $ this -> minFreq ; $ ngram = array_filter ( $ ngram , function ( $ v ) use ( $ min ) { return $ v > $ min ; } ) ; } uksort ( $ ngram , function ( $ k1 , $ k2 ) use ( $ ngram ) { if ( $ ngram [ $ k1 ] == $ ngram [ $ k2 ] ) { return strcmp ( $ k1 , $ k2 ) ; } return $ ngram [ $ k2 ] - $ ngram [ $ k1 ] ; } ) ; if ( count ( $ ngram ) > $ maxNgrams ) { array_splice ( $ ngram , $ maxNgrams ) ; } return $ ngram ; }
Create ngrams list for text.
@param string $text
@param int $maxNgrams How many ngrams to use.
@return int[]
Create ngrams list for text .