Автор Тема: не работает aspell, ispell  (Прочитано 781 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн v4567

  • Постоялец
  • ***
  • Сообщений: 105
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Харьков
не работает aspell, ispell
« : 27 Июля 2016, 22:17:56 »
В системе установлены два пакета aspell и ispell с русскими словарями, но проверить файл не получается.
Создал текстовый файл в кодировке utf8, первую строку написал на английском, вторую состоящую из одного слова "акно" на русском, третью снова на английском.
 Запускаю:
ispell -d ru ~/txt.txt
или
ispell -d ru-yo ~/txt.txt
или
aspell --lang=ru -c ~/txt.txt
или
 aspell --lang=ru-yo -c ~/txt.txt
файл открывается для проверке и выделение стоит на английском слове, нажимаю "i" для пропуска, что бы перейти к строке с русским словом и переходит не на вторую строку с русским словом, а на третью с английским. Русские слова игнорирует.
Если создать файл только с одним русским словом, то после этих команд просто вылетает обратно в командную строку.
Вот выводы следующих команд:
aspell dump dicts
en
en-variant_0
en-variant_1
en-variant_2
en-w_accents
en-wo_accents
en_CA
en_CA-w_accents
en_CA-wo_accents
en_GB
en_GB-ise
en_GB-ise-w_accents
en_GB-ise-wo_accents
en_GB-ize
en_GB-ize-w_accents
en_GB-ize-wo_accents
en_GB-w_accents
en_GB-wo_accents
en_US
en_US-w_accents
en_US-wo_accents
he
ru
ru-ye
ru-yeyo
ru-yo

locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
aspell config
Спойлер для скрыто:
# conf (string)
#   главный конфигурационный файл
# default: aspell.conf

# conf-dir (string)
#   местонахождение главного конфигурационного файла
# default: /etc

# data-dir (string)
#   местонахождение файлов языковых данных
# default: <prefix:lib/aspell-0.60> = /usr/lib/aspell-0.60

# dict-alias (список)
#   создание алиасов словаря

# dict-dir (string)
#   местонахождение главного списка слов
# default: <data-dir> = /usr/lib/aspell-0.60

# encoding (string)
#   ожидаемая кодировка данных
# default: !encoding = UTF-8

# filter (список)
#   добавление или удаление фильтра

# filter-path (список)
#   пути для поиска фильтров aspell

# mode (string)
#   режим фильтра
# default: url
# extra-dicts (список)
#   дополнительные используемые словари

# home-dir (string)
#   местонахождение личных файлов
# default: <$HOME|./> = /root

# ignore (integer)
#   игнорирование слов <= n символов
# default: 1

# ignore-case (boolean)
#   игнорирование регистра при проверке слов
# default: false

# ignore-repl (boolean)
#   игнорирование команд для сохранения заменяемых пар
# default: false

# keyboard (string)
#   определение клавиатуры для анализа опечаток
# default: standard

# lang (string)
#   код языка
# default: <language-tag> = ru_RU

# local-data-dir (string)
#   местонахождение файлов локальных языковых данных
# default: <actual-dict-dir> = /usr/lib/aspell-0.60/

# master (string)
#   базовое имя главного словаря
# default: <lang> = ru_RU

# normalize (boolean)
#   включение нормализации Уникода
# default: true

# norm-required (boolean)
#   для текущего языка требуется нормализация Уникода
# default: false

# norm-form (string)
#   тип нормализации Уникода: none, nfd, nfc, comp
# default: nfc

# norm-strict (boolean)
#   предотвр. преобразов. с потерями при нормализации
# default: false

# per-conf (string)
#   личный конфигурационный файл
# default: .aspell.conf

# personal (string)
#   имя файла личного словаря
# default: .aspell.<lang>.pws = .aspell.ru_RU.pws

# prefix (string)
#   префикс каталога
# default: /usr

# repl (string)
#   имя файла списка замен
# default: .aspell.<lang>.prepl = .aspell.ru_RU.prepl

# run-together (boolean)
#   признание допустимым слов run-together
# default: false

# run-together-limit (integer)
#   максимальное число, могущее быть завязанным вместе
# default: 2

# run-together-min (integer)
#   минимальная длина внутренних слов
# default: 3

# save-repl (boolean)
#   сохранение замененных пар при сохранении всего
# default: true

# set-prefix (boolean)
#   уст. префикса согласно местонахождению исп. файла
# default: true

# size (string)
#   размер списка слов
# default: +60

# sug-mode (string)
#   режим предложения
# default: normal

# sug-edit-dist (integer)
#   изменение исп. расстояния, перекрывает sug-mode
# default: 1

# sug-typo-analysis (boolean)
#   использов. анализа опечаток, перекрывает sug-mode
# default: true

# sug-repl-table (boolean)
#   использов. таблиц замены, перекрывает sug-mode
# default: true

# sug-split-char (список)
#   символы, вставляемые при разделении слова

# use-other-dicts (boolean)
#   использование личн., с замен. и сессион. словарей
# default: true

# variety (список)
#   доп. информация для списка слов

# warn (boolean)
#   включение предупреждений
# default: true

# affix-compress (boolean)
#   использование сжатия аффикса при создании словарей
# default: false

# clean-affixes (boolean)
#   удаление неверных аффиксов флагов
# default: true

# clean-words (boolean)
#   попытка очистить слова, чтобы они стали верными
# default: false

# invisible-soundslike (boolean)
#   вычисление soundslike по требованию вместо хранения
# default: false

# partially-expand (boolean)
#   частичное расшир. аффиксов для улучш. предложений
# default: false

# skip-invalid-words (boolean)
#   пропуск неверных слов
# default: true

# validate-affixes (boolean)
#   проверка правильности флагов аффиксов
# default: true

# validate-words (boolean)
#   проверка правильности слов
# default: true

# backup (boolean)
#   создание резервного файла добавлением ".bak"
# default: true

# byte-offsets (boolean)
#   смещения байтов вместо смещения символов
# default: false

# guess (boolean)
#   создание отсутствующих комбинаций корень/аффикс
# default: false

# keymapping (string)
#   клавиши режима проверки: "aspell" или "ispell"
# default: aspell

# reverse (boolean)
#   обратный порядок списка предложений
# default: false

# suggest (boolean)
#   предложение возможных замен
# default: true

# time (boolean)
#   время загрузки и время предложения в pipe-режиме
# default: false


#######################################################################
#
# Фильтр: html
#   фильтр для работы с документами HTML
#
# настроен следующим образом:

# f-html-check (список)
#   всегда проверяемые атрибуты HTML

# f-html-skip (список)
#   всегда пропускаемые теги HTML с содержимым

#######################################################################
#
# Фильтр: email
#   фильтр для пропуска цитируемого текста в сообщениях email
#
# настроен следующим образом:

# f-email-quote (список)
#   символы цитирования email

# f-email-margin (integer)
#   числа, что могут появляться перед цитированием
# default: 10


#######################################################################
#
# Фильтр: context
#   фильтр для обработки разделенных контекстов
#
# настроен следующим образом:

# f-context-delimiters (список)
#   разделители контекста (отделенные пробелами)

# f-context-visible-first (boolean)
#   меняет местами видимый и невидимый текст
# default: false

#######################################################################
#
# Фильтр: sgml
#   фильтр для работы с обычными документами SGML/XML
#
# настроен следующим образом:

# f-sgml-check (список)
#   всегда проверяемые атрибуты SGML

# f-sgml-skip (список)
#   всегда пропускаемые теги SGML с содержимым


#######################################################################
#
# Фильтр: tex
#   фильтр для работы с документами TeX/LaTeX
#
# настроен следующим образом:

# f-tex-check-comments (boolean)
#   проверка комментариев TeX
# default: false

# f-tex-command (список)
#   команды TeX

#######################################################################
#
# Фильтр: texinfo
#   фильтр для работы с документами Texinfo
#
# настроен следующим образом:

# f-texinfo-ignore (список)
#   Игнорируемые команды Texinfo для параметров

# f-texinfo-ignore-env (список)
#   Игнорируемые переменные окружения Texinfo


По команде:
aspell -l ru-yo dump master | aspell -l ru expand | tr ' ' '\n' > aspell_dump-ru-yo.txt

создаётся файл размерам 27 Мбайт со множеством русских слов.

Такое впечатление, что где то вместо проверки русских слов включена проверка английских, хотя я явно указываю что проверять нужно использую русский словарь.

Если кто знает в чём причина, помогите пожалуйста.
За помощь заранее благодарен!
« Последнее редактирование: 28 Июля 2016, 09:28:41 от Fray »

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6044
  • Рейтинг: 53
  • Пол: Мужской
    • fray@sysadminz.ru
    • lushikafu
    • lushikafu
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
не работает aspell, ispell
« Ответ #1 : 28 Июля 2016, 09:29:16 »
Вы не тот спойлер использовали, поправил с вашего позволения :)
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн v4567

  • Постоялец
  • ***
  • Сообщений: 105
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Харьков
не работает aspell, ispell
« Ответ #2 : 30 Июля 2016, 21:07:11 »
Никто не знает как мне помочь..
Подскажите хоть в каком направлении смотреть.
Несколько дней назад всё работало, особо ничего не делал, не пойму из-за чего перестала работать проверка орфографии.

