No description
- Go 100%
| chunker.go | ||
| chunker_test.go | ||
| coverage.out | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
| types.go | ||
| utils.go | ||
go-doc-chunker
Библиотека на Go для разбиения Markdown (.md, .mdx) и plain text (.txt) документов на семантически значимые фрагменты (чанки).
Установка
go get git.ymnuktech.ru/ymnuk/go-doc-chunker
Использование
import "git.ymnuktech.ru/ymnuk/go-doc-chunker"
func main() {
p := chunker.NewParser()
chunks, err := p.Parse("doc.md", content, mtime)
if err != nil {
// обработка ошибки
}
for _, c := range chunks {
fmt.Printf("Секция: %s\nТекст: %s\n", c.SectionPath, c.Text)
}
}
Возможности
- Парсинг Markdown — учитывает иерархию заголовков, строит путь секции (например,
Глава 1 > Раздел 1.1) - Парсинг plain text — разделяет по пустым строкам, каждая часть обрабатывается как абзац
- Объединение чанков — маленькие абзацы в одной секции объединяются, пока не превысят
MaxChunkSize - Принудительное разбиение — текст больше
MaxChunkSizeделится по границам слов с настраиваемым перекрытием (OverlapRatio) - Настраиваемые параметры —
MaxChunkSize(по умолчанию 1400 рун) иOverlapRatio(по умолчанию 0.15) - UTF-8 — все расчёты размера идут по рунам, безопасно для CJK, кириллицы и т.д.
API
Типы
Chunk— фрагмент с путём к файлу, путём секции, текстом, смещениями строк/символов и временем модификацииParser— основной парсер с полямиMaxChunkSizeиOverlapRatio
Функции
NewParser()— создаёт парсер с конфигурацией по умолчанию (1400, 0.15)NewParserWithConfig(maxChunkSize int, overlapRatio float64)— создаёт парсер с пользовательской конфигурацией(*Parser).Parse(filePath string, content []byte, mtime int64) ([]*Chunk, error)— парсит содержимое и возвращает чанки
Поддерживаемые форматы
| Расширение | Парсер |
|---|---|
.md |
Markdown (через goldmark) |
.mdx |
Markdown (через goldmark) |
.txt |
Plain text |
Лицензия
MIT