0

I have a dataset with annotations in the form: <Word/Phrase, Ontology Class>, where Ontology Class can be one of the following {Physical Object, Action, Quantity}. I have created this dataset manually for my particular ontology model from a large corpus of text.

Because this process was manual, I am sure that I may have missed some words/phrases from my corpus. If such is the case, I am looking at ways to automatically extract other words from the same corpus that have the "characteristics" as these words in the labeled dataset. Therefore, the first task is to define "characteristics" before I even go with the task of extracting other words.

Are there any standard techniques that I can use to achieve this?

EDIT: Sorry. I should have mentioned that these are domain-specific words not found in WordNet.

4

2 に答える 2

1

NLTK本の第6章をご覧ください。あなたが説明したことから、特徴(「特性」)抽出に基づく教師あり分類手法が良い選択であるように思われます。本から:

分類器は、各入力の正しいラベルを含むトレーニングコーパスに基づいて構築されている場合、監視対象と呼ばれます。

手動でエンコードしたデータの一部を使用して、分類器をトレーニングできます。次のようになります。

def word_features(name):
    features = {}
    features["firstletter"] = name[0].lower()
    features["lastletter"] = name[-1].lower()
    for letter in 'abcdefghijklmnopqrstuvwxyz':
        features["count(%s)" % letter] = name.lower().count(letter)
        features["has(%s)" % letter] = (letter in name.lower())
    return features

次に、すでにタグ付けしたデータのいくつかで分類器をトレーニングできます。

>> words = [('Rock', 'Physical Object'), ('Play', 'Action'), ... ]
>>> featuresets = [(word_features(n), g) for (n,g) in words]
>>> train_set, test_set = featuresets[500:], featuresets[:500]
>>> classifier = nltk.NaiveBayesClassifier.train(train_set)

おそらく、すでにタグ付けしたデータの半分でトレーニングする必要があります。そうすれば、残りの半分で分類器の精度をテストできます。分類器の精度が希望どおりになるまで、機能の作業を続けます。

nltk.classify.accuracy(classifier, test_set)

次のように個々の分類を確認できます。

classifier.classify(word_features('Gold'))

NLTKに慣れていない場合は、前の章も読むことができます。

于 2012-07-14T00:49:41.943 に答える
1

jfocht が言ったように、これを行うには分類子が必要です。分類器をトレーニングするには、特徴とその分類を含む「モノ」のトレーニング データのセットが必要です。次に、機能を備えた新しい「もの」をフィードして、分類を取得できます。

ここでのキッカーは、機能はなく、言葉だけがあるということです。1 つのアイデアは、洗練された辞書である WordNet を使用して、単語の定義から特徴を生成することです。WordNet の最も優れた機能の 1 つは、単語の階層があることです。

cat -> animal -> living thing -> thing ....

階層に従うだけでこれを行うことができるかもしれませんが、それができない場合は、そこから機能を追加してトレーニングすることができます。これは、単語自体を機能として使用するよりもはるかにうまく機能する可能性があります。

Wordnet が役立つかどうかに関係なく、分類器をトレーニングするための機能セットが必要です。また、分類されていないすべてのデータにそれらの機能でラベルを付ける必要もあります。手作業で行う作業が少なくなる

于 2012-07-14T01:37:33.103 に答える