У меня есть задача маркировать предложения в соответствии с несколькими регулярными выражениями на каждой метке. Я использую RegexpTagger из nltk для хранения регулярных выражений, но он возвращает только одно совпадение для каждого предложения. Есть ли другое решение, чтобы получить несколько предложений и их ярлыков?
import re
from nltk import RegexpTagger, sent_tokenize
regexes= ['[^.]*health*[^.]*', '[^.]*death*[^.]*']
healthRegex = re.compile('|'.join('(?:{0})'.format(x) for x in regexes), re.IGNORECASE)
regexes= ['[^.]*pancake*[^.]*']
PancakeRegex = re.compile('|'.join('(?:{0})'.format(x) for x in regexes), re.IGNORECASE)
patterns = [
(healthRegex, 'health or death'),
(PancakeRegex, 'pancake')]
regexp_tagger = RegexpTagger(patterns)
print (regexp_tagger.tag
(sent_tokenize
("Healthy is important. Pancakes cause death. I don't like pancakes. Pancakes improve health.")))
[(«Здорово важно.», «Здоровье или смерть»), («Блины вызывают смерть.», «Здоровье или смерть» ), («Я не люблю блины.», «Блины»), («Блины улучшают здоровье.», «Здоровье или смерть»)]