NLP | Klassifikatorbasiertes Tagging
ClassifierBasedPOSTagger-Klasse :
- Es ist eine Unterklasse von ClassifierBasedTagger, die Klassifikationstechniken verwendet, um Teil-der-Sprache-Markierungen durchzuführen.
- Aus den Wörtern werden Merkmale extrahiert und dann an einen internen Klassifizierer übergeben.
- Es klassifiziert die Funktionen und gibt eine Bezeichnung zurück, dh ein Teil-der-Sprache-Tag.
- Der Feature-Detektor findet Suffixe mit mehreren Längen, führt einige Übereinstimmungen mit regulären Ausdrücken durch und überprüft den Unigramm-, Bigram- und Trigram-Verlauf, um einen ziemlich vollständigen Satz von Features für jedes Wort zu erstellen
Code 1: Verwenden von ClassifierBasedPOSTagger
from
nltk.tag.sequential
import
ClassifierBasedPOSTagger
from
nltk.corpus
import
treebank
train_data
=
treebank.tagged_sents()[:
3000
]
test_data
=
treebank.tagged_sents()[
3000
:]
tagging
=
ClassifierBasedPOSTagger(train
=
train_data)
a
=
tagging.evaluate(test_data)
(
"Accuracy : "
, a)
Ausgabe :
Genauigkeit: 0,9309734513274336
Die ClassifierBasedPOSTagger-Klasse erbt von ClassifierBasedTagger und implementiert nur eine feature_detector() -Methode. Das gesamte Training und Tagging erfolgt in ClassifierBasedTagger.
Code 2: Verwenden von MaxentClassifier
from
nltk.classify
import
MaxentClassifier
from
nltk.corpus
import
treebank
train_data
=
treebank.tagged_sents()[:
3000
]
test_data
=
treebank.tagged_sents()[
3000
:]
tagger
=
ClassifierBasedPOSTagger(
train
=
train_sents, classifier_builder
=
MaxentClassifier.train)
a
=
tagger.evaluate(test_data)
(
"Accuracy : "
, a)
Ausgabe :
Genauigkeit: 0,9258363911072739
Erkennungsfunktionen für benutzerdefinierte Feature-Detektoren
Es gibt zwei Möglichkeiten:
- Unterklasse ClassifierBasedTagger und implementieren Sie eine feature_detector() -Methode.
- Übergeben Sie bei der Initialisierung eine Funktion als Schlüsselwortargument feature_detector an ClassifierBasedTagger.
Code 3: Benutzerdefinierter Funktionsdetektor
from
nltk.tag.sequential
import
ClassifierBasedTagger
from
tag_util
import
unigram_feature_detector
from
nltk.corpus
import
treebank
train_data
=
treebank.tagged_sents()[:
3000
]
test_data
=
treebank.tagged_sents()[
3000
:]
tag
=
ClassifierBasedTagger(
train
=
train_data,
feature_detector
=
unigram_feature_detector)
a
=
tagger.evaluate(test_data)
(
"Accuracy : "
, a)
Ausgabe :
Genauigkeit: 0,8733865745737104