Последний шаг для завершения поисковой системы в Python (панды) - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть словарь, в котором в основном хранятся все слова, представленные в большом кадре данных (много строк и 12 столбцов), словарь выглядит так:

    vocabulary = {'hello':[3,1998,876,3888], 'beautiful':[677, 4, 56],......}

Где значения - строкиdataFrame, в котором присутствует слово.

Что я хочу сделать, это взять строку (запрос) в качестве ввода,

    query = 'a beautiful house with big windows'

вернуть определенные столбцы (давайте назовем их A, B, C, D) кадра данных только из строк, которые содержат все слова входного предложения.Я уже предварительно обработал данные (stemming, stopwords, удалить знаки препинания ...) для словаря и для входного запроса.Кто-нибудь может мне помочь?Спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

Если я правильно понимаю, вы хотите проверить каждое слово в предложении query, найти, в каких строках эти слова появляются (из vocabulary dict), и вернуть строки, общие для all слова в запросе.Если это так, то это одно из решений (я упростил ваш пример):

vocabulary = {'hello':[3,1998,876,3888], 'beautiful':[677, 4, 56, 3, 876]}
query = 'hello beautiful'
words = set(query.split())
rows = [vocabulary[w] for w in words]
common_rows = rows[0]
for r in rows[1:]:
    common_rows = list(set(common_rows) & set(r))
print(common_rows)

[3, 876]

Чтобы выбрать строки в кадре данных, выпросто нужно сделать:

df.loc[common_rows, ["A", "B", "C", "D"]]

...