Ich versuche, Stocksymbole zu den Strings als ORG-Entitäten erkannt hinzuzufügen. Für jedes Symbol, das tue ich:Wie füge ich neue Entity (ORG) Instanzen in spacy nlp
nlp.matcher.add(symbol, u'ORG', {}, [[{u'orth': symbol}]])
ich sehen kann, dass dieses Symbol auf die Muster hinzugefügt wird:
print "Patterns:", nlp.matcher._patterns
aber alle Symbole, die nicht erkannt wird nicht erkannt wurden, werden nach der Zugabe vor der Zugabe. Offensichtlich existieren diese Token bereits im Vokabular (deshalb ändert sich die Vokabellänge nicht).
Was soll ich anders machen? Was vermisse ich? Hier
Dank
ist mein Beispielcode:
"kurzen Ausschnitt Börsenticker-Symbole als ORG Einheiten zu üben Hinzufügen"
from spacy.en import English
import spacy.en
from spacy.attrs import ORTH, TAG, LOWER, IS_ALPHA, FLAG63
import os
import csv
import sys
nlp = English() #Load everything for the English model
print "Before nlp vocab length", len(nlp.matcher.vocab)
symbol_list = [u"CHK", u"JONE", u"NE", u"DO", u"ESV"]
txt = u"""drive double-digit rallies in Chesapeake Energy (NYSE: CHK), (NYSE: NE), (NYSE: DO), (NYSE: ESV), (NYSE: JONE)"""# u"""Drive double-digit rallies in Chesapeake Energy (NYSE: CHK), Noble Corporation (NYSE:NE), Diamond Offshore (NYSE:DO), Ensco (NYSE:ESV), and Jones Energy (NYSE: JONE)"""
before = nlp(txt)
for tok in before: #Before adding entities
print tok, tok.orth, tok.tag_, tok.ent_type_
for symbol in symbol_list:
print "adding symbol:", symbol
print "vocab length:", len(nlp.matcher.vocab)
print "pattern length:", nlp.matcher.n_patterns
nlp.matcher.add(symbol, u'ORG', {}, [[{u'orth': symbol}]])
print "Patterns:", nlp.matcher._patterns
print "Entities:", nlp.matcher._entities
for ent in nlp.matcher._entities:
print ent.label
tokens = nlp(txt)
print "\n\nAfter:"
print "After nlp vocab length", len(nlp.matcher.vocab)
for tok in tokens:
print tok, tok.orth, tok.tag_, tok.ent_type_
Wenn Sie> 1,0 aktiv sind, sollten Sie eine Callback-Funktion für jeden Matcher verwenden und Token manuell zusammenführen. –
Können Sie ein paar weitere Details angeben? – user1430965
Vielen Dank für Ihren Vorschlag, aber könnten Sie ein paar mehr Details zur Verfügung stellen? Wo füge ich den Rückruf hinzu? Was macht der Rückruf? Wie füge ich Token manuell zusammen? Sorry, ich fange gerade an, Spacy zu benutzen. Danke, Herb – user1430965