Как получить все уникальные слова из numpy .ndarray? - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть следующий ndarray: X_train: [[<'title'>, <'description'>]]

array([['Boots new', 'Boots 46 size new'], ['iPhone 7 plus 128GB Red',
        '\xa0/\n/\n The price is only for Instagram subscribers'], ...],
      dtype=object)

Я хочу получить список всех уникальных слов. Как я могу сделать это самым быстрым способом? Спасибо за любую возможную помощь.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Я не уверен, что вы заботитесь о словах в названии и описании, так что это берет от обоих, но может быть легко изменено.

Если вы хотите отслеживать уникальные вещи, набор, как правило, является хорошим типом для использования, поскольку он не позволит вам добавить несколько одинаковых элементов.

Этот код создаст набор из уникальные слова во всех заголовках и описаниях. Я добавил список игнорирования, если есть специальные слова, которые вы хотите игнорировать. Это может быть сделано более сложным с регулярными выражениями, если это необходимо.

import numpy as np

arr = np.array([['Boots new', 'Boots 46 size new'], ['iPhone 7 plus 128GB Red',
                '\xa0/\n/\n The price is only for Instagram subscribers']],
                dtype=object)

words = set()
ignore = ["/", "7"]
for title, description in arr:
    words.update(set(word for word in title.strip().split() if word not in ignore))
    words.update(set(word for word in description.strip().split() if word not in ignore))

print(words)

Это печатает

{'price', 'Boots', 'subscribers', 'size', '46', 'Instagram', '128GB', 'new', 'plus', 'iPhone', 'is', 'only', 'for', 'The', 'Red'}
0 голосов
/ 18 апреля 2020

Я использовал ваши примеры в качестве данных. Но этот код будет работать независимо от размеров вашего массива.

data = np.array([['Boots new', 'Boots 46 size new'], 
                 ['iPhone 7 plus 128GB Red','\xa0/\n/\n The price is only for Instagram subscribers']])
split_data = np.char.split(data, sep =' ') 
all_words = np.sum(split_data)
unique_words = np.unique(all_words)

split_data сохраняет слова в списках, поэтому простое суммирование списка даст вам все слова. Позже вы можете использовать функцию np.unique.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...