StanfordCoreNLP Английский upos аннотации - PullRequest
0 голосов
/ 21 мая 2019

Я хочу использовать CoreNLPClient для извлечения анализатора зависимостей с аннотациями uPOS.

Пока мой код:

def query_NLP_server(my_text, to_print=False):
    '''
    Query the NLP server to tokenize and tag my_text, and do some process to return nice my_tokens
    :param my_text (string): The sentence we want to extract the token and the tags
    :param to_print (boolean): Option to print the resulted tokens extracted from NLP server
    :return: my_tokens (list of list of tuples): The tokens with tags extracted from my_text
    '''

    # 1- Ask the query to the NLP Server
    with CoreNLPClient(annotators=['tokenize', 'ssplit', 'pos', 'parse'],
                       timeout=30000,
                       output_format="json",
                       properties={'tokenize.language': 'en'}
                       ) as client:
        ann = client.annotate(my_text)

    # 2- Process the output of the NLP Server to have a nice token list
    output = ann['sentences'][0]['parse']
    tree = ParentedTree.fromstring(output)
    my_tokens = []
    try:
        for subtree in tree.subtrees(filter=lambda t: t[0].parent().label() == 'ROOT'):
            for subtree2 in subtree:
                my_tokens.append(subtree2.pos())
    except:  # when it is finish (the exception happen when it is ok for us)
        if to_print:
            print('The tokens extracted from NLP Server are :\n', my_tokens, '\n')
    return my_tokens

Результат, который я получаю:

[[('I', 'PRP'), ('am', 'VBP'), ('Looking', 'VBG'), ('for', 'IN'), ('children', 'NNS'), ('with', 'IN'), ('gingivitus', 'NN'), ('.', '')]]

Но я бы хотел, чтобы имел upos вместо xpos : кажется возможным с конвейером, как описано здесь: Веб-сайт StanfordNLP

Я уже преуспел с французской моделью с этим кодом:

    with CoreNLPClient(annotators=['tokenize', 'ssplit', 'pos', 'parse'],
                   timeout=30000,
                   output_format="json",
                   properties={'tokenize.language': 'en',
                               'pos.model': 'edu/stanford/nlp/models/pos-tagger/french/french-ud.tagger',
                               'parse.model': 'edu/stanford/nlp/models/lexparser/frenchFactored.ser.gz'}
                   ) as client:
    ann = client.annotate(my_text)

Но я не понимаю, почему «базовая» модель на английском языке не возвращает упо ...
Есть ли способ получить upos с клиентом StanfordCoreNLP на английском языке?

1 Ответ

1 голос
/ 22 мая 2019

В настоящее время мы не обучали тегер части речи для Java Stanford Corenlp для английского языка с этим набором тегов. Я добавлю его в список дел.

...