4

nltk を使用して、コンテキストなしで特定の単語の最も可能性の高い品詞タグを特定する簡単な方法はありますか? または、他のツール/データセットを使用していない場合。

wordnet を使用しようとしましたが、sysnet が尤度順になっていないようです。

>>> wn.synsets('says')

[Synset('say.n.01'), Synset('state.v.01'), ...]
4

1 に答える 1

6

コンテキストなしでタグ付けを試みたい場合は、ある種のユニグラム タガー、別名 を探していますlooup taggerユニグラム タガーは、指定された単語のタグの頻度のみに基づいて単語にタグを付けます。したがって、コンテキストヒューリスティックを回避しますが、タグ付けタスクにはデータが必要です。また、ユニグラムの場合は、トレーニングするために注釈付きデータが必要です。lookup taggernltk チュートリアルhttp://nltk.googlecode.com/svn/trunk/doc/book/ch05.htmlを参照してください。

以下は、ユニグラムタガーをトレーニング/テストする別の方法です。NLTK

>>> from nltk.corpus import brown
>>> from nltk import UnigramTagger as ut
>>> brown_sents = brown.tagged_sents()
# Split the data into train and test sets.
>>> train = int(len(brown_sents)*90/100) # use 90% for training
# Trains the tagger
>>> uni_tag = ut(brown_sents[:train]) # this will take some time, ~1-2 mins
# Tags a random sentence
>>> uni_tag.tag ("this is a foo bar sentence .".split())
[('this', 'DT'), ('is', 'BEZ'), ('a', 'AT'), ('foo', None), ('bar', 'NN'), ('sentence', 'NN'), ('.', '.')]
# Test the taggers accuracy.
>>> uni_tag.evaluate(brown_sents[train+1:]) # evaluate on 10%, will also take ~1-2 mins
0.8851469586629643

wordnet にはまだエントリがない非常に多くの単語があるため、投稿タグ付けに WordNet を使用することはお勧めしません。しかし、ワードネットでレンマ頻度を使用する方法を見ることができます。NLTK で synset のワードネットセンス頻度を取得する方法を参照してください。. これらの頻度は、SemCor corpus ( http://www.cse.unt.edu/~rada/downloads.html )に基づいています。

于 2013-09-25T09:03:56.930 に答える