私は見出し語処理モジュールを探しています/ libのように文を転送します:
は、「これは良いである」に「これは偉大があります」。Pythonの:言語的正規化
私は、このような語幹や見出し語処理などNLTKで利用可能なツールのいくつかに精通よ、しかし、それは私が私の目標は、同じことを言って、さまざまな方法を最小限にすることである
を探しているまさにではありません。
私は見出し語処理モジュールを探しています/ libのように文を転送します:
は、「これは良いである」に「これは偉大があります」。Pythonの:言語的正規化
私は、このような語幹や見出し語処理などNLTKで利用可能なツールのいくつかに精通よ、しかし、それは私が私の目標は、同じことを言って、さまざまな方法を最小限にすることである
を探しているまさにではありません。
これにはいくつかの方法があります。
1)あらかじめ定義された同義語のセットを使用して、WordNetのような単語を置き換えることができます。 nltk
パッケージを使用してWordNetコーパスを使用することができます。
nltkのドキュメントには、よく説明されているthisの例があります。
このアプローチでは、事前定義された同義語のみがカバーされ、使用しているデータと同様の概念は「学習」されません。例えば、クレーンは車両または鳥であり得る。
2)別の方法は、コーパス内の単語の使用法と同様の概念を識別するLSAを使用することです。
テキストを単語のベクトル(コーパス内のすべての単語)と考えると、ベクトルはV次元です。ここでVはコーパス内のユニークワードの総数です。意味は、あなたが解決しようとしている問題は次元削減です。 LSAは次元削減に適しています。
LSAについての詳細はwikipediaをご覧ください。
sklearn's TruncatedSVD classを使用してLSAメソッドを使用できます。
これはもう少し実験的ですが、別の可能性は単語埋め込みを使用することです。
言葉素晴らしいと良いはそのベクトルが類似していなければならないので、あなたがそのようなあなたの言葉をクラスタ化し、同じ単語/概念にそれらを集約し、同様の発生状況を持っている必要があります。
もちろん、これは埋め込みを生成するために使用するコーパスとメソッドに大きく依存します。
コレクションが十分に大きい場合は、LSAとは対照的にword2vecなどの単語埋め込みを調べます –