Получить наборы из списка токенов и постов без использования циклов for - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь получить первый набор синтаксиса для каждого токена / позиции в списке, используя 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: Язык не поддерживается."

Любая помощь по этому вопросу будет принята с благодарностью!Спасибо.

...