2017-08-21 1 views
0

J'ai la phrase:Stanford Corenlp: Regexner écrase de façon inattendue entités NER

5th-6th Grade Teacher, Mount Pilot Elementary School

RegExner contenu du fichier de mapping:

Pilot TITLE

annotateurs:

tokenize,ssplit,pos,lemma,depparse,ner,regexner

Tout fonctionne très bien avec une telle configuration, je reçois l'expression « école primaire Mont Pilot » étiqueté comme organisation et dans le corenlp log j'ai un message:

Not annotating 'Pilot': ORGANIZATION with [TITLE], sentence is '5th-6th Grade Teacher , Mount Pilot Elementary School'

Donc, ce comportement est OK et attendu.

Cependant, une fois que j'ajouter la ligne follwing au fichier de mappage:

Labor ORGANIZATION

retourne CoreNLP ces balises pour la même santence:

Mount/ORGANIZATION Pilot/TITLE Elementary School/ORGANIZATION

ORGANISATION "Pilot" get écrasent les par "Pilot" TITLE du fichier de mapping.

Est-il possible d'éviter ce comportement? Je voulais juste marquer "Labor" comme une ORGANISATION, je ne voulais pas forcer CoreNLP à remplacer les tags NER par RegexNER. À mon avis, il est un peu inattendu, mais peut-être cela est une sorte d'une caractéristique d'un bug

Répondre

0

Votre règle doit être dans ce format:

Pilot TITLE MISC 1 

Ensuite, il ne remplacent pas les autres types d'étiquettes.

+0

il semble que ce n'a pas aidé, maintenant mon fichier de mappage est: Pilot TITRE MISC 1 Travail ORGANISATION je lance la commande: java -cp "*" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize, ssplit, pos, lemme, Ner, regexner -regexner.mapping /data/regexner/regexner.txt -file input.txt input.txt contient l'expression de la question Et la sortie pour "Pilot" est toujours: [Texte = Pilot CharacterOffsetBegin = 29 CharacterOffsetEnd = 34 PartOfSpeech = NN Lemme = pilote NamedEntityTag = TITRE] – calibr

+0

par le chemin, je ru n la dernière version CoreNLP de la branche principale – calibr

+0

Pendant regardant à travers le code TokenRegexNERAnnotator j'ai découvert que le remplacement est forcé par cette condition https://github.com/stanfordnlp/CoreNLP/blob/d558d95d80b36b5b45bc21882cbc0ef7452eda24/src/edu/stanford/nlp /pipeline/TokensRegexNERAnnotator.java#L510-L512, j'ai donc ajouté l'option de configuration "-regexner.noDefaultOverwriteLabels TITLE" et tout a commencé à fonctionner comme prévu. Merci pour votre aide @StanfordNLPHelp! Pourriez-vous mettre à jour votre réponse pour noter l'option "noDefaultOverwriteLabels", afin que je puisse marquer votre réponse comme la solution? – calibr