Я использую модуль 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? И должны ли действовать в соответствии с этим?