Я готовлю строки, содержащие заголовки документов, для использования в качестве поисковых терминов на веб-сайте патента США с использованием Python 3.
1) Полезно хранить длинные фразы, но
2) поиск не дает результатов, если он содержит много слов длиной не более 3 символов, поэтому мне нужно их исключить.
Я пытался использовать регулярное выражение "\ b \ w [1: 3} \ b *", чтобы разделить одно-трехбуквенные слова с пробелом или без него, но безуспешно. Но тогда я не эксперт по регулярным выражениям.
for pubtitle in df_tpdownloads['PublicationTitleSplit']:
pubtitle = pubtitle.lower() # make lower case
pubtitle = re.split("[?:.,;\"\'\-()]+", pubtitle) # tokenize and remove punctuation
#print(pubtitle)
for subArray in pubtitle:
print(subArray)
subArray = subArray.strip()
subArray = re.split("(\b\w{1:3}\b) *", subArray) # split on words that are < 4 letters
print(subArray)
Приведенный выше код проходит серию панд и очищает знаки препинания, но не разбивает по длине слова.
Я ожидаю увидеть что-то похожее на примеры ниже.
Примеры:
Итак,
" and training requirements for selected salt applications"```
становится
['training requirements', 'selected salt applications']
.
И
"december 31"
становится
['december']
.
И
"experimental system for salt in an emergence research and applications in process heat"
становится
['experimental system', 'salt', 'emergence research', 'applications', 'process heat']
.
Но разделение не охватывает мелкие слова, и я не могу сказать, является ли проблема регулярным выражением, командой re.split или обоими.
Я, вероятно, могу использовать метод грубой силы, но хотел бы элегантного решения.
Любая помощь будет оценена.