2017-06-12 1 views
3

Mein Satz ist: She had another chemotherapy protocol history with 5-FU alone before this protocol without any significant side effects.spacig und displacy gibt unterschiedliche

Als ich dieses in displacy (https://demos.explosion.ai/displacy/), enthält die Ausgabe einen Verweis auf 5-FU als Nominalphrase.

enter image description here

Allerdings, wenn ich den Text und die Suche nach Substantiv Chunks annotieren, ich bin nicht 5-FU als Substantiv Brocken gezeigt.

nlp = spacy.load('en') ax = nlp(mySentence) for w in ax.noun_chunks: print(w)

bearbeiten Außerdem, wenn ich für die Tags mit dem folgenden Code zu suchen Ich bin 5-FU als NN gezeigt. Wenn Spacys Annotation dieses Singletonwort als Substantiv umgeben von Präpositionen versteht, warum sollte das Wort nicht als Nominalphrase aufgenommen werden? Ende bearbeiten

Meine spacigen Version: enter image description here

Was mache ich falsch? Gibt es einen Versionsunterschied zwischen displaCy und der Version, die ich verwende? Gibt es ein SpaCy-Hilfsteam, um dieses Problem zu lösen?

Vielen Dank!

Antwort

2

Displacement führt eine Vorverarbeitung durch, während der Parse-Baum angezeigt wird. Hier ist ein Link auf den Parsing-Dienst (gebaut auf spacigen), die von displacy: https://github.com/explosion/spacy-services/blob/master/displacy/displacy_service/parse.py#L25

if collapse_phrases: 
    for np in list(self.doc.noun_chunks): 
     np.merge(np.root.tag_, np.root.lemma_, np.root.ent_type_) 

Spacy merges das Substantiv Brocken im Satz, anstatt sich als separate Token zu behandeln, das ist, warum die Ausgabe unterscheidet. Der andere Unterschied wäre models, den Sie verwenden. Sie verwenden möglicherweise das kleinste en_core_web_sm, während Spacy das größere en_core_web_md verwendet (obwohl es nirgendwo offiziell erwähnt wird)

+0

Dank. Die Info über Modelle ist neu! In meiner Version von Spacy bekomme ich jedoch 5-FU als NN, während es immer noch nicht als Nomenbrocken erscheint. Ich aktualisiere meine ursprüngliche Frage. – mejobhoot

0

Ich versuche das gleiche Problem zu lösen. DisplayCy- und SpaCy-Ausgaben sind unterschiedlich (sowohl POS-Tags als auch Beziehungen zwischen Wörtern).

Es sieht nicht so aus, als wäre das Verschmelzen vor der Verarbeitung schuld, da Sie das in DisplayCy deaktivieren können - Einstellungen> Ausblenden von Phrasen - für mich stimmt die Ausgabe immer noch nicht überein.

Es ist möglich, dass Sie benötigen Modell verwenden en_core_web_md (nicht en_core_web_sm):

python -m spacy download en_core_web_md 

Allerdings habe ich das noch nicht getestet.

+0

Also ... hier ist das Ergebnis meiner bisherigen Forschung. Das Modell en_core_web_md ist viel größer und ist definitiv eine Kerbe genauer als das Standardmodell en_core_web_sm. Es ist jedoch nicht perfekt (sozusagen ist keiner sozusagen). DisplayCy verwendet jedoch ein ganz anderes Modell (zumindest auf der Anzeige oben rechts auf der Website von DisplaCy, wo Sie ein Modell wählen dürfen: Modell 0.101.0 (Englisch). Dieses Modell wurde Anfang 2016 veröffentlicht Um dieses Modell zu benutzen, muss man es aus dem Quellcode bauen (was ich noch nicht gefunden habe) – mejobhoot

+0

Also im Grunde - ich fand das 'md' Modell gut genug und lernte damit zu leben. – mejobhoot

0

Weil sie auf V2.0 aktualisiert Ich konfrontiert das ähnliche Problem.Ich bin dann zu V2.0 Um ein Modell zu installieren, müssen Sie es herunterladen mit seinem vollständigen Namen, mit dem --direct Flag:

python -m spacy download en_core_web_sm-2.0.0-alpha --direct # English 
python -m spacy download xx_ent_wiki_sm-2.0.0-alpha --direct # Multi-language NER 

Sie können durch Aufruf spacy des Laders ein Modell laden. z.B. nlp = spacy.load('en_core_web_sm'), oder importieren Sie es als ein Modul (import en_core_web_sm) und rufen Sie seine load() - Methode, z. B. nlp = en_core_web_sm.load().

Folgen Sie der Dokumentation bei https://github.com/explosion/spaCy/releases/tag/v2.0.0-alpha

Verwandte Themen