1

短いバージョン:
語幹のある単語がある場合:
Say 'comput' for 'computing', or 'sugari' for 'sugary'
最も近い名詞形を構築する方法はありますか?
That is 'computer', or 'sugar' respectively


より長いバージョン:
私は python と NLTK、Wordnet を使用して、一連の単語に対していくつかの意味的類似性タスクを実行しています。
ほとんどの sem-sim スコアは名詞に対してのみ有効であり、形容詞と動詞では結果が得られないことに気付きました。
関連する不正確さを理解して、単語を動詞/形容詞の形から名詞の形に変換したかったので、(通常形容詞で返される「NONE」の代わりに) 類似性の推定値を得ることができます。

これを行う 1 つの方法は、ステマーを使用してルート ワードを取得し、そのルートの最も近い名詞形を構築しようとすることだと思いました。ここ
からのGeorge-Bogdan Ivanovのアルゴリズムはかなりうまく機能します。別のアプローチを試してみたかったのです。単語を形容詞/動詞の形から名詞の形に変換するより良い方法はありますか?

4

2 に答える 2

1

wordnet最初にsynsetからすべての可能な候補を抽出します。次にdifflib、文字列をターゲット ステムと比較するために使用します。

>>> from nltk.corpus import wordnet as wn
>>> from itertools import chain
>>> from difflib import get_close_matches as gcm
>>> target = "comput"
>>> candidates = set(chain(*[ss.lemma_names for ss in wn.all_synsets('n') if len([i for i in ss.lemma_names if target in i]) > 0]))
>>> gcm(target,candidates)[0]

候補を計算するためのより人間が読みやすい方法は次のとおりです。

candidates = set()
for ss in wn.all_synsets('n'):
  for ln in ss.lemma_names: # get all possible lemmas for this synset.
    for lemma in ln:
      if target in lemma:
        candidates.add(target)
于 2013-06-26T10:00:31.450 に答える