Как просмотреть соответствие ключевого слова в текстовом анализе - PullRequest
0 голосов
/ 26 августа 2018

Я определил функцию для поиска слов в длинном текстовом файле, а затем печатает (ширину) символы слева и справа от этого ключевого слова:

параметры:

reviews = список слов, сегментированных ранее

word = ключевое слово, которое мы ищем

width = количество символов слева и справа для поиска.

def view_concordance(reviews, word, width):
    stringtext = ' '.join(reviews)
    charindex = 0
    while word in stringtext[charindex + len(word) + 1:]:
        charindex = stringtext.find(word, charindex + len(word) + 1)
        first = charindex - width
        last = charindex + len(word) + width + 1
        print(stringtext[first:last])
    return 'The End'

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

IsЕсть ли способ искать только «конец», в частности, без импорта регулярных выражений или чего-то еще?

1 Ответ

0 голосов
/ 26 августа 2018

Вы можете искать слово w в строке s, определяя возможные / полезные границы слова b, а также проверять их.Например:

w = 'end'
b = ' .:!?'
s = 'endurance tends to be more important towards the end.'

i = 0
while w in s[i:]:
    i += s[i:].index(w)
    lb = i - 1 < 0 or s[i - 1] in b  # Left boundary.
    rb = i + len(w) >= len(s) or s[i + len(w)] in b  # Right boundary.
    if lb and rb:
        print('Found {} @ {} in "{}"'.format(w, i, s))
    i += len(w)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...