Как исключить все комбинации строчных букв (a-z) с помощью RegExpTokenizer? - PullRequest
1 голос
/ 11 июня 2019

Мне нужно удалить все строчные буквенные комбинации, используя параметр pattern, равный regexptokenizer. Есть ли способ?

То, что я пробовал, выглядит следующим образом:

import re
from nltk import regexp_tokenize
data = {'fresh air', 'entertainment system', 'ice cream', 'milk', 'dog', 'blood pressure', 'body temperature', 'car', 'ac', 'auto', 'air quality'}
data = {i: i.replace(" ", "_") for i in data}
pattern = re.compile(r"\b("+"|".join(data)+r")\b")
text_file = ['A is\'s vitamin-d in===(milk) "enough, carrying 321 active automatic body hi+al.', '{body temperature} [try] to=== improve air"s quality level by automatic intake of fresh air.', 'turn on the tv or entertainment system based on that individual preferences', 'blood pressure monitor', 'I buy more ice cream', 'proper method to add frozen wild blueberries in ice cream']
result = [pattern.sub(lambda x: "{}".format(data[x.group()]), i) for i in text_file]
tokens = [[word for word in regexp_tokenize(word, pattern=r"\s|[0-9!()\-+\$%;,.:@'\"/={}\[\]\']", gaps=True)] for word in result]  
print(tokens)

Примечание: мне нужен вывод, сохраняющий свою текущую форму. Все, что мне нужно, это только исключить строчные буквы. Заранее спасибо.

Добавление [^a-z] совсем не работает для меня, и в некоторых словах пропущен символ подчеркивания, который я не могу позволить себе потерять.

1 Ответ

1 голос
/ 11 июня 2019

Попробуйте этот шаблон:

pattern=r"\s|[0-9!()\-+\$%;,.:@'\"/={}\[\]\'].|[^\w a-z]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...