Я хочу удалить все специальные символы (в том числе один алфавит в нижнем регистре) для входного файла, кроме слов с символами подчеркивания (_) и дефиса (-) (пример добавлен), используя с или без регулярное выражение для неоткрытого список (список списков)?
Существует ли способ?
import re
from nltk import word_tokenize
from nltk.corpus import stopwords
data = {'fresh air', 'entertainment system', 'ice cream', 'blood pressure', 'body temperature', 'car', 'ac', 'air quality'}
data = {i: i.replace(" ", "_") for i in data}
pattern = re.compile(r"\b("+"|".join(data)+r")\b")
text_file = ['https://stackoverflow.com/questions', 'www.google.com/the pda', 'Z\'s is (vitamin-d) in (milk) 5 ml "enough", carrying? 321 active automatic body hi+al blood pressure.', 'body temperature [try] to improve air quality level by automatic intake of fresh air.', 'blood pressure monitor', 'I buy more ice cream', 'proper method to add frozen wild blueberries in ice cream']
sw0 = (stopwords.words('english'))
sw1 = ["i", "hi"]
sw=sw0+sw1
result = [pattern.sub(lambda x: "{}".format(data[x.group()]), i) for i in text_file]
tokens = [[word.lower() for word in word_tokenize(word)] for word in result]
filtered_tokens = [[token for token in sentence if (token not in sw)] for sentence in tokens]
print(filtered_tokens)
Ввод отображается в текстовом файле в коде.
Я хочу, чтобы вывод отображал только слова (сохраняя некоторые слова с подчеркиванием между ними, такие как body_temperam, blood_pressure, air_quality и т. Д.).
Я попытался и завершил работу, используя regexp_tokenize
с regex pattern
и установкой gaps = True
. Я хочу добиться того же, используя nltk word_tokenize
. Любая помощь приветствуется.
Ожидаемый результат:
[['pda'], ['vitamin-d', 'milk', 'ml', 'enough', 'carrying', 'active', 'automatic', 'body', 'blood_pressure'], ['body_temperature', 'try', 'improve', 'air_quality', 'level', 'automatic', 'intake', 'fresh_air'], ['blood_pressure', 'monitor'], ['buy', 'ice-cream'], ['proper', 'method', 'add', 'frozen', 'wild', 'blueberries', 'ice_cream']]