https://github.com/silvermannn/cdplayer
https://github.com/silvermannn/cdplayer
c capi conceptual-dependency cpp edmonds-algorithm fuzzy-logic haskell haskell-ffi hidden-markov-model nlp rule-based-system viterbi-algorithm
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/silvermannn/cdplayer
- Owner: silvermannn
- License: mit
- Created: 2025-09-13T04:10:11.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-09-27T11:10:03.000Z (5 months ago)
- Last Synced: 2025-09-27T13:07:22.923Z (5 months ago)
- Topics: c, capi, conceptual-dependency, cpp, edmonds-algorithm, fuzzy-logic, haskell, haskell-ffi, hidden-markov-model, nlp, rule-based-system, viterbi-algorithm
- Language: Haskell
- Homepage:
- Size: 235 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CDPlayer
Обработка текста с использованием идей концептуальных зависимостей Р. Шенка
# Основные идеи и компоненты:
- Токенайзер - пока самый простой, разбиваем входное предложение по пробельным символам
- Словарь слов [OpenCorpora Dict](https://opencorpora.org)
- Таггер: HMM, тренированная на файлах CoNLLU, корпуса [отсюда](https://github.com/natasha/corus) -- C++
- Построение дерева зависимостей
- статистика из CoNLLU файлов (3D matrix *dependency head* -> *to* -> *dependency relation*)
- построение ориентированного графа из всех возможных зависимостей с весами из статистики
- нахождение минимального остовного дерева из искуственного корня, ([алгоритм двух китайцев](https://codeforces.com/blog/entry/20079), [Chu Liu Edmonds](https://en.wikipedia.org/wiki/Edmonds%27_algorithm) -- C++
- Дерево зависимостей (или построенное на его основе другое синтаксическое дерево) как запрос к базе данных концептуальных зависимостей -- Haskell
# TODO:
- Добавить в словарь основную форму слова, которая будет нужна для построения правил. Возможно это есть в xml варианте словаря [OpenCorpora Dict](https://opencorpora.org) и на [WikiData](https://www.wikidata.org)
- Добавить загрузку корпусов с [OpenCorpora Dict](https://opencorpora.org).
- Идея одновременного проставления тегов частей речи и построения дерев зависимостей:
- каждому слову сопоставляется список всех возможных тегов
- есть набор правил вида (направление поска, что является родителем, что является потомком, вес правила), которые, начиная с дерева с одним элементом "root", строят (несколько) деревьев зависимостей с одновременным тегорованием
- сами правила, в теории, можно написать вручную, но можно использовать эволюционный алгоритм для их нахождения