Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【自然言語処理】頻出フレーズを抽出するアプローチについて

解決したいこと

任意の日本語の文章から、頻出するフレーズを抽出したいと思っており、どういった手法が良いかを模索しています。
実験・探求していきたいというよりかは、便利なライブラリがあれば使っていきたいというスタンスです。

「頻出する単語」であれば、形態素解析してカウントすれば終わりですが、ここでいう「頻出するフレーズ」とは、「頻出する、単語の連なり」となります。

Web上で見つけたのは、gensimのPhrasesを使うというアプローチです。(下記ページ参考)

ただ、他にもし良いアプローチがありましたら、ご教示いただけますと幸いです。

現状、形態素解析には、Sudachiをメインに使用しており、その関係で、GiNZA・spaCyを使ってでもできるのかなぁ?とも思っております。

3

少々変わったアプローチかもしれませんが、sentencepieceを使うのはいかがでしょうか?

sentencepieceであれば、形態素の考え方ではないので、よく現れるフレーズであればまとめて1つのトークンとして認識します。学習もテキストファイルだけ用意すれば良いし、前処理不要、高速で学習してくれるので、とても扱いやすいです。
sentencepieceを学習するときのvocab sizeが小さすぎるとユニグラム的に分割されてしまうかもしれないので、元のコーパスの量と相談になるかと思います。

sentencepieceを学習すればモデルファイルと一緒にvocabファイルも生成されて、vocabファイルは上から頻出したトークンの順番だったと思います。
先日発表されたrinna社のRoBERTaモデルのtokenizerもsentencepieceで学習されており、公式リポジトリのvocabファイルをスクロールすると、形態素より大きなかたまりをトークン(フレーズ)として抽出しています。

2Like

Your answer might help someone💌