Ошибка доступа к дереву в semcor.tagged_sents () - PullRequest
0 голосов
/ 19 июня 2020

Я использую модуль semcor.tagged_sents() из NLTK.

nltk.download('semcor')
from nltk.corpus import semcor

Semcor.sents() перебирает все предложения, представленные в виде списков токенов:

print(semcor.sents()[0])
>>> ['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', 'Friday', 'an', 'investigation', 'of', 'Atlanta', "'s", 'recent', 'primary', 'election', 'produced', '``', 'no', 'evidence', "''", 'that', 'any', 'irregularities', 'took', 'place', '.']

И semcor.tagged_sents() перебирает те же предложения с дополнительной аннотацией, включая идентификаторы леммы Wor dNet.

semcor.tagged_sents(tag="sem")[0]
>>> [['The'],
 Tree(Lemma('group.n.01.group'), [Tree('NE', ['Fulton', 'County', 'Grand', 'Jury'])]),
 Tree(Lemma('state.v.01.say'), ['said']),
 Tree(Lemma('friday.n.01.Friday'), ['Friday']),
 ['an'],
 Tree(Lemma('probe.n.01.investigation'), ['investigation']),
 ['of'],
 Tree(Lemma('atlanta.n.01.Atlanta'), ['Atlanta']),
 ["'s"],
 Tree(Lemma('late.s.03.recent'), ['recent']),
 Tree(Lemma('primary.n.01.primary_election'), ['primary', 'election']),
 Tree(Lemma('produce.v.04.produce'), ['produced']),
 ['``'],
 ['no'],
 Tree(Lemma('evidence.n.01.evidence'), ['evidence']),
 ["''"],
 ['that'],
 ['any'],
 Tree(Lemma('abnormality.n.04.irregularity'), ['irregularities']),
 Tree(Lemma('happen.v.01.take_place'), ['took', 'place']),
 ['.']]

Моя цель - создать функцию, которая принимает в качестве входных данных предложение из SemCor и извлекает список, содержащий для каждого токена предложение, либо соответствующая лемма Wor dNet (например, Lemma ('friday.n.01.Friday')) или None.

Теперь я хочу получить доступ ко второму элементу в последнем списке сверху ( Tree(Lemma('group.n.01.group'), [Tree('NE', ['Fulton', 'County', 'Grand', 'Jury'])])). Однако, когда я запускаю:

semcor.tagged_sents(tag="sem")[0][1]

, я получаю следующую ошибку:

---------------------------------------------------------------------------
LookupError                               Traceback (most recent call last)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\nltk\tree.py in _repr_png_(self)
    805                             env_vars=['PATH'],
--> 806                             verbose=False,
    807                         )

~\AppData\Local\Continuum\anaconda3\lib\site-packages\nltk\internals.py in find_binary(name, path_to_bin, env_vars, searchpath, binary_names, url, verbose)
    696         find_binary_iter(
--> 697             name, path_to_bin, env_vars, searchpath, binary_names, url, verbose
    698         )

~\AppData\Local\Continuum\anaconda3\lib\site-packages\nltk\internals.py in find_binary_iter(name, path_to_bin, env_vars, searchpath, binary_names, url, verbose)
    680     for file in find_file_iter(
--> 681         path_to_bin or name, env_vars, searchpath, binary_names, url, verbose
    682     ):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\nltk\internals.py in find_file_iter(filename, env_vars, searchpath, file_names, url, verbose, finding_dir)
    638         div = '=' * 75
--> 639         raise LookupError('\n\n%s\n%s\n%s' % (div, msg, div))
    640 

LookupError: 

===========================================================================
NLTK was unable to find the gs file!
Use software specific configuration paramaters or set the PATH environment variable.
===========================================================================

During handling of the above exception, another exception occurred:

LookupError                               Traceback (most recent call last)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
    343             method = get_real_method(obj, self.print_method)
    344             if method is not None:
--> 345                 return method()
    346             return None
    347         else:

~\AppData\Local\Continuum\anaconda3\lib\site-packages\nltk\tree.py in _repr_png_(self)
    817                                         "https://docs.brew.sh/Installation then `brew install ghostscript`")                
    818                 print(pre_error_message, file=sys.stderr)
--> 819                 raise LookupError
    820 
    821             with open(out_path, 'rb') as sr:

LookupError: 

Tree(Lemma('group.n.01.group'), [Tree('NE', ['Fulton', 'County', 'Grand', 'Jury'])])

Однако вывод все еще остается:

Tree(Lemma('group.n.01.group'), [Tree('NE', ['Fulton', 'County', 'Grand', 'Jury'])])

Что означает этого Lookuperror? И должны ли действовать в соответствии с этим?

1 Ответ

1 голос
/ 19 июня 2020

Моя цель - создать функцию, которая принимает в качестве входных данных предложение из SemCor и извлекает список, содержащий для каждого токена предложения либо соответствующую лемму Wor dNet (например, Lemma ('friday. n.01.Friday ')) или None.

def lemma_list(sent):
    return [l.label() if isinstance(l, nltk.tree.Tree) else None for l in sent]

Пример:

lemma_list(semcor.tagged_sents(tag="sem")[0])
#[None, 'group.n.01', 'say.v.01', 'friday.n.01', None, 'investigation.n.01', None, 'atlanta.n.01', None, 'recent.s.02', 'primary_election.n.01', 'produce.v.04', None, None, 'evidence.n.01', None, None, None, 'irregularity.n.01', 'take_place.v.01', None]


Относительно ошибки и ее значения см. NLTK was не удается найти файл gs .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...