- $cnt = count($tokens);
- $picks = [];
- if ($cnt >= 5) {
- $cmb = $this->generalize(array_slice($tokens, $cnt - 5, 5));
- if (isset($this->five[$cmb])) {
- $pick = $this->pick($this->five[$cmb]);
- if (!is_null($pick)) {
- $picks[$pick[0]] = [
- 'count' => 10,
- 'examples' => $pick[3],
- ];
- }
- }
- }
- if ($cnt >= 4) {
- $cmb = $this->generalize(array_slice($tokens, $cnt - 4, 4));
- if (isset($this->four[$cmb])) {
- $pick = $this->pick($this->four[$cmb]);
- if (!is_null($pick)) {
- $picks[$pick[0]] = [
- 'count' => 12,
- 'examples' => $pick[3],
- ];
- }
- }
- }
- if ($cnt >= 3) {
- $cmb = $this->generalize(array_slice($tokens, $cnt - 3, 3));
- if (isset($this->three[$cmb])) {
- $pick = $this->pick($this->three[$cmb]);
- if (!is_null($pick)) {
- $picks[$pick[0]] = [
- 'count' => 14,
- 'examples' => $pick[3],
- ];
- }
- }
- }
- if ($cnt >= 2) {
- $cmb = $this->generalize(array_slice($tokens, $cnt - 2, 2));
- if (isset($this->two[$cmb])) {
- $pick = $this->pick($this->two[$cmb]);
- if (!is_null($pick)) {
- $picks[$pick[0]] = [
- 'count' => 4,
- 'examples' => $pick[3],
- ];
- }
- }
- }
- if ($cnt >= 1) {
- $cmb = $this->generalize(array_slice($tokens, $cnt - 1, 1));
- if (isset($this->one[$cmb])) {
- $pick = $this->pick($this->one[$cmb]);
- if (!is_null($pick)) {
- $picks[$pick[0]] = [
- 'count' => 2,
- 'examples' => $pick[3],
- ];
- }
- }
- }
- if (empty($picks)) return '';
- $picks = $this->index($picks);
- $pick = $this->pick($picks);
- return $this->exampleOf($pick);