Я хочу преобразовать этот код, чтобы он работал с полными предложениями - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь проверить, встречается ли ключевое слово в предложении, а затем добавить упомянутое ключевое слово. Мне удалось написать это решение, но оно работает только в том случае, если поисковый термин - это одно слово (упомянутое ключевое слово). Как улучшить его работу, когда ключевое слово встречается в предложении? Вот мой код:

keyword = []
for i in keywords['keyword']:
    keyword.append(i) #this was in a dataframe after readin xlsx file with Pandas so I made it a list

hit = []
for i in phrase['Search term']:
    if i in keyword:
        hit.append(i)
    else:
        hit.append("blank")

phrase['Keyword'] = hit 

Это работает только тогда, когда в фразе "кошка" встречается одно ключевое слово, но не работает, если слово "кошка" является частью предложения. Любые указатели, чтобы улучшить это? Спасибо всем заранее

1 Ответ

0 голосов
/ 28 октября 2019

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

В своем комментарии вы сказали, что keyword - это список слов, а phrase['Search term'] - это список предложений.

for i in phrase['Search term']:
    if i in keyword:
        hit.append(i)
    ...

В этой части кода вы проверяете, можно ли найти полное предложение i в любое из отдельных слов в keyword. Эта логика ошибочна, вам нужно проверить, существует ли слово в предложении, а не наоборот.

Примерно так:

for i in phrase['Search term']:
    for j in keyword:
        if j in i:
            hit.append(i)
        ...

Это пример , вам нужно будет приспособиться к своей цели, так как теперь он будет проверять слово в слово.

Приведенный выше код может привести к нежелательному поведению, поскольку он проверяет, существует ли меньшая строка (слово) внутри большей строки (предложения). Это на самом деле не проверить слова. Например, если вы ищете cat в предложении вроде:

этот пациент cat atonic

Запустит вашоператор if как True. Чтобы свести к минимуму это, разделите ваше предложение в списке слов и проверьте, найдено ли слово в списке. Как это:

for i in phrase['Search term']:
    for j in keyword:
        if j in i.split(" "):
            hit.append(i)
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...