nokla
@nokla

Как создать первоклассный переводчик?

Как вы наверно знаете я пытаюсь создать потрясающий переводчик, который будет переводить все правильно.
Но 1 сделать это очень трудно.
Сразу покажу код
$array = preg_split('-([\W])-u', $_POST['0'], -1, PREG_SPLIT_NO_EMPTY);
        $result = array();
        $length = count($array);
        for ($i = 0; $i+1 <= $length; $i++) {
            $result[] = $array[$i];
            $_result = array($array[$i]);
            for ($j = $i+1; $j < $length; $j++) {
                $_result[] = $array[$j];
                $result[] = implode(' ', $_result);
            }
        }
        var_dump($result);

этот код разбирает текст на части, например в переменной $_POST['0'] предположим есть текст:
привет мир я на тостере
будет выглядеть это так
привет мир я на тостере

array(15) {
  [0]=>
  string(12) "привет"
  [1]=>
  string(19) "привет мир"
  [2]=>
  string(22) "привет мир я"
  [3]=>
  string(27) "привет мир я на"
  [4]=>
  string(42) "привет мир я на тостере"
  [5]=>
  string(6) "мир"
  [6]=>
  string(9) "мир я"
  [7]=>
  string(14) "мир я на"
  [8]=>
  string(29) "мир я на тостере"
  [9]=>
  string(2) "я"
  [10]=>
  string(7) "я на"
  [11]=>
  string(22) "я на тостере"
  [12]=>
  string(4) "на"
  [13]=>
  string(19) "на тостере"
  [14]=>
  string(14) "тостере"
}

в нашем случае будет так
приветпривет мирпривет мир япривет мир я напривет мир я на тостеремирмир ямир я намир я на тостереяя ная на тостеренана тостеретостере

Почему будет так:
Все дело в том что он сохраняет все подряд, а нужно чтоб он сохранял то что имеет, например так
привет мир я на тостере

array(15) {
  [1]=>
  string(19) "привет мир"
  [9]=>
  string(2) "я"
  [12]=>
  string(4) "на"
  [14]=>
  string(14) "тостере"
}

Или так если нету комбинаций вообще
привет мир я на тостере

array(15) {
  [0]=>
  string(12) "привет"
  [5]=>
  string(6) "мир"
  [9]=>
  string(2) "я"
  [12]=>
  string(4) "на"
  [14]=>
  string(14) "тостере"
}

Или если есть вся комбинация, было бы так
привет мир я на тостере

array(15) {
  [4]=>
  string(42) "привет мир я на тостере"
}
  • Вопрос задан
  • 4126 просмотров
Пригласить эксперта
Ответы на вопрос 4
begemot_sun
@begemot_sun
Программист в душе.
> потрясающий переводчик, который будет переводить все правильно.
Это конечно хорошее начало, ну прям очень. Я думаю вам также стоит покорять марс, у вас обязательно что-то получится и в этом направлении.

А по сабжу:
У вас регэксп не жадный, поэтому столько много всего вываливает.
Попробуйте -([\W])?-u
Ответ написан
Хороший переводчик должен учитывать контекст. Возьмите 1 направление - перевод статей по программированию и разработке, и копайте. А то стандартные переводчики так смешно иногда отраслевые словечки и сленг переводят ))
Ответ написан
FullWipe
@FullWipe
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы