php666
@php666
PHP-макака

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

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

Сейчас не могу предугадать все ситуации - насколько будет правильным после точки, запятой, двоеточия, точки с запятой принудительно ставить пробел. Какие могут быть нюансы в плане орфографии? Может есть библиотеки, которые из подобного треша делают читабельный текст, удаляя лишние !!!!! знаки пунктуации и приводя текст в норму?
  • Вопрос задан
  • 538 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight Куратор тега PHP
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 буквы и более) не несущих смысл (союзы, предлоги и т.д.). Тогда текст объявлений будет намного качественнее для ЛЮДЕЙ (и для поисковиков, конечно)!

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

Т.е. это должно работать сразу, до принятия объявления системой (т.е., обычно, до его публикации).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы