Stanford's coreNLP Name Entity Recogniser throwing error 500 Ошибка сервера: внутренняя ошибка сервера для URL - PullRequest
0 голосов
/ 27 августа 2018

У меня есть набор текстовых файлов.Я использую Stanford coreNLP Name Entity Recogniser для извлечения подробностей строк, где имя пациента упоминается из этих файлов.Когда я запускаю NER в одном предложении, он правильно печатает результаты, но когда я запускаю его на множестве файлов, он печатает результаты вместе с ошибкой, а также я не могу записать результаты в текстовый файл из-заэто:

500 Server Error: Internal Server Error for url: http://localhost:9000/?properties=%7B%22outputFormat%22%3A+%22json%22%2C+%22annotators%22%3A+%22tokenize%2Cssplit%2Cner%22%2C+%22ssplit.isOneSentence%22%3A+%22true%22%7D

Вот код, который я использую:

import re
import os
from nltk.parse import CoreNLPParser
tagger = CoreNLPParser(url='http://localhost:9000', tagtype='ner')

def name_detail_extracter():    

    data_location="D:\Data" # folder containing all the data
    for root, dirs, files in os.walk(data_location):
    for filename in files:
        with open(os.path.join(root, filename), encoding="utf8",mode="r") as f:
            patient_name_check=re.compile(r".*\s+(patient name)\s*:*\s*(.*)",re.I)                
            for line_number, line in enumerate(f, 1):

                patient_name_matches=patient_name_check.findall(line)
                for match in patient_name_matches:

                    name_details=match[1]
                    tokens = name_details.split()
                    result=tagger.tag(tokens)
                    for m in result:
                        print(m)

name_detail_extracter()

1 Ответ

0 голосов
/ 28 августа 2018

Проблема была решена, так как некоторые пустые токены были переданы в NER, поэтому теперь я поставил их на проверку.

for match in patient_name_matches:
    name_details=match[1]
    tokens = name_details.split()
    if tokens: # this is the check which I put
        result=tagger.tag(tokens)
        for m in result:
            print(m)
...