Оффлайн v4567

  • Постоялец
  • ***
  • Сообщений: 105
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Харьков
не работает aspell, ispell
« Ответ #3 : 20 Августа 2016, 20:53:35 »
Проблему решил. Как говорится нарочно не придумаешь.
После того как разместил тему, несколько дней попытался решить проблему но не получилось. Потом было не до этого. Два дня назад всё таки ради принципа опять вернулся к ней.
У меня есть сервер на котором установлен aspell, проверил на нём и оказалось что всё работает. Посмотрел там версию aspell и она оказалась 0.60.6.1, а у меня была 0.60.6. Думал дело в ней, в общем менял бинарники, библиотеки, словари, локализацию но ничего не помогло, провозился целый день.
На следующий день решил использовать команду:
strace -xf -eopen -o <файл куда записывать вывод> <команда>

и посмотреть какие файл использует aspell, использует ли он вообще русскоязычные словари.

Немного надо сказать как у меня перестала работать эта проверка орфографии. Её я использую в редакторе mcedit. Как то на linux.org.ru был патч при помощи которого прикручивалась проверка орфографии. Выделяешь слово, потом в меню выбираешь проверку орфографии и если слово написано с ошибкой то появляется менюшка aspell заменить пропустить и т.д. В этой менюшки есть опция добавить и тогда проверяемое слово добавляется как правильно написанное.
Раньше проверка орфографии у меня работала, потом долго я ей не пользовался, и перед тем как возникла проблема мне она опять понадобилась. Я попытался проверить работает она или нет, создал файлик, в первой строчке написал абракадабру на латинице, во втором слово "акно" (правильно окно), в третьей строке опять абракадабру  на латинице. Проверяю, всё нормально работает. Потом ещё раз решил проверить, опять создал такой файлик и уже проверка орфографии не работала.
Так вот когда я при помощи команды strace посмотрел к каким файлам обращается aspell то оказалось что он смотрит на фалйы ~/.aspell.ru.prepl и ~/.aspell.ru.pws
Заглянув в файл aspell.ru.pws увмдел там слово "акно"
Оказывается в этот файл заносятся слова которые не надо проверять, то есть они написаны правильно. Удалил это слово и у меня всё заработало.
Что произошло: когда я первый раз проверял, то случайно занёс слово "акно" в этот файл как правильно написанное. При второй проверке я опять создал такой же файлик, первая строка абракадабра на латинице, вторая строка "акно", третья опять абракадабра на латинице, так как "акно" было занесено как правильное то оно и пропускалось при проверке.
При последующих проверках я опять создавал файлики с этим словом "акно". Если бы я написал другое слово, то увидел бы что всё работает.
 Вот так вот на ровном месте убил несколько дней если взять в общее время на решение этой проблемы, которой по сути и не было.