2017-07-28 3 views
0

Ich benutze mehrere NER-Tools, um die Named Entities in einem Korpus zu extrahieren und ich möchte ihre Genauigkeit mit dem NLTK Python-Modul testen.Wie berechnet man die Genauigkeit des NER-Systems?

Einige der Werkzeuge, die ich verwendet habe, sind:

Um das zu erhalten, System Genauigkeit, NLTK accuracy Funktion nimmt zwei Argumente: das korrekt annotierte Dataset (enthält alle Token im Korpus zusammen mit ihrer Klassifikation (PERSON, LOCATION, ORGANIZATION oder 'O' [was bedeutet, dass das Token keine benannte Entität ist]) und die Ausgabe des NER-System.

Dies ist in Ordnung, wenn der NER eine Liste aller Token mit ihrer Klassifizierung zurückgibt. Einige Tools wie MeaningCloud geben jedoch nur die Klassifizierung für die benannten Entitäten zurück, die im Korpus erkannt werden. Dies macht die Genauigkeit unmöglich zu erhalten (um es zu erhalten, sollte die vollständige Liste der Wörter für den Vergleich zwischen beiden Anmerkungen zurückgegeben werden, um machbar zu sein).

Was ist der Ansatz hier dann? Was kann ich tun, um in solchen Fällen die Genauigkeit zu erhalten?

Antwort

0

Sie sollten eine Liste von Tags für alle Token erstellen, für die der Standardwert 'O' ist.

Wenn Sie MeaningCloud betrachten, sieht es so aus, als ob variant_list die Positionen in der ursprünglichen Zeichenfolge enthält, in der das Token gefunden wurde, damit Sie Labels zu Tokens zuordnen können.

Einige Pseudo-Code:

def get_label(token, meaningcloud_data): 
    variants = ...[get from meaningcloud_data somehow]... 
    for variant in variant: 
     if token.start_char >= variant.inip and token.end_char <= variant.endp: 
      return variant.label 
    return False 

meaningcloud = get_meaningcloud_data(text) 
labels = [] 
for token in tokens: 
    # default to 'O' 
    labels.push(get_label(token, meaningcloud) or 'O') 

Beachten Sie, dass die Standard-tokenizer in NLTK - word_tokenize - nicht Token Positionen nicht speichern, so dass Sie nicht das Originaldokument rekonstruieren können, wenn Sie absolut sicher, dass der Abstand Konventionen sind . Das heißt NLTK verfügt über Mittel zum Tokenisieren und Erhalten von Positionen, siehe here für einige Details.

Verwandte Themen