Поиск текста из пакета слов в питоне - PullRequest
0 голосов
/ 17 октября 2019

Допустим, у меня есть сумка с ключевыми словами. Пример:

['profit low', 'loss increased', 'profit lowered']

У меня есть документ в формате PDF, и я анализирую весь текст из этого, теперь я хочу получить предложения, которые соответствуют сумме слов.

Позволяет сказать, что одно предложение:

'The profit in the month of November lowered from 5% to 3%.'

Это должно совпадать, как в сумке слов 'profit lowered' соответствует этому предложению.

Какой будет наилучший подход для решения этой проблемы в python?

Ответы [ 3 ]

0 голосов
/ 17 октября 2019
# input
checking_words = ['profit low', 'loss increased', 'profit lowered']
checking_string = 'The profit in the month of November lowered from 5% to 3%.'

trans_check_words = checking_string.split()
# output
for word_bug in [st.split() for st in checking_words]:
    if word_bug[0] in trans_check_words and word_bug[1] in trans_check_words:
        print(word_bug)
0 голосов
/ 17 октября 2019

вы можете попробовать что-то вроде следующего:

преобразовать пакет слов в предложение:

bag_of_words = ['profit low', 'loss increased', 'profit lowered']    
bag_of_word_sent =  ' '.join(bag_of_words)

затем со списком предложений:

list_sents = ['The profit in the month of November lowered from 5% to 3%.']

используйте расстояние Левенштейна:

import distance
for sent in list_sents:
    dist = distance.levenshtein(bag_of_word_sent, sent)
    if dist > len(bag_of_word_sent):
        # do something
        print(dist)
0 голосов
/ 17 октября 2019

Вы хотите проверить все элементы списка Check Words , если он находится внутри длинного предложения

sentence = 'The profit in the month of November lowered from 5% to 3%.'

words = ['profit','month','5%']

for element in words:
    if element in sentence:
        #do something with it
        print(element)

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

sentence = 'The profit in the month of November lowered from 5% to 3%.'

words = ['profit','month','5%']

matched_words = [] # Will collect the matched words in the next life loop:

[matched_words.append(word) for word in words if word in sentence]

print(matched_words)

Если у вас есть «интервальные» слова в каждом элементе вашего списка, вы хотите позаботиться об этом, используя split () Метод.

sentence = 'The profit in the month of November lowered from 5% to 3%.'

words = ['profit low','month high','5% 3%']

single_words = []
for w in words:
    for s in range(len(w.split(' '))):
        single_words.append(w.split(' ')[s])

matched_words = [] # Will collect the matched words in the next life loop:
[matched_words.append(word) for word in single_words if word in sentence]

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