Help us understand the problem. What is going on with this article?

日本語文章のクレンジング処理

More than 1 year has passed since last update.

概要

日本語文章を形態素解析にかける時、文章内にあるスペースや句読点、HTMLタグ等が解析の邪魔をする。
そのため、クレンジング処理をかけて、形態素解析に必要な情報だけ残す。

実行環境

OS: Windows 7
言語: Java

目次

1.HTMLタグ消し
2.全角半角の統一
3.記号の削除

1.HTMLタグ消し

<td><tr>

HTMLのタグが残っていると、中身の「td」「tr」等が単語として認識される場合があるため、削除する。
削除後の文章をくっつけてしまうと、変な単語ができる可能性があるため、単語の切れ目の記号(ここでは「/」)をつける。

sample
Pattern.compile("<.*?>").matcher(sentence).replaceAll("/");

例:<tr><td>第1巻</td><td>物体の運動について</td>;
⇒//第1巻//物体の運動について/

2.全角半角の統一

AabB12345アイウエオカキクケコ

アルファベットの全角半角、数字の全角半角、カタカナの全角半角が混在する文章は、データとしても見た目としても良くないため、どちらかに統一させる。

sample
Normalizer.normalize(sentence, Normalizer.Form.NFKC);

java6から使えるNormalizerが便利
上記の処理で、
・全角アルファベット⇒半角アルファベット
・全角数字⇒半角数字
・半角カタカナ⇒全角カタカナ
へ変換できる。(記号も全角から半角へ変換される)

例:AabB12345アイカキ
⇒AabB12345アイカキ

3.記号、スペースの削除

今日 何を すればいいのか。。

文章にスペースが残っていると形態素解析時に単語の切れ目として認識しない。
「。」など頻繁に表れる記号は形態素解析時にノイズになりやすい。
タグの処理と同様に削除後の文章をくっつけてしまうと、変な単語ができる可能性があるため、単語の切れ目の記号をつける。

sample
Pattern.compile("[\\p{Punct}!”#$%&’()=~|‘{+*}<>?_-^¥@「;:」、。・  ]+").matcher(sentence).replaceAll("/");

例:今日 何を すればいいのか。。
⇒今日/何を/すればいいのか/

※ \\p{Punct}は句読文字: !"#$%&'()*+,-./:;<=>?@[]^_`{|}~のいずれかを示す。
※ 記号は闇が深く、この処理方法では一般的に文章内に現れる記号のみ対応している。

参考資料:https://www.slideshare.net/tsudaa/ss-36658329
http://qiita.com/kasei-san/items/3ce2249f0a1c1af1cbd2

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした