Spacy enthält die noun_chunks
Funktionalität zum Abrufen von Noun -Phrases. Die Funktion english_noun_chunks
(im Anhang unten) verwendet word.pos == NOUN
Spacy NLP - Chunking mit regulären Ausdrücken
def english_noun_chunks(doc):
labels = ['nsubj', 'dobj', 'nsubjpass', 'pcomp', 'pobj',
'attr', 'root']
np_deps = [doc.vocab.strings[label] for label in labels]
conj = doc.vocab.strings['conj']
np_label = doc.vocab.strings['NP']
for i in range(len(doc)):
word = doc[i]
if word.pos == NOUN and word.dep in np_deps:
yield word.left_edge.i, word.i+1, np_label
elif word.pos == NOUN and word.dep == conj:
head = word.head
while head.dep == conj and head.head.i < head.i:
head = head.head
# If the head is an NP, and we're coordinated to it, we're an NP
if head.dep in np_deps:
yield word.left_edge.i, word.i+1, np_label
Ich mag Brocken von einem Satz erhalten, die einen regulären Ausdruck erhalten. Zum Beispiel, I Phrase von null oder mehr Adjektive gefolgt von einem oder mehreren Substantiven.
{(<JJ>)*(<NN | NNS | NNP>)+}
Ist es möglich, w/o die english_noun_chunks
Funktion überschreiben?
Was ist mit der Tatsache, dass diese Funktion von Cython in C übersetzt wird? – Serendipity
Sie haben Recht, diese Datei hat '.pyx' Erweiterung und Sie werden etwas Leistung verlieren, wenn Sie es umschreiben. Aber müssen Sie es neu schreiben oder Sie könnten einfach Endergebnisse filtern? –