単語のセットV
が与えられたら、同義語をV
にグループ化したいと思います。私は入力としてV
を取り、同義性に基づいてそれらを自動的にクラスタリングする、NLTKとWordnetに組み込み関数があるかどうか疑問に思っています。NLTKとWordnetを使用した同義語のクラスタリング
私はすでに各単語の同義語を抽出する方法を知っていますが、これは私が探しているものではありません。私がそうした場合、シノニムセットが互いに交差しているか、お互いのサブセット/スーパセットになっているときに問題が複雑になり、競合を取り除く関数を書く必要があります。一例として、
は、のは、私は出力として取得したい何
V = ["good","constipate","bad","nice","defective","right","respectable","powerful"]
を考えてみましょうがされています。今、クラスタのサイズ/数に基づいて
[('constipate'), ('nice'), ('bad', 'defective'), ('good', 'powerful', 'respectable', 'right')]
、いくつかのセットがいくつかに分かれてありますセット、または組み合わせることができます。ここでは、V
という単語とその同義語をV
に入れています。
一切なしに定義がありません場合。あなたが望むクラスターの、より難しい問題です。 – alvas
@alvasいいえ、私がnoを設定した場合。このクラスタリングを行う機能はありますか? – user5996916
はい、k-meansを使うことができますが、まずsynset-lemma distanceに基づいてword - > synsets - > synset distance - > clusterから得る必要があります。それは自明ではない。大きなコーパスがあれば、word2vecやLDAをgensimで行う方が簡単です。 – alvas