Огромный недостаток движка Stanford NER заключается в том, что он не объединяет названия одной сущности.Какой может быть подход к этому - PullRequest
0 голосов
/ 22 марта 2019

Это код, который я написал для пометки:

sn = StanfordNERTagger("/home/ikscare/Documents/Projects/Mousam/stanford-ner-2014-08-27/classifiers/english.all.3class.distsim.crf.ser.gz",
                       path_to_jar="/home/ikscare/Documents/Projects/Mousam/stanford-ner-2014-08-27/stanford-ner.jar")
sentences=document.split('\n')
ner_tagged_sentences = [sn.tag(sent.split()) for sent in sentences]
# extract all named entities
named_entities = []
for sentence in ner_tagged_sentences:
    temp_entity_name = ''
    temp_named_entity = None
    for term, tag in sentence:
        if tag != 'O':
            temp_entity_name = ' '.join([temp_entity_name, term]).strip()
            temp_named_entity = (temp_entity_name, tag)
        else:
            if temp_named_entity:
                named_entities.append(temp_named_entity)
                temp_entity_name = ''
                temp_named_entity = None

И сущности, которые у меня есть:

{('Anna', 'PERSON'), ('Liz', 'PERSON')}

Теперь, что я могу сделать, чтобы объединить их в одну сущность, и это нужно сделать для каждой сущности и очень точно, потому что может быть условие, когда несколько имен могут встречаться рядом в одной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...