Точечная операция со списком строк - PullRequest
1 голос
/ 07 мая 2020

Я хочу проделать точечную операцию со списком строк. Список содержит слова (существительные) и может выглядеть так:

lst_words = ['car', 'vehicle', 'boat', 'ship']

Теперь я хочу проделать точечную операцию с этим списком и получить матрицу с результатами. Размер матрицы зависит от размера списка ввода. (В данном случае значения 4x4) Операция основана на функции, которая сравнивает слова на предмет сходства и возвращает число с плавающей запятой.

Функция выглядит так:

import nltk 
from nltk.corpus import wordnet 
# Compare words:
def get_synset(word_01, word_02):
    w1 = wordnet.synset(word_01 + '.n.01')
    w2 = wordnet.synset(word_02 + '.n.01') 
    return w1.wup_similarity(w2)

Я не смог чтобы найти решение в Google, но, возможно, кто-то может помочь мне решить эту проблему, поскольку я не знаю, что это называется тем, что я ищу.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Вы можете использовать numpy.fromfunction, единственное изменение, которое вам нужно сделать, это изменить вашу функцию для работы с указателями слов вместо самих слов:

WORDS = ["your", "list", "of", "words"]

def get_synset_by_index(i1, i2):
    return get_synset(WORDS[i1], WORDS[i2])

matrix = numpy.fromfunction(get_synset_by_index, (len(WORDS), len(WORDS))
0 голосов
/ 07 мая 2020

Возможно, я неправильно понимаю проблему, но почему бы и нет

np.array([[get_synset(x, y) for x in list_words] for y in list_words])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...