1

文章(テキストリスト)とそのPOSタグ(POSリスト)の大きなセット(36k文)があり、編集距離/編集番号を使用してPOSリストの要素をグループ化/クラスタ化したいとします:文章を編集距離でグループにまとめるには?

(例えばSentx POSタグ= [CC DT VBZ RB JJ]、Senty POSタグ= [CC DT VBZ RB JJ])、クラスタの編集距離= 0である

一方([CCのDT VBZ RBのJJ] 、[CC DT VB RB JJ])はクラスタ編集距離= 1です。

私はクラスタリングアルゴリズムの仕組みを理解していますが、Pythonでこのような問題にアプローチする方法と、データ構造にクラスターを格納して簡単に取り出せるようにする方法が混乱します。

私は行列を作成しようとしましたが(コーパス内のすべてのセンテンスで各センテンスの距離を測定しました)、処理するのに非常に時間がかかります。

+2

https://cs.stackexchange.comで質問する価値があるかもしれませんが、これはプログラミングに関する質問ではなく、アルゴリズム設計に関する質問です。あなたがクラスタリングアルゴリズムを研究する必要があるように思えます。ブルートフォースは言語が何であっても常に遅すぎるでしょう。 –

答えて

0

限られたPOSタグがあります。

編集距離を使用するのではなく、のPOS-POS類似度行列を計算します。この行列を必要に応じて編集することもできます。 2つのPOSタグを効果的に同じにするか、2つのタグの差を大きくすることができます。

これをnumpy配列に格納して、すべてのベクトルをインデックスに変換し、そのルックアップテーブルを使用して類似性を計算します。パフォーマンス上の理由から、可能であればnumpyを使用し、Python インタプリタが非常に遅いため、パフォーマンス重視のコードをcythonで記述してください。

関連する問題