Я пытаюсь получить первый набор синтаксиса для каждого токена / позиции в списке, используя wn.synsets
Я не хочу использовать циклы, как если бы мой код был:
import numpy as np
import nltk
from nltk.corpus import wordnet as wn
pairs = [('This', None), ('is', 'v'), ('a', None), ('phrase', 'n')]
synsets = []
for pair in pairs:
if len(wn.synsets(*pair)) > 0:
synsets = synsets + [wn.synsets(*pair)[0]]
else:
synsets = synsets + [None]
Out: [None, Synset('be.v.01'), Synset('angstrom.n.01'), Synset('phrase.n.01')]
Вместо этого я хочу найти решение, которое не реализует цикл for (для скорости).Я думал, что должен быть лучший способ, используя numpy или pandas.
Моя попытка может быть глупой, но я пробовал это:
def synsets(x):
if len(wn.synsets(*x)) > 0:
synset = wn.synsets(*x)[0]
else:
synset = None
return synset
vec_synsets = np.vectorize(synsets)
vec_synsets(pairs)
Я получаю следующую ошибку:
"WordNetError: Язык не поддерживается."
Любая помощь по этому вопросу будет принята с благодарностью!Спасибо.