17

Python nltk モジュールと naivebayes 分類子を使用して、テキストのスニペットを分類するプロジェクトに取り組んでいます。コーパス データでトレーニングし、別のデータ セットを分類することはできますが、初期トレーニング後に追加のトレーニング情報を分類器にフィードしたいと考えています。

私が間違っていなければ、NaiveBayesClassifier.train メソッドがトレーニング データの完全なセットを取得するという点で、これを行う方法はないようです。元の機能セットをフィードせずにトレーニング データに追加する方法はありますか?

時間の経過とともに新しいトレーニング データを受け入れることができる他の分類子を含む提案を受け入れます。

4

3 に答える 3

8

私が知っている2つのオプションがあります:

1) 新しいデータで分類器を定期的に再トレーニングします。コーパス (元のトレーニング データが既に含まれている) に新しいトレーニング データを蓄積し、数時間ごとに分類器を再トレーニングしてリロードします。これはおそらく最も簡単な解決策です。

2) 内部モデルを外部化し、手動で更新します。は、とNaiveBayesClassifierを指定することで直接作成できます。これらを個別に作成して に渡し、新しいデータが入ってくるたびに更新することができます。分類器はこの新しいデータをすぐに使用します。確率分布を更新する方法の詳細については、メソッドを確認する必要があります。label_prodistfeature_probdistNaiveBayesClassifiertrain

于 2011-02-05T18:58:58.383 に答える
0

私はNLTKを学んでいるので、間違っている場合は修正してください。これは NLTK の Python 3 ブランチを使用しているため、互換性がない可能性があります。

トレーニング データに追加するように見えるインスタンスupdate()へのメソッドがあります。NaiveBayesClassifier

from textblob.classifiers import NaiveBayesClassifier

train = [
    ('training test totally tubular', 't'),
]

cl = NaiveBayesClassifier(train)
cl.update([('super speeding special sport', 's')])

print('t', cl.classify('tubular test'))
print('s', cl.classify('super special'))

これは出力します:

t t
s s
于 2014-03-24T03:57:28.453 に答える