Количество слов для уценки?
Есть ли способ получить количество слов слов естественного языка в Markdown (или, лучше, Pandoc Markdown), через командную строку? Можно просто использовать wc
чтобы получить очень грубую оценку, но wc
наивно и считает словом все, что окружено пробелами. Это включает в себя такие вещи, как форматирование заголовка, маркеры и URL-адреса в ссылках.
То, что было бы идеально, было бы удалить все форматирование уценки (включая цитаты Пандока, если это возможно), а затем передать это через wc
, но я не могу найти способ сделать это, так как pandoc
Формат вывода открытого текста по-прежнему включает множество стилей уценки.
3 ответа
Для этого есть новый фильтр lua: https://pandoc.org/lua-filters.html
Сохраните следующий код как wordcount.lua
-- counts words in a document
words = 0
wordcount = {
Str = function(el)
-- we don't count a word if it's entirely punctuation:
if el.text:match("%P") then
words = words + 1
end
end,
Code = function(el)
_,n = el.text:gsub("%S+","")
words = words + n
end,
CodeBlock = function(el)
_,n = el.text:gsub("%S+","")
words = words + n
end
}
function Pandoc(el)
-- skip metadata, just count body:
pandoc.walk_block(pandoc.Div(el.blocks), wordcount)
print(words .. " words in body")
os.exit(0)
end
и позвоните Пандоку так:
pandoc --lua-filter wordcount.lua myfile.md
Несколько ручное решение:
- использование
pandoc
преобразовать файл уценки в документ MS Word (*.docx
) или документ OpenOffice/LibreOffice Writer (*.odt
) - открыть этот документ в LibreOffice1
- выбрать все (Ctrl+A)
- Инструменты меню>Количество слов
1 OpenOffice, вероятно, будет работать так же, но я этого не проверял.