HTML to TEXT for NLP

Nov 4, 2016   #Python  #NLP 

概要

「HTMLからテキストを取り出す」というタスクは、一見簡単の様で難しい。
特に、後続するテキスト処理(文分割や形態素解析、構文解析)を上手くしようとすると難しい。
ここでは、英語文書に対して、ナイーブなルールで、テキスト抽出をそこそこ上手くやる方法を紹介する。

はじめに

この記事では、Github上で公開している実装の簡単な紹介をする1

使い方は、以下のようにコマンドラインツールとして使ったり、

python3 html2text.py https://example.com > example.com.txt

Pythonを通して利用できる。

$ python3
>>> import html2text
>>> html = html2text.url2html('https://example.com')
>>> bodyhtml = html2text.html2body(html)
>>> text = html2text.html2text(bodyhtml)

実装

スペースの統一

タブ文字、NBSP\xa0等を半角スペースに置換する。 NBSPは、よく構文解析などが例外を吐くので注意。

ブロックタグ削除の影響

foo.</p><p>barの様なケースでは、単に削除すると、foo.barとなり、TokenizeやSentence segmentationで失敗する原因になる。またfoo.</div>barの様なケースもあるので、単にブロックタグの連接だけでなく、ブロックタグの直後に空白や改行無しに、文字が連接するかをチェックする必要がある。
ここでは、前者に対しては改行、後者に対してはスペースを挿入することで対処している。

タグ削除による影響

ブロックタグに限らず、CSSでblockやinline-block等をしていしているインラインタグでも、同種の影響がでる。現状では対処できていない。

参考

関連記事