Ich versuche, POS-Tagging mit ClassifierBasedPOSTagger
mit classifier_builder=MaxentClassifier.train
durchzuführen. Hier ist das Stück Code:Wie ändere ich die Anzahl der Iterationen im maximalen Klassifikator für das POS-Tagging in NLTK?
from nltk.tag.sequential import ClassifierBasedPOSTagger
from nltk.classify import MaxentClassifier
from nltk.corpus import brown
brown_tagged_sents = brown.tagged_sents(categories='news')
size = int(len(brown_tagged_sents) * 0.9)
train_sents = brown_tagged_sents[:size]
test_sents = brown_tagged_sents[size:]
me_tagger = ClassifierBasedPOSTagger(train=train_sents, classifier_builder=MaxentClassifier.train)
print(me_tagger.evaluate(test_sents))
Aber nach einer Stunde den Code ausgeführt wird, sehe ich, dass es immer noch die ClassifierBasedPOSTagger(train=train_sents, classifier_builder=MaxentClassifier.train)
initialisiert. In der Ausgabe, kann ich das folgende Stück Code Lauf sehen:
==> Training (100 iterations)
Iteration Log Likelihood Accuracy
---------------------------------------
1 -5.35659 0.007
2 -0.85922 0.953
3 -0.56125 0.986
denke ich, die Iterationen 100 sein werden, bevor der Klassifikator bereit ist, Teile der Sprache zu jedem Eingang zu markieren. Das würde den ganzen Tag dauern. Warum braucht es so viel Zeit? Und wird das Verringern der Iterationen diesen Code ein bisschen praktischer machen (was bedeutet, dass die Zeit reduziert wird und immer noch nützlich genug ist), und wenn ja, wie wird dann diese Iterationen verringert?
EDIT
Nach 1,5 Stunden, erhalte ich die folgende Ausgabe:
==> Training (100 iterations)
Iteration Log Likelihood Accuracy
---------------------------------------
1 -5.35659 0.007
2 -0.85922 0.953
3 -0.56125 0.986
E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\classify\maxent.py:1310: RuntimeWarning: overflow encountered in power
exp_nf_delta = 2 ** nf_delta
E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\classify\maxent.py:1312: RuntimeWarning: invalid value encountered in multiply
sum1 = numpy.sum(exp_nf_delta * A, axis=0)
E:\Analytics Practice\Social Media Analytics\analyticsPlatform\lib\site-packages\nltk\classify\maxent.py:1313: RuntimeWarning: invalid value encountered in multiply
sum2 = numpy.sum(nf_exp_nf_delta * A, axis=0)
Final nan 0.991
0.892155885577594
War der Algorithmus sollte 100 iterations
erhalten, wie in der ersten Zeile des Ausgangs und aufgrund des Fehlers angegeben hat es nicht? Und gibt es eine Möglichkeit, die Zeit für das Training zu reduzieren?
Können Sie mir sagen, wie viel Zeit benötigt dieser Code für die Ausführung auf Ihrem Computer? –
Wegen 'size = int (len (brown_tagged_sents) * 0.05)' dauerte es ungefähr 4-5 Minuten in meinem System. – RAVI
Es dauert ungefähr 1 Stunde in meinem System. Was kann das mögliche Problem sein? Ich habe später scipy installiert, als ich erfahren habe, dass Scipy und Numpy es schneller laufen lassen. Muss ich nach der Installation von scipy neu starten? –