Python - текстовый анализ - поиск фраз вместо простых слов (токенов) - PullRequest
1 голос
/ 20 марта 2020

У меня есть документ в python, который я читаю следующим образом:

tokens = re.findall('\w+', doc)  # Note that \w+ splits hyphenated words
for token in tokens:

Проблема в том, что я могу искать простые слова (например, «бананы», но не фразы) например, "желтые бананы"). Как мне изменить свой код, чтобы иметь возможность искать фразы поверх простых слов?

Похоже, мне почему-то нужно читать весь файл как строку, а не разбивать его на слова по словам?

1 Ответ

1 голос
/ 20 марта 2020

Вы, кажется, хотите получить слова и затем соединить их с пробелом, поскольку ваши "фразы" кажутся словами, разделенными пробелом. Используйте

text = ''
with open(path, 'r') as fr:
    text = fr.read()
clean_text = " ".join(re.findall(r'\w+(?:-\w+)*', text)) 

Затем вы можете просто использовать .find().

Шаблон \w+(?:-\w+)* извлекает как дефисные, так и не дефисные слова:

  • \w+ - одна или несколько букв, цифр, _ s
  • (?:-\w+)* - 0 или более повторений
    • - - дефис
  • \w+ - одна или несколько букв, цифр, _ с.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...