Ответы пользователя по тегу Автоматизация обработки текста
  • Как алгоритмически сгенерировать правильный словарь-фигарь?

    qmax
    @qmax
    программер
    Upd. В общем, алгоритм должен быть такой:
    1. во-первых, выделить заменяемую часть (основу или корень)
    "однояйцевый" -> 'одно' + "яйц" + 'ев' + 'ый'
    "переплаченный" -> 'пере' + "плач" + 'енн' + 'ый'
    "гидроэлектростанция" -> 'гидро' + 'электро' + "станц" + 'ия'

    Есть алгоритм стемминга для отделения окончаний: snowball.tartarus.org
    Думаю, его можно переделать для приставок.
    В случае подразумеваегого слова в один слог особого смысла заморачиваться с аффиксами нету, достаточно отделить приставки и добавочные корни по шаблону /многобукв/ + "о"

    2. транслировать то, что получилось в фонемы.
    Правила чтения русского языка - это около 100 шаблоновых правил, они нагугливаются табличкой.
    Конкретно для подразумеваемого слова, скорее всего понадобится только раскрытие йе, йо, йу, йа)
    "яйц" -> "йайц"

    3. зашаблонить фонетику по категориям фонем: согласная, гласная, й.
    Может быть, выделить - шипящие/сонорные. Но думаю, достаточно будет выделить сочетания типа "бр" "пр" "мн" "тль", которые ведут себя как целая единица при слогоделении или переносах.

    4. Начало заменяемой части, соответствующую какому-то шаблону, заменить на подсавной корень.
    Для слова "гой" (С=согл, А=гласн, Й=й): /^С+/, /^.*?Й/ (все согласные или всё до первой "й")
    "йайц" -> "гойайц"
    "плач" -> "гойач"
    "станц" -> "гойанц"
    "айпад" -> "гойпад"
    "район" -> "гойон"

    5. свернуть всё обратно в буквы
    "гойайц" -> "гояйц"
    "гойач" - > "гояч"
    "гойанц" -> "гоянц"

    6. собрать обратно оторванные компоненты
    Однозначных правил написания по фонетике для русского не существует, но, опятьже, наверняка будет достаточно сворачивания "йе" "йо "йу" на стыках.
    'одно' + "яйц" + 'ев' + 'ый' -> "одногояйцевый"
    'пере' + "плач" + 'енн' + 'ый' -> "перегояченный"
    'гидро' + 'электро' + "станц" + 'ия' -> "гидроэлектрогоянция"

    Основной, четвёртый, пункт, конечно, сильно зависит от самого слова и представлений о благозвучности, но общий смысл и пространство экспериментирования, думаю, ясно.

    Если хочется сохранения стихотворного размера, то нужно сохранять количество гласных (заменять только первый слог или его часть)

    Если хочется сохранения стихотворного ритма, то нужно сохранять ударения. А тут в русском такая лютейшая засада, что проще забить, чем пытаться даже разобраться (около 100 печатных страниц научным языком). Темболее, что слова будут получатя в основном несущствующие.
    Ответ написан
    1 комментарий