web-dev-qa-db-ja.com

マークダウンの単語数?

コマンドラインを使用して、Markdown(またはより適切にはPandoc Markdown)の自然言語の単語数を取得する方法はありますか? wcを使用して非常に大まかな見積もりを取得することは可能ですが、wcは単純であり、空白で囲まれたものはすべてWordとしてカウントされます。これには、ヘッダーの書式設定、箇条書き、リンク内のURLなどが含まれます。

理想的なのは、すべてのマークダウンフォーマット(可能であればPandocの引用を含む)を削除し、それをwcに渡すことですが、pandocプレーンテキスト出力フォーマットには、まだ多くのマークダウンスタイルが含まれています。

7
naught101

そのための新しいluaフィルターがあります: https://pandoc.org/lua-filters.html#counting-words-in-a-document

次のコードを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を呼び出します。

pandoc --lua-filter wordcount.lua myfile.md
3
DG'

やや手動の解決策:

  1. pandocを使用して、マークダウンファイルをMS Wordドキュメントに変換します(*.docx)またはOpenOffice/LibreOffice Writerドキュメント(*.odt
  2. そのドキュメントをLibreOfficeで開きます1
  3. すべてを選択します(ctrl+a
  4. メニュー Tools>>Word Count

1 OpenOfficeはおそらく同じように動作しますが、私はそれをテストしていません。

1
das-g

私は同じ課題に直面していました、そして私はそれのために Pythonスクリプト を書きました。特殊文字とMarkdown/HTML要素を削除し、残りの単語をカウントします!

0
gandreadis