I NLTK des RegexpParser
zu Chunk eine Nominalphrase bin mit, die ich mit einer Grammatik alsNLTK RegexpParser, Satz Brocken mit genau einem Element passend
grammar = "NP: {<DT>?<JJ>*<NN|NNS>+}"
cp = RegexpParser(grammar)
Das ist großartig, es ist passend zu einer Nominalphrase als :
- DT wenn es vorhanden ist
- JJ in jeglicher Anzahl
- NN oder NNS mindestens ein
Nun, was ist, wenn ich will, das Gleiche passen, aber die was Zahl für JJ in man nur verwandelt zu haben? Also ich möchte DT, wenn es existiert, eins JJ und 1+ NN/NNS. Wenn es mehr als einen JJ gibt, möchte ich nur einen von ihnen, den am nächsten zum Nomen (und DT, wenn es gibt, und NN/NNS).
Die Grammatik
grammar = "NP: {<DT>?<JJ><NN|NNS>+}"
nur passen würde, wenn es nur eine JJ ist, die Grammatik
grammar = "NP: {<DT>?<JJ>{1}<NN|NNS>+}"
die ich dachte, würde die typical Regexp patterns gegeben arbeiten, wirft ein Valueerror.
Zum Beispiel, in "Dieser schöne grüne Rock" möchte ich "Dieser grüne Rock" klumpen.
Also, wie würde ich fortfahren?
Grammatik = "NP: {?
Weil es in Ihrem Beispiel 2 JJs gibt. Sie sagten - "Ich möchte DT, wenn es existiert, ein JJ und 1 + NN/NNS." – RAVI
@RAVI, sieht aus, als ob du genau richtig liegst, das erklärt das Problem. Sie sollten es in eine Antwort erweitern, die das OP akzeptieren kann. – alexis