php666
@php666
PHP-макака

Есть решения по проверке орфографии?

Привет. Некоторые пользователи пишут вот так:
Такелажные работы.Работы на складах и в помещениях.Разгрузка и погрузка фур,контейнеров,вагонов.Квартирные,офисные,складские,магазинные переезды.Работы на этажах.Наличный и безналичный расчет.Работаем Круглосуточно!!!
От этого летит верстка.

Сейчас не могу предугадать все ситуации - насколько будет правильным после точки, запятой, двоеточия, точки с запятой принудительно ставить пробел. Какие могут быть нюансы в плане орфографии? Может есть библиотеки, которые из подобного треша делают читабельный текст, удаляя лишние !!!!! знаки пунктуации и приводя текст в норму?
  • Вопрос задан
  • 597 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Используйте regex и проверяйте на невалидные цепочки слов и знаков препинания внутри текста перед постингом и нормализуйте токены-разделители.
2. Проверяйте сами слова на валидные символы (и их цепочки), на ограничение длины и на содержание в стоп-листе.
источник
<?php
$values = array(
    'text???',
    '???text',
    'text???text',
    'text ? ? ? ? ? text'
);

foreach ($values as $original_value) {
    $value = preg_replace('/([?!.:,;]|\s)\1+/', '$1 ', $original_value);
    echo $original_value . "\n" . $value . "\n\n";
}
Результат
text???
text? 

???text
? text

text???text
text? text

text ? ? ? ? ? text
text ? text

Вот либа для русского языка: Typograph
На данный момент типограф умеет...
Обрабатывать тексты в различных кодировках(требуется iconv).
Заменять кавычки на ёлочки.
Склеивать двойные кавычки.
Заменять знак дефиса или два знака дефиса подряд — на знак длинного тире.
Заменять знак дефиса, ограниченный с обоих сторон цифрами — на знак короткого тире.
Заменять множество пробелов или табуляций на один пробел.
Заменять х в выражениях вроде 10x10 на знак умножения.
Исправлять неправильную расстановку запятых.
Разносить неправильно расставленные кавычки.
Вставлять неразрывный пробел после инициалов, сцеплять инициалы.
Делать неразрывными названия организаций и аббревиатуры форм собственности.
Делать неразрывными имя собственное и относящееся к нему сокращение.
Не разделять 2007 г., ставить пробел, если его нет.
Сцеплять скобки со словами.
Заменять 1/2 1/4 3/4 на спецсимволы.
Следить за тем, чтобы предлоги и союзы не находились в конце строки.
Следить за тем, чтобы частицы бы, ли, же и т.д. не отрывались от предшествующего слова.
Форматировать русские денежные суммы, расставляя пробелы в нужных местах.
Заменять от 3-х до 5-и точек подряд на троеточие.
Притягивать к слову запятые, отделять пробелом от последующего слова.
Притягивать к слову восклицательный знак.
Делать замену для +-.
Обрабатывать вложенные кавычки.
Притягивание чисел к знаку умножения.
Запятые до «а» и «но».
Притягивание «;» к предшествующему слову.
Убирает лишние знаки: «??» в «?», «!!!!» в «!!!».
Правильные апострофы в «LO'Лайт».
Прямая речь.
Неразрывные IP-адреса.

Добавлю ещё, что если есть ограничение на количество символов в объявлении - то сразу лучше ограничить количество слов (2 буквы и более) не несущих смысл (союзы, предлоги и т.д.). Тогда текст объявлений будет намного качественнее для ЛЮДЕЙ (и для поисковиков, конечно)!

Что такое заспамленность в целом (понятия: водность, тошнота текста и др.): тут
Онлайн анализ текста: здесь

Т.е. это должно работать сразу, до принятия объявления системой (т.е., обычно, до его публикации).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@posters
https://yandex.ru/dev/speller/
Смотрели?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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