Как я могу обнаружить несколько ключевых слов в строке Python? - PullRequest
0 голосов
/ 15 ноября 2018

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

Пользовательский ввод: Это хороший день Я иду на пробежку .

Список 1: Ключевые слова: добрый день, великий день, удивительный день, лучший день. Список 2: Ключевые слова: бег, плавание, игра.

Но для огромной базы данных слов это может быть связано только со списками? Или это должны быть конкретные слова?

Также вы бы порекомендовали Python для огромной базы данных ключевых слов?

1 Ответ

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

Первое, что нужно сделать, это разбить входную строку на токены. Токен - это просто часть строки, которую вы хотите сопоставить. В вашем случае, похоже, что размер вашего токена составляет 2 слова (но это не обязательно). Вы также можете удалить все знаки препинания из входной строки.

Тогда для вашего ввода ваши токены [«Это», «это», «хороший», «хороший день», «первый день», «я есть», «я иду», «иду», «за», «за» , "пробежка"]

Затем вы можете перебрать токены и проверить, содержатся ли они в каждом из списков. Может выглядеть так:

input = 'This is a good day I am heading out for a jog'
words = input.split(' ')
tokens = [' '.join(words[i:i+2]) for i in range(len(words) - 1)]
for token in tokens:
  if token in list1:
    print('{} is in list1'.format(token))
  if token in list2:
    print('{} is in list2'.format(token))

Одна вещь, которую вы, вероятно, захотите сделать для оптимизации, - это использовать set s для list1 и list2 вместо списков.

set1 = set(list1)

set s предлагают O (1) поисков, в отличие от O (n) для списков, что очень важно, если ваши списки ключевых слов большие.

...