正規表現による「っ」を含むトークンの修正

quantedaのICUに基づく日本語の分かち書きはだいたいうまく行くけれど、「持った」「言った」「踊った」などの「っ」を含む文は苦手なようです。 以下のMecabの形態素解析によれば「持っ」と「言っ」となるべきですが、ICUだと「って」と「 っ 」という意味をなさないトークンが生成されてしまいます。 そこで思いついたのが、 tokens_compound()とtokens_split()を使ってトークンを修正する方法です。前者は昔からある関数ですが、後者は比較的新しい関数で、前者の反対の処理をします。この方法だと、まず、 tokens_split()で 「 っ 」を単体のトークンとし、 tokens_compound() で前に出てくる漢字のトークンと結合します。結果として、Mecabによる分かち書きと同一なトークンを得ることができました。 この方法だと、 tokens_split() が 「 っ 」 を含むけれど、関係のないトークンを破壊する恐れがありますが、だいたいの文書では問題にならないでしょう。また、この二つの関数は、C++で並列化してあるので、 処理速度も早いと思います。

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